DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00201_AAD_S_000005_BC_PKG

Source


1 PACKAGE BODY XLA_00201_AAD_S_000005_BC_PKG AS
2 --
3 /*======================================================================+
4 |                Copyright (c) 1997 Oracle Corporation                  |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | Package Name                                                          |
9 |     XLA_00201_AAD_S_000005_BC_PKG                                     |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Purchasing Encumbrance Application Accounting Definitio|
14 |      Code    : PURCHASING_ENC_AAD                                     |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 06-11-2008 at 02:11:58 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_00201_AAD_S_000005_BC_PKG';
82 
83 C_CHAR                CONSTANT       VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM                 CONSTANT       NUMBER       := 9.99E125;                 -- 4219869 Business flow
85 
86 g_log_level           NUMBER;
87 g_log_enabled         BOOLEAN;
88 
89 PROCEDURE trace
90            (p_msg                        IN VARCHAR2
91            ,p_level                      IN NUMBER
92            ,p_module                     IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98           fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100           fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102 
103 EXCEPTION
104        WHEN xla_exceptions_pkg.application_exception THEN
105           RAISE;
106        WHEN OTHERS THEN
107           xla_exceptions_pkg.raise_message
108              (p_location   => 'XLA_00201_AAD_S_000005_BC_PKG.trace');
109 END trace;
110 
111 --
112 --+============================================+
113 --|                                            |
114 --|  PRIVATE  PROCEDURES/FUNCTIONS             |
115 --|                                            |
116 --+============================================+
117 --
118 
119 --
120 /*======================================================================+
121 |                                                                       |
122 | Private Function                                                      |
123 |    ValidateLookupMeaning                                              |
124 |                                                                       |
125 +======================================================================*/
126 FUNCTION ValidateLookupMeaning(
127   p_meaning                IN VARCHAR2
128 , p_lookup_code            IN VARCHAR2
129 , p_lookup_type            IN VARCHAR2
130 , p_source_code            IN VARCHAR2
131 , p_source_type_code       IN VARCHAR2
132 , p_source_application_id  IN INTEGER
133 )
134 RETURN VARCHAR2
135 IS
136 l_log_module         VARCHAR2(240);
137 BEGIN
138 IF g_log_enabled THEN
139       l_log_module := C_DEFAULT_MODULE||'.ValidateLookupMeaning';
140 END IF;
141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142       trace
143          (p_msg      => 'BEGIN of ValidateLookupMeaning'
144          ,p_level    => C_LEVEL_PROCEDURE
145          ,p_module   => l_log_module);
146 END IF;
147 --
148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149     trace
150          (p_msg      => 'p_source_code = '|| p_source_code||
151                         ' - p_source_type_code = '|| p_source_type_code||
152                         ' - p_source_application_id = '|| p_source_application_id||
153                         ' - p_lookup_code = '|| p_lookup_code||
154                         ' - p_lookup_type = '|| p_lookup_type||
155                         ' - p_meaning = '|| p_meaning
156          ,p_level    => C_LEVEL_PROCEDURE
157          ,p_module   => l_log_module);
158 
159 END IF;
160 
161 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
162    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163    xla_accounting_err_pkg. build_message
164                (p_appli_s_name            => 'XLA'
165                ,p_msg_name                => 'XLA_AP_NO_LOOKUP_MEANING'
166                ,p_token_1                 => 'SOURCE_NAME'
167                ,p_value_1                 =>  xla_ae_sources_pkg.GetSourceName(
168                                                            p_source_code
169                                                          , p_source_type_code
170                                                          , p_source_application_id
171                                                          )
172                ,p_token_2                 => 'LOOKUP_CODE'
173                ,p_value_2                 =>  p_lookup_code
174                ,p_token_3                 => 'LOOKUP_TYPE'
175                ,p_value_3                 =>  p_lookup_type
176                ,p_token_4                 => 'PRODUCT_NAME'
177                ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178                ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179                ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180                ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
181        );
182 
183    IF (C_LEVEL_ERROR >= g_log_level) THEN
184            trace
185                 (p_msg      => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
186                 ,p_level    => C_LEVEL_ERROR
187                 ,p_module   => l_log_module);
188    END IF;
189 END IF;
190 
191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192         trace
193           (p_msg      => 'END of ValidateLookupMeaning'
194           ,p_level    => C_LEVEL_PROCEDURE
195           ,p_module   => l_log_module);
196 END IF;
197 RETURN p_meaning;
198 EXCEPTION
199 WHEN xla_exceptions_pkg.application_exception THEN
200   RETURN p_meaning;
201 WHEN OTHERS  THEN
202    xla_exceptions_pkg.raise_message
203            (p_location => 'XLA_00201_AAD_S_000005_BC_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 1011404 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(1011404) AND
267        l_array_meaning(1011404).array_flex_value.EXISTS(l_Idx) AND
268        l_array_meaning(1011404).array_flex_value(l_Idx)   = p_flex_value        THEN
269 
270        l_meaning_meaning    := l_array_meaning(1011404).array_meaning(l_Idx);
271 
272     ELSE
273 
274      SELECT NAME
275      INTO   l_meaning_meaning
276      FROM   HR_ALL_ORGANIZATION_UNITS_VL
277      WHERE  ORGANIZATION_ID = p_flex_value
278      ;
279 
280      l_array_meaning(1011404).array_flex_value(l_Idx)       := p_flex_value;
281      l_array_meaning(1011404).array_meaning(l_Idx)          := l_meaning_meaning;
282 
283     END IF;
284 
285  ELSE
286          l_meaning_meaning  := NULL;
287          xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
288          xla_accounting_err_pkg.build_message
289                         (p_appli_s_name            => 'XLA'
290                         ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
291                         ,p_token_1                 => 'VALUE_SET_NAME'
292                         ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
293                         ,p_token_2                 => 'FLEX_VALUE'
294                         ,p_value_2                 =>  p_flex_value
295                         ,p_token_3                 => 'SOURCE_NAME'
296                         ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
297                                                      p_source_code
298                                                    , p_source_type_code
299                                                    , p_source_application_id
300                                                      )
301                         ,p_token_4                 => 'PRODUCT_NAME'
302                         ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
303                         ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
304                         ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
305                         ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
306         );
307       IF (C_LEVEL_ERROR >= g_log_level) THEN
308                          trace
309                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
310                             ,p_level    => C_LEVEL_ERROR
311                             ,p_module   => l_log_module);
312      END IF;
313  END CASE;
314 --
315 END IF;
316 --
317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
318 
319       trace
320          (p_msg      => 'return value. meaning = '||l_meaning_meaning
321          ,p_level    => C_LEVEL_PROCEDURE
322          ,p_module   => l_log_module);
323 
324       trace
325          (p_msg      => 'END of GetMeaning'
326          ,p_level    => C_LEVEL_PROCEDURE
327          ,p_module   => l_log_module);
328 END IF;
329 --
330 xla_ae_sources_pkg.g_array_meaning := l_array_meaning ;
331 --
332 RETURN l_meaning_meaning ;
333 --
334 EXCEPTION
335 WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
336  --
337       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
338       xla_accounting_err_pkg.build_message
339                 (p_appli_s_name            => 'XLA'
340                 ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
341                 ,p_token_1                 => 'VALUE_SET_NAME'
342                 ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
343                 ,p_token_2                 => 'FLEX_VALUE'
344                 ,p_value_2                 =>  p_flex_value
345                 ,p_token_3                 => 'SOURCE_NAME'
346                 ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
347                                                      p_source_code
348                                                    , p_source_type_code
349                                                    , p_source_application_id
350                                                      )
351                 ,p_token_4                 => 'PRODUCT_NAME'
352                 ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
353                 ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
354                 ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
355                 ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
356         );
357 
358      IF (C_LEVEL_ERROR >= g_log_level) THEN
359                          trace
360                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
361                             ,p_level    => C_LEVEL_ERROR
362                             ,p_module   => l_log_module);
363      END IF;
364 
365      RETURN NULL;
366   WHEN xla_exceptions_pkg.application_exception THEN
367       RAISE;
368   WHEN OTHERS THEN
369        xla_exceptions_pkg.raise_message
370            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.GetMeaning');
371 END GetMeaning;
372 --
373 
374 ---------------------------------------
375 --
376 -- PRIVATE FUNCTION
377 --         Description_1
378 --
379 ---------------------------------------
380 FUNCTION Description_1 (
381   p_application_id      IN NUMBER
382 , p_ae_header_id        IN NUMBER DEFAULT NULL 
383 --PO Type
384  , p_source_1            IN VARCHAR2
385 --PO Number
386  , p_source_2            IN VARCHAR2
387 )
388 RETURN VARCHAR2
389 IS
390 l_component_type        VARCHAR2(80)   ;
391 l_component_code        VARCHAR2(30)   ;
392 l_component_type_code   VARCHAR2(1)    ;
393 l_component_appl_id     INTEGER        ;
394 l_amb_context_code      VARCHAR2(30)   ;
395 l_ledger_language       VARCHAR2(30)   ;
396 l_source                VARCHAR2(1996) ;
397 l_description           VARCHAR2(2000) ;
398 l_log_module            VARCHAR2(240)  ;
399 BEGIN
400 IF g_log_enabled THEN
401       l_log_module := C_DEFAULT_MODULE||'.Description_1';
402 END IF;
403 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
404       trace
405          (p_msg      => 'BEGIN of Description_1'
406          ,p_level    => C_LEVEL_PROCEDURE
407          ,p_module   => l_log_module);
408 END IF;
409 
410 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
411 l_component_type        := 'AMB_DESCRIPTION';
412 l_component_code        := 'PO_PA_JE_HDR_DESC';
413 l_component_type_code   := 'S';
414 l_component_appl_id     :=  201;
415 l_amb_context_code      := 'DEFAULT';
416 l_source                := NULL;
417 l_description           := NULL;
418 
419 
420  IF NVL(p_source_1,'
421 ') =  'PO' OR 
422 NVL(p_source_1,'
423 ') =  'PA'
424  THEN 
425   
426   l_source := SUBSTR(p_source_1,1,1996);
427   IF l_source IS NOT NULL THEN
428     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
429     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
430   END IF;   
431   l_source := SUBSTR(p_source_2,1,1996);
432   IF l_source IS NOT NULL THEN
433     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
434     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
435   END IF; 
436  l_description := SUBSTR(l_description,1,1996);
437   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
438         trace
439            (p_msg      => 'END of Description_1'
440            ,p_level    => C_LEVEL_PROCEDURE
441            ,p_module   => l_log_module);
442 
443   END IF;
444   RETURN l_description;
445 
446  END IF;
447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
448       trace
449          (p_msg      => 'END of Description_1'
450          ,p_level    => C_LEVEL_PROCEDURE
451          ,p_module   => l_log_module);
452 END IF;
453 RETURN NULL;
454 EXCEPTION
455   WHEN VALUE_ERROR THEN
456      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
457             trace
458                (p_msg      => 'ERROR: '||sqlerrm
459                ,p_level    => C_LEVEL_EXCEPTION
460                ,p_module   => l_log_module);
461      END IF;
462      RAISE;
463  WHEN xla_exceptions_pkg.application_exception THEN
464       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
465       trace
466          (p_msg      => 'ERROR: '||sqlerrm
467          ,p_level    => C_LEVEL_EXCEPTION
468          ,p_module   => l_log_module);
469       END IF;
470       RAISE;
471  WHEN OTHERS THEN
472        xla_exceptions_pkg.raise_message
473            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.Description_1');
474 END Description_1;
475 
476 ---------------------------------------
477 --
478 -- PRIVATE FUNCTION
479 --         Description_2
480 --
481 ---------------------------------------
482 FUNCTION Description_2 (
483   p_application_id      IN NUMBER
484 , p_ae_header_id        IN NUMBER DEFAULT NULL 
485 --Project Name
486  , p_source_3            IN VARCHAR2
487 --Task Name
488  , p_source_4            IN VARCHAR2
489 --Project Expenditure Organization Identifier
490  , p_source_5            IN NUMBER
491 --Expenditure Type
492  , p_source_6            IN VARCHAR2
493 )
494 RETURN VARCHAR2
495 IS
496 l_component_type        VARCHAR2(80)   ;
497 l_component_code        VARCHAR2(30)   ;
498 l_component_type_code   VARCHAR2(1)    ;
499 l_component_appl_id     INTEGER        ;
500 l_amb_context_code      VARCHAR2(30)   ;
501 l_ledger_language       VARCHAR2(30)   ;
502 l_source                VARCHAR2(1996) ;
503 l_description           VARCHAR2(2000) ;
504 l_log_module            VARCHAR2(240)  ;
505 BEGIN
506 IF g_log_enabled THEN
507       l_log_module := C_DEFAULT_MODULE||'.Description_2';
508 END IF;
509 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
510       trace
511          (p_msg      => 'BEGIN of Description_2'
512          ,p_level    => C_LEVEL_PROCEDURE
513          ,p_module   => l_log_module);
514 END IF;
515 
516 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
517 l_component_type        := 'AMB_DESCRIPTION';
518 l_component_code        := 'PROJ_RELATED_LINE_DESC';
519 l_component_type_code   := 'S';
520 l_component_appl_id     :=  201;
521 l_amb_context_code      := 'DEFAULT';
522 l_source                := NULL;
523 l_description           := NULL;
524 
525 
526  
527  IF 
528 l_ledger_language = 'US' THEN
529     l_description :=  SUBSTR(CONCAT(l_description,'For Project -'),1,2000);
530     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
531  END IF;   
532   l_source := SUBSTR(p_source_3,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,' and Task -'),1,2000);
540     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
541  END IF;   
542   l_source := SUBSTR(p_source_4,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,' in Expenditure Organization -'),1,2000);
550     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
551  END IF;   
552   l_source := SUBSTR(TO_CHAR(
553 GetMeaning (
554   p_flex_value_set_id        => 1011404
555 , p_flex_value               => TO_CHAR(p_source_5)
556 , p_source_code              => 'EXPENDITURE_ORGANIZATION_ID'
557 , p_source_type_code         => 'S'
558 , p_source_application_id    => 201
559 )
560 ),1,1996);
561   IF l_source IS NOT NULL THEN
562     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
563     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
564   END IF;  
565  IF 
566 l_ledger_language = 'US' THEN
567     l_description :=  SUBSTR(CONCAT(l_description,' for Expenditure Type -'),1,2000);
568     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
569  END IF;   
570   l_source := SUBSTR(p_source_6,1,1996);
571   IF l_source IS NOT NULL THEN
572     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
573     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
574   END IF; 
575  l_description := SUBSTR(l_description,1,1996);
576   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
577         trace
578            (p_msg      => 'END of Description_2'
579            ,p_level    => C_LEVEL_PROCEDURE
580            ,p_module   => l_log_module);
581 
582   END IF;
583   RETURN l_description;
584 
585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
586       trace
587          (p_msg      => 'END of Description_2'
588          ,p_level    => C_LEVEL_PROCEDURE
589          ,p_module   => l_log_module);
590 END IF;
591 RETURN NULL;
592 EXCEPTION
593   WHEN VALUE_ERROR 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 xla_exceptions_pkg.application_exception THEN
602       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
603       trace
604          (p_msg      => 'ERROR: '||sqlerrm
605          ,p_level    => C_LEVEL_EXCEPTION
606          ,p_module   => l_log_module);
607       END IF;
608       RAISE;
609  WHEN OTHERS THEN
610        xla_exceptions_pkg.raise_message
611            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.Description_2');
612 END Description_2;
613 
614 ---------------------------------------
615 --
616 -- PRIVATE FUNCTION
617 --         Description_3
618 --
619 ---------------------------------------
620 FUNCTION Description_3 (
621   p_application_id      IN NUMBER
622 , p_ae_header_id        IN NUMBER DEFAULT NULL 
623 --Journal entry Line Description
624  , p_source_7            IN VARCHAR2
625 )
626 RETURN VARCHAR2
627 IS
628 l_component_type        VARCHAR2(80)   ;
629 l_component_code        VARCHAR2(30)   ;
630 l_component_type_code   VARCHAR2(1)    ;
631 l_component_appl_id     INTEGER        ;
632 l_amb_context_code      VARCHAR2(30)   ;
633 l_ledger_language       VARCHAR2(30)   ;
634 l_source                VARCHAR2(1996) ;
635 l_description           VARCHAR2(2000) ;
636 l_log_module            VARCHAR2(240)  ;
637 BEGIN
638 IF g_log_enabled THEN
639       l_log_module := C_DEFAULT_MODULE||'.Description_3';
640 END IF;
641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
642       trace
643          (p_msg      => 'BEGIN of Description_3'
644          ,p_level    => C_LEVEL_PROCEDURE
645          ,p_module   => l_log_module);
646 END IF;
647 
648 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
649 l_component_type        := 'AMB_DESCRIPTION';
650 l_component_code        := 'PURCHASING_LINE_DESC';
651 l_component_type_code   := 'S';
652 l_component_appl_id     :=  201;
653 l_amb_context_code      := 'DEFAULT';
654 l_source                := NULL;
655 l_description           := NULL;
656 
657 
658   
659   l_source := SUBSTR(p_source_7,1,1996);
660   IF l_source IS NOT NULL THEN
661     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
662     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
663   END IF; 
664  l_description := SUBSTR(l_description,1,1996);
665   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
666         trace
667            (p_msg      => 'END of Description_3'
668            ,p_level    => C_LEVEL_PROCEDURE
669            ,p_module   => l_log_module);
670 
671   END IF;
672   RETURN l_description;
673 
674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
675       trace
676          (p_msg      => 'END of Description_3'
677          ,p_level    => C_LEVEL_PROCEDURE
678          ,p_module   => l_log_module);
679 END IF;
680 RETURN NULL;
681 EXCEPTION
682   WHEN VALUE_ERROR THEN
683      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
684             trace
685                (p_msg      => 'ERROR: '||sqlerrm
686                ,p_level    => C_LEVEL_EXCEPTION
687                ,p_module   => l_log_module);
688      END IF;
689      RAISE;
690  WHEN xla_exceptions_pkg.application_exception THEN
691       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
692       trace
693          (p_msg      => 'ERROR: '||sqlerrm
694          ,p_level    => C_LEVEL_EXCEPTION
695          ,p_module   => l_log_module);
696       END IF;
697       RAISE;
698  WHEN OTHERS THEN
699        xla_exceptions_pkg.raise_message
700            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.Description_3');
701 END Description_3;
702 
703 ---------------------------------------
704 --
705 -- PRIVATE FUNCTION
706 --         Description_4
707 --
708 ---------------------------------------
709 FUNCTION Description_4 (
710   p_application_id      IN NUMBER
711 , p_ae_header_id        IN NUMBER DEFAULT NULL 
712 --PO Type
713  , p_source_1            IN VARCHAR2
714 --PO Number
715  , p_source_2            IN VARCHAR2
716 --PO Release Number
717  , p_source_8            IN NUMBER
718 )
719 RETURN VARCHAR2
720 IS
721 l_component_type        VARCHAR2(80)   ;
722 l_component_code        VARCHAR2(30)   ;
723 l_component_type_code   VARCHAR2(1)    ;
724 l_component_appl_id     INTEGER        ;
725 l_amb_context_code      VARCHAR2(30)   ;
726 l_ledger_language       VARCHAR2(30)   ;
727 l_source                VARCHAR2(1996) ;
728 l_description           VARCHAR2(2000) ;
729 l_log_module            VARCHAR2(240)  ;
730 BEGIN
731 IF g_log_enabled THEN
732       l_log_module := C_DEFAULT_MODULE||'.Description_4';
733 END IF;
734 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
735       trace
736          (p_msg      => 'BEGIN of Description_4'
737          ,p_level    => C_LEVEL_PROCEDURE
738          ,p_module   => l_log_module);
739 END IF;
740 
741 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
742 l_component_type        := 'AMB_DESCRIPTION';
743 l_component_code        := 'RELEASE_JE_HDR_DESC';
744 l_component_type_code   := 'S';
745 l_component_appl_id     :=  201;
746 l_amb_context_code      := 'DEFAULT';
747 l_source                := NULL;
748 l_description           := NULL;
749 
750 
751  IF NVL(p_source_1,'
752 ') =  'REL'
753  THEN 
754   
755   l_source := SUBSTR(p_source_1,1,1996);
756   IF l_source IS NOT NULL THEN
757     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
758     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
759   END IF;   
760   l_source := SUBSTR(p_source_2,1,1996);
761   IF l_source IS NOT NULL THEN
762     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
763     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
764   END IF;  
765  IF 
766 l_ledger_language = 'US' THEN
767     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
768     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
769  END IF;   
770   l_source := SUBSTR(TO_CHAR(p_source_8),1,1996);
771   IF l_source IS NOT NULL THEN
772     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
773     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
774   END IF; 
775  l_description := SUBSTR(l_description,1,1996);
776   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
777         trace
778            (p_msg      => 'END of Description_4'
779            ,p_level    => C_LEVEL_PROCEDURE
780            ,p_module   => l_log_module);
781 
782   END IF;
783   RETURN l_description;
784 
785  END IF;
786 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
787       trace
788          (p_msg      => 'END of Description_4'
789          ,p_level    => C_LEVEL_PROCEDURE
790          ,p_module   => l_log_module);
791 END IF;
792 RETURN NULL;
793 EXCEPTION
794   WHEN VALUE_ERROR THEN
795      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
796             trace
797                (p_msg      => 'ERROR: '||sqlerrm
798                ,p_level    => C_LEVEL_EXCEPTION
799                ,p_module   => l_log_module);
800      END IF;
801      RAISE;
802  WHEN xla_exceptions_pkg.application_exception THEN
803       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
804       trace
805          (p_msg      => 'ERROR: '||sqlerrm
806          ,p_level    => C_LEVEL_EXCEPTION
807          ,p_module   => l_log_module);
808       END IF;
809       RAISE;
810  WHEN OTHERS THEN
811        xla_exceptions_pkg.raise_message
812            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.Description_4');
813 END Description_4;
814 
815 ---------------------------------------
816 --
817 -- PRIVATE FUNCTION
818 --         Description_5
819 --
820 ---------------------------------------
821 FUNCTION Description_5 (
822   p_application_id      IN NUMBER
823 , p_ae_header_id        IN NUMBER DEFAULT NULL 
824 --Document Type
825  , p_source_9            IN VARCHAR2
826 --Requisition Number
827  , p_source_10            IN VARCHAR2
828 )
829 RETURN VARCHAR2
830 IS
831 l_component_type        VARCHAR2(80)   ;
832 l_component_code        VARCHAR2(30)   ;
833 l_component_type_code   VARCHAR2(1)    ;
834 l_component_appl_id     INTEGER        ;
835 l_amb_context_code      VARCHAR2(30)   ;
836 l_ledger_language       VARCHAR2(30)   ;
837 l_source                VARCHAR2(1996) ;
838 l_description           VARCHAR2(2000) ;
839 l_log_module            VARCHAR2(240)  ;
840 BEGIN
841 IF g_log_enabled THEN
842       l_log_module := C_DEFAULT_MODULE||'.Description_5';
843 END IF;
844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
845       trace
846          (p_msg      => 'BEGIN of Description_5'
847          ,p_level    => C_LEVEL_PROCEDURE
848          ,p_module   => l_log_module);
849 END IF;
850 
851 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
852 l_component_type        := 'AMB_DESCRIPTION';
853 l_component_code        := 'REQ_JE_HDR_DESC';
854 l_component_type_code   := 'S';
855 l_component_appl_id     :=  201;
856 l_amb_context_code      := 'DEFAULT';
857 l_source                := NULL;
858 l_description           := NULL;
859 
860 
861  IF p_source_9 IS NOT NULL 
862  THEN 
863   
864   l_source := SUBSTR(p_source_9,1,1996);
865   IF l_source IS NOT NULL THEN
866     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
867     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
868   END IF;   
869   l_source := SUBSTR(p_source_10,1,1996);
870   IF l_source IS NOT NULL THEN
871     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
872     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
873   END IF; 
874  l_description := SUBSTR(l_description,1,1996);
875   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
876         trace
877            (p_msg      => 'END of Description_5'
878            ,p_level    => C_LEVEL_PROCEDURE
879            ,p_module   => l_log_module);
880 
881   END IF;
882   RETURN l_description;
883 
884  END IF;
885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
886       trace
887          (p_msg      => 'END of Description_5'
888          ,p_level    => C_LEVEL_PROCEDURE
889          ,p_module   => l_log_module);
890 END IF;
891 RETURN NULL;
892 EXCEPTION
893   WHEN VALUE_ERROR THEN
894      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
895             trace
896                (p_msg      => 'ERROR: '||sqlerrm
897                ,p_level    => C_LEVEL_EXCEPTION
898                ,p_module   => l_log_module);
899      END IF;
900      RAISE;
901  WHEN xla_exceptions_pkg.application_exception THEN
902       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
903       trace
904          (p_msg      => 'ERROR: '||sqlerrm
905          ,p_level    => C_LEVEL_EXCEPTION
906          ,p_module   => l_log_module);
907       END IF;
908       RAISE;
909  WHEN OTHERS THEN
910        xla_exceptions_pkg.raise_message
911            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.Description_5');
912 END Description_5;
913 
914 ---------------------------------------
915 --
916 -- PRIVATE FUNCTION
917 --         AcctDerRule_6
918 --
919 ---------------------------------------
920 FUNCTION AcctDerRule_6 (
921   p_application_id              IN NUMBER
922 , p_ae_header_id                IN NUMBER
923 , p_side                        IN VARCHAR2 
924 --Budget Account
925  , p_source_11            IN NUMBER
926 , x_transaction_coa_id         OUT NOCOPY NUMBER
927 , x_accounting_coa_id          OUT NOCOPY NUMBER
928 , x_value_type_code            OUT NOCOPY VARCHAR2
929 )
930 RETURN NUMBER
931 IS
932 l_component_type       VARCHAR2(80)  ;
933 l_component_code       VARCHAR2(30)  ;
934 l_component_type_code  VARCHAR2(1)   ;
935 l_component_appl_id    INTEGER       ;
936 l_amb_context_code     VARCHAR2(30)  ;
937 l_log_module           VARCHAR2(240) ;
938 l_output_value         NUMBER        ;
939 BEGIN
940 IF g_log_enabled THEN
941       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
942 END IF;
943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
944       trace
945          (p_msg      => 'BEGIN of AcctDerRule_6'
946          ,p_level    => C_LEVEL_PROCEDURE
947          ,p_module   => l_log_module);
948 END IF;
949 --
950 l_component_type         := 'AMB_ADR';
951 l_component_code         := 'PROJ_BURDENED_ENC_ACCT_RULE';
952 l_component_type_code    := 'S';
953 l_component_appl_id      :=  201;
954 l_amb_context_code       := 'DEFAULT';
955 x_transaction_coa_id     :=  null;
956 x_accounting_coa_id      :=  null;
957 --
958 
959  --
960   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
961       trace
962          (p_msg      => 'END of AcctDerRule_6'
963          ,p_level    => C_LEVEL_PROCEDURE
964          ,p_module   => l_log_module);
965   END IF;
966   x_value_type_code := 'S';
967   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
968   RETURN l_output_value;
969 
970 --
971 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
972       trace
973          (p_msg      => 'END of AcctDerRule_6(invalid)'
974          ,p_level    => C_LEVEL_PROCEDURE
975          ,p_module   => l_log_module);
976 END IF;
977 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
978 x_value_type_code := null;
979 l_output_value    := null;
980 xla_accounting_err_pkg.build_message
981                  (p_appli_s_name            => 'XLA'
982                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
983                  ,p_token_1                 => 'COMPONENT_NAME'
984                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
985                                                             l_component_type
986                                                           , l_component_code
987                                                           , l_component_type_code
988                                                           , l_component_appl_id
989                                                           , l_amb_context_code
990                                                           )
991                  ,p_token_2                 => 'OWNER'
992                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
993                                                         'XLA_OWNER_TYPE'
994                                                         ,l_component_type_code
995                                                         )
996                  ,p_token_3                 => 'PAD_NAME'
997                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
998                  ,p_token_4                 => 'PAD_OWNER'
999                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1000                                                         'XLA_OWNER_TYPE'
1001                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1002                                                         )
1003                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1004                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1005                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1006                  ,p_ae_header_id            => NULL
1007 );
1008 RETURN l_output_value;
1009 EXCEPTION
1010   WHEN xla_exceptions_pkg.application_exception THEN
1011       RAISE;
1012   WHEN OTHERS THEN
1013        xla_exceptions_pkg.raise_message
1014            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctDerRule_6');
1015 END AcctDerRule_6;
1016 --
1017 
1018 ---------------------------------------
1019 --
1020 -- PRIVATE FUNCTION
1021 --         AcctDerRule_7
1022 --
1023 ---------------------------------------
1024 FUNCTION AcctDerRule_7 (
1025   p_application_id              IN NUMBER
1026 , p_ae_header_id                IN NUMBER
1027 , p_side                        IN VARCHAR2 
1028 --Budget Account
1029  , p_source_11            IN NUMBER
1030 , x_transaction_coa_id         OUT NOCOPY NUMBER
1031 , x_accounting_coa_id          OUT NOCOPY NUMBER
1032 , x_value_type_code            OUT NOCOPY VARCHAR2
1033 )
1034 RETURN NUMBER
1035 IS
1036 l_component_type       VARCHAR2(80)  ;
1037 l_component_code       VARCHAR2(30)  ;
1038 l_component_type_code  VARCHAR2(1)   ;
1039 l_component_appl_id    INTEGER       ;
1040 l_amb_context_code     VARCHAR2(30)  ;
1041 l_log_module           VARCHAR2(240) ;
1042 l_output_value         NUMBER        ;
1043 BEGIN
1044 IF g_log_enabled THEN
1045       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
1046 END IF;
1047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1048       trace
1049          (p_msg      => 'BEGIN of AcctDerRule_7'
1050          ,p_level    => C_LEVEL_PROCEDURE
1051          ,p_module   => l_log_module);
1052 END IF;
1053 --
1054 l_component_type         := 'AMB_ADR';
1055 l_component_code         := 'PROJ_BURDEN_ENC_ACCT_RULE';
1056 l_component_type_code    := 'S';
1057 l_component_appl_id      :=  201;
1058 l_amb_context_code       := 'DEFAULT';
1059 x_transaction_coa_id     :=  null;
1060 x_accounting_coa_id      :=  null;
1061 --
1062 
1063  --
1064   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1065       trace
1066          (p_msg      => 'END of AcctDerRule_7'
1067          ,p_level    => C_LEVEL_PROCEDURE
1068          ,p_module   => l_log_module);
1069   END IF;
1070   x_value_type_code := 'S';
1071   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
1072   RETURN l_output_value;
1073 
1074 --
1075 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1076       trace
1077          (p_msg      => 'END of AcctDerRule_7(invalid)'
1078          ,p_level    => C_LEVEL_PROCEDURE
1079          ,p_module   => l_log_module);
1080 END IF;
1081 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1082 x_value_type_code := null;
1083 l_output_value    := null;
1084 xla_accounting_err_pkg.build_message
1085                  (p_appli_s_name            => 'XLA'
1086                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1087                  ,p_token_1                 => 'COMPONENT_NAME'
1088                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1089                                                             l_component_type
1090                                                           , l_component_code
1091                                                           , l_component_type_code
1092                                                           , l_component_appl_id
1093                                                           , l_amb_context_code
1094                                                           )
1095                  ,p_token_2                 => 'OWNER'
1096                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1097                                                         'XLA_OWNER_TYPE'
1098                                                         ,l_component_type_code
1099                                                         )
1100                  ,p_token_3                 => 'PAD_NAME'
1101                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1102                  ,p_token_4                 => 'PAD_OWNER'
1103                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1104                                                         'XLA_OWNER_TYPE'
1105                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1106                                                         )
1107                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1108                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1109                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1110                  ,p_ae_header_id            => NULL
1111 );
1112 RETURN l_output_value;
1113 EXCEPTION
1114   WHEN xla_exceptions_pkg.application_exception THEN
1115       RAISE;
1116   WHEN OTHERS THEN
1117        xla_exceptions_pkg.raise_message
1118            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctDerRule_7');
1119 END AcctDerRule_7;
1120 --
1121 
1122 ---------------------------------------
1123 --
1124 -- PRIVATE FUNCTION
1125 --         AcctDerRule_8
1126 --
1127 ---------------------------------------
1128 FUNCTION AcctDerRule_8 (
1129   p_application_id              IN NUMBER
1130 , p_ae_header_id                IN NUMBER
1131 , p_side                        IN VARCHAR2 
1132 --Budget Account
1133  , p_source_11            IN NUMBER
1134 , x_transaction_coa_id         OUT NOCOPY NUMBER
1135 , x_accounting_coa_id          OUT NOCOPY NUMBER
1136 , x_value_type_code            OUT NOCOPY VARCHAR2
1137 )
1138 RETURN NUMBER
1139 IS
1140 l_component_type       VARCHAR2(80)  ;
1141 l_component_code       VARCHAR2(30)  ;
1142 l_component_type_code  VARCHAR2(1)   ;
1143 l_component_appl_id    INTEGER       ;
1144 l_amb_context_code     VARCHAR2(30)  ;
1145 l_log_module           VARCHAR2(240) ;
1146 l_output_value         NUMBER        ;
1147 BEGIN
1148 IF g_log_enabled THEN
1149       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1150 END IF;
1151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1152       trace
1153          (p_msg      => 'BEGIN of AcctDerRule_8'
1154          ,p_level    => C_LEVEL_PROCEDURE
1155          ,p_module   => l_log_module);
1156 END IF;
1157 --
1158 l_component_type         := 'AMB_ADR';
1159 l_component_code         := 'PURCHASING_ENCUMBRANCE_ADR';
1160 l_component_type_code    := 'S';
1161 l_component_appl_id      :=  201;
1162 l_amb_context_code       := 'DEFAULT';
1163 x_transaction_coa_id     :=  null;
1164 x_accounting_coa_id      :=  null;
1165 --
1166 
1167  --
1168   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1169       trace
1170          (p_msg      => 'END of AcctDerRule_8'
1171          ,p_level    => C_LEVEL_PROCEDURE
1172          ,p_module   => l_log_module);
1173   END IF;
1174   x_value_type_code := 'S';
1175   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
1176   RETURN l_output_value;
1177 
1178 --
1179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1180       trace
1181          (p_msg      => 'END of AcctDerRule_8(invalid)'
1182          ,p_level    => C_LEVEL_PROCEDURE
1183          ,p_module   => l_log_module);
1184 END IF;
1185 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1186 x_value_type_code := null;
1187 l_output_value    := null;
1188 xla_accounting_err_pkg.build_message
1189                  (p_appli_s_name            => 'XLA'
1190                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1191                  ,p_token_1                 => 'COMPONENT_NAME'
1192                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1193                                                             l_component_type
1194                                                           , l_component_code
1195                                                           , l_component_type_code
1196                                                           , l_component_appl_id
1197                                                           , l_amb_context_code
1198                                                           )
1199                  ,p_token_2                 => 'OWNER'
1200                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1201                                                         'XLA_OWNER_TYPE'
1202                                                         ,l_component_type_code
1203                                                         )
1204                  ,p_token_3                 => 'PAD_NAME'
1205                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1206                  ,p_token_4                 => 'PAD_OWNER'
1207                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1208                                                         'XLA_OWNER_TYPE'
1209                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1210                                                         )
1211                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1212                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1213                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1214                  ,p_ae_header_id            => NULL
1215 );
1216 RETURN l_output_value;
1217 EXCEPTION
1218   WHEN xla_exceptions_pkg.application_exception THEN
1219       RAISE;
1220   WHEN OTHERS THEN
1221        xla_exceptions_pkg.raise_message
1222            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctDerRule_8');
1223 END AcctDerRule_8;
1224 --
1225 
1226 ---------------------------------------
1227 --
1228 -- PRIVATE FUNCTION
1229 --         AcctLineType_9
1230 --
1231 ---------------------------------------
1232 PROCEDURE AcctLineType_9 (
1233   p_application_id        IN NUMBER
1234  ,p_event_id              IN NUMBER
1235  ,p_calculate_acctd_flag  IN VARCHAR2
1236  ,p_calculate_g_l_flag    IN VARCHAR2
1237  ,p_actual_flag           IN OUT VARCHAR2
1238  ,p_balance_type_code     OUT VARCHAR2
1239  ,p_gain_or_loss_ref      OUT VARCHAR2
1240  
1241 --Project Name
1242  , p_source_3            IN VARCHAR2
1243 --Task Name
1244  , p_source_4            IN VARCHAR2
1245 --Project Expenditure Organization Identifier
1246  , p_source_5            IN NUMBER
1247 --Expenditure Type
1248  , p_source_6            IN VARCHAR2
1249 --Document Type
1250  , p_source_9            IN VARCHAR2
1251 --Main Or Backing Code
1252  , p_source_13            IN VARCHAR2
1253 --Burden Record Identifier
1254  , p_source_14            IN VARCHAR2
1255  , p_source_14_meaning    IN VARCHAR2
1256 --Burden Amount Display Method
1257  , p_source_15            IN VARCHAR2
1258 --Accounting Reversal Flag
1259  , p_source_16            IN VARCHAR2
1260 --Allocated to Application Identifier
1261  , p_source_17            IN NUMBER
1262 --Allocated to Distribution Type
1263  , p_source_18            IN VARCHAR2
1264 --Allocated to Entity Code
1265  , p_source_19            IN VARCHAR2
1266 --Allocated to First Distribution Identifier
1267  , p_source_20            IN NUMBER
1268 --Allocated to First System Transaction Identifier
1269  , p_source_21            IN NUMBER
1270 --Allocated to Second Distribution Identifier
1271  , p_source_22            IN VARCHAR2
1272 --Purchase Order Burden Applied to Application Identifier
1273  , p_source_23            IN NUMBER
1274 --PO Distribution Type
1275  , p_source_24            IN VARCHAR2
1276 --Purchase Order Burden Applied to Entity Code
1277  , p_source_25            IN VARCHAR2
1278 --Purchase Order Burden Applied to First Distribution Identifier
1279  , p_source_26            IN NUMBER
1280 --Purchase Order Burden Applied to First System Transaction Identifier
1281  , p_source_27            IN NUMBER
1282 --Purchase Order Burden Applied to Second Distribution Identifier
1283  , p_source_28            IN VARCHAR2
1284 --PO Distribution Identifier
1285  , p_source_29            IN NUMBER
1286 --Line Type Name
1287  , p_source_30            IN VARCHAR2
1288 --Encumbrance Upgrade Credit Accounting Class
1289  , p_source_31            IN VARCHAR2
1290 --Encumbrance Upgrade Credit Account
1291  , p_source_32            IN NUMBER
1292 --Entered Amount
1293  , p_source_33            IN NUMBER
1294 --Currency Code
1295  , p_source_34            IN VARCHAR2
1296 --Accounted Amount
1297  , p_source_35            IN NUMBER
1298 --Encumbrance Upgrade Debit Accounting Class
1299  , p_source_36            IN VARCHAR2
1300 --Encumbrance Upgrade Debit Account
1301  , p_source_37            IN NUMBER
1302 --Use Encumbrances Upgrade Attributes Flag
1303  , p_source_38            IN VARCHAR2
1304 --Encumbrance Upgrade Credit Encumbrance Type
1305  , p_source_39            IN NUMBER
1306 --Encumbrance Upgrade Debit Encumbrance Type
1307  , p_source_40            IN NUMBER
1308 )
1309 IS
1310 
1311 l_component_type              VARCHAR2(80);
1312 l_component_code              VARCHAR2(30);
1313 l_component_type_code         VARCHAR2(1);
1314 l_component_appl_id           INTEGER;
1315 l_amb_context_code            VARCHAR2(30);
1316 l_entity_code                 VARCHAR2(30);
1317 l_event_class_code            VARCHAR2(30);
1318 l_ae_header_id                NUMBER;
1319 l_event_type_code             VARCHAR2(30);
1320 l_line_definition_code        VARCHAR2(30);
1321 l_line_definition_owner_code  VARCHAR2(1);
1322 --
1323 -- adr variables
1324 l_segment                     VARCHAR2(30);
1325 l_ccid                        NUMBER;
1326 l_adr_transaction_coa_id      NUMBER;
1327 l_adr_accounting_coa_id       NUMBER;
1328 l_adr_flexfield_segment_code  VARCHAR2(30);
1329 l_adr_flex_value_set_id       NUMBER;
1330 l_adr_value_type_code         VARCHAR2(30);
1331 l_adr_value_combination_id    NUMBER;
1332 l_adr_value_segment_code      VARCHAR2(30);
1333 
1334 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1335 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1336 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1337 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1338 
1339 -- 4262811 Variables ------------------------------------------------------------------------------------------
1340 l_entered_amt_idx             NUMBER;
1341 l_accted_amt_idx              NUMBER;
1342 l_acc_rev_flag                VARCHAR2(1);
1343 l_accrual_line_num            NUMBER;
1344 l_tmp_amt                     NUMBER;
1345 l_acc_rev_natural_side_code   VARCHAR2(1);
1346 
1347 l_num_entries                 NUMBER;
1348 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1349 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1350 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1351 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1352 l_recog_line_1                NUMBER;
1353 l_recog_line_2                NUMBER;
1354 
1355 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1356 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1357 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1358 
1359 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1360 
1361 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1362 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1363 
1364 ---------------------------------------------------------------------------------------------------------------
1365 
1366 
1367 --
1368 -- bulk performance
1369 --
1370 l_balance_type_code           VARCHAR2(1);
1371 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1372 l_log_module                  VARCHAR2(240);
1373 
1374 --
1375 -- Upgrade strategy
1376 --
1377 l_actual_upg_option           VARCHAR2(1);
1378 l_enc_upg_option           VARCHAR2(1);
1379 
1380 --
1381 BEGIN
1382 --
1383 IF g_log_enabled THEN
1384       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
1385 END IF;
1386 --
1387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1388 
1389       trace
1390          (p_msg      => 'BEGIN of AcctLineType_9'
1391          ,p_level    => C_LEVEL_PROCEDURE
1392          ,p_module   => l_log_module);
1393 
1394 END IF;
1395 --
1396 l_component_type             := 'AMB_JLT';
1397 l_component_code             := 'CANCEL_BURDENED_ RELEASE_ENC';
1398 l_component_type_code        := 'S';
1399 l_component_appl_id          :=  201;
1400 l_amb_context_code           := 'DEFAULT';
1401 l_entity_code                := 'RELEASE';
1402 l_event_class_code           := 'RELEASE_BURDEN';
1403 l_event_type_code            := 'RELEASE_BURDEN_ALL';
1404 l_line_definition_owner_code := 'S';
1405 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
1406 --
1407 l_balance_type_code          := 'E';
1408 l_segment                     := NULL;
1409 l_ccid                        := NULL;
1410 l_adr_transaction_coa_id      := NULL;
1411 l_adr_accounting_coa_id       := NULL;
1412 l_adr_flexfield_segment_code  := NULL;
1413 l_adr_flex_value_set_id       := NULL;
1414 l_adr_value_type_code         := NULL;
1415 l_adr_value_combination_id    := NULL;
1416 l_adr_value_segment_code      := NULL;
1417 
1418 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
1419 l_bflow_class_code           := 'REL_PA_BURDENED_ENC';    -- 4219869 Business Flow
1420 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1421 l_budgetary_control_flag     := 'Y';
1422 
1423 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1424 l_bflow_applied_to_amt       := NULL; -- 5132302
1425 l_entered_amt_idx            := NULL;          -- 4262811
1426 l_accted_amt_idx             := NULL;          -- 4262811
1427 l_acc_rev_flag               := NULL;          -- 4262811
1428 l_accrual_line_num           := NULL;          -- 4262811
1429 l_tmp_amt                    := NULL;          -- 4262811
1430 --
1431  
1432 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1433     l_balance_type_code <> 'B' THEN
1434 IF (NVL(
1435 xla_ae_sources_pkg.GetSystemSourceChar(
1436    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1437  , p_source_type_code      => 'Y'
1438  , p_source_application_id =>  602
1439 ),'
1440 ') =  'REL_BURDEN_CANCELLED' OR 
1441 NVL(
1442 xla_ae_sources_pkg.GetSystemSourceChar(
1443    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1444  , p_source_type_code      => 'Y'
1445  , p_source_application_id =>  602
1446 ),'
1447 ') =  'REL_BURDEN_CR_MEMO_CANCELLED') AND 
1448 NVL(p_source_13,'
1449 ') =  'M' AND 
1450 (NVL(p_source_14,'
1451 ') =  'N' OR 
1452 NVL(p_source_14,'
1453 ') =  'O') AND 
1454 NVL(p_source_9,'
1455 ') =  'PO' AND 
1456 NVL(p_source_15,'
1457 ') =  'S'
1458  THEN 
1459 
1460    --
1461    XLA_AE_LINES_PKG.SetNewLine;
1462 
1463    p_balance_type_code          := l_balance_type_code;
1464    -- set the flag so later we will know whether the gain loss line needs to be created
1465    
1466    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1467      p_actual_flag :='A';
1468    END IF;
1469 
1470    --
1471    -- bulk performance
1472    --
1473    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1474                                       p_header_num   => 0); -- 4262811
1475    --
1476    -- set accounting line options
1477    --
1478    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1479            p_natural_side_code          => 'D'
1480          , p_gain_or_loss_flag          => 'N'
1481          , p_gl_transfer_mode_code      => 'S'
1482          , p_acct_entry_type_code       => 'E'
1483          , p_switch_side_flag           => 'N'
1484          , p_merge_duplicate_code       => 'N'
1485          );
1486    --
1487    l_acc_rev_natural_side_code := 'C';  -- 4262811
1488    -- 
1489    --
1490    -- set accounting line type info
1491    --
1492    xla_ae_lines_pkg.SetAcctLineType
1493       (p_component_type             => l_component_type
1494       ,p_event_type_code            => l_event_type_code
1495       ,p_line_definition_owner_code => l_line_definition_owner_code
1496       ,p_line_definition_code       => l_line_definition_code
1497       ,p_accounting_line_code       => l_component_code
1498       ,p_accounting_line_type_code  => l_component_type_code
1499       ,p_accounting_line_appl_id    => l_component_appl_id
1500       ,p_amb_context_code           => l_amb_context_code
1501       ,p_entity_code                => l_entity_code
1502       ,p_event_class_code           => l_event_class_code);
1503    --
1504    -- set accounting class
1505    --
1506    xla_ae_lines_pkg.SetAcctClass(
1507            p_accounting_class_code  => 'PO_PA_BURDENED'
1508          , p_ae_header_id           => l_ae_header_id
1509          );
1510 
1511    --
1512    -- set rounding class
1513    --
1514    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1515                       'PO_PA_BURDENED';
1516 
1517    --
1518    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1519    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1520    --
1521    -- bulk performance
1522    --
1523    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1524 
1525    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1526       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1527 
1528    -- 4955764
1529    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1531 
1532    -- 4458381 Public Sector Enh
1533    
1534    --
1535    -- set accounting attributes for the line type
1536    --
1537    l_entered_amt_idx := 28;
1538    l_accted_amt_idx  := 30;
1539    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1540    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1541    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
1542    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
1543    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
1544    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
1545    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
1546    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
1547    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
1548    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
1549    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
1550    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
1551    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
1552    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
1553    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
1554    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
1555    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
1556    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
1557    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
1558    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
1559    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
1560    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
1561    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
1562    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
1563    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
1564    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
1565    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
1566    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
1567    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
1568    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
1569    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
1570    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
1571    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
1572    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
1573    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
1574    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
1575    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
1576    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
1577    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
1578    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
1579    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
1580    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
1581    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
1582    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
1583    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
1584    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
1585    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
1586    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
1587    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
1588    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
1589    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
1590    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
1591    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
1592    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
1593    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
1594    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
1595    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
1596    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
1597    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
1598    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
1599    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
1600    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
1601    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
1602    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
1603    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
1604    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
1605    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
1606    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
1607    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
1608    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
1609    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
1610 
1611    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1612    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1613 
1614    ---------------------------------------------------------------------------------------------------------------
1615    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1616    ---------------------------------------------------------------------------------------------------------------
1617    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1618 
1619    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1620    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1621 
1622    IF xla_accounting_cache_pkg.GetValueChar
1623          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1624          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1625    AND l_bflow_method_code = 'PRIOR_ENTRY'
1626 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1627    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1628          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1629        )
1630    THEN
1631          xla_ae_lines_pkg.BflowUpgEntry
1632            (p_business_method_code    => l_bflow_method_code
1633            ,p_business_class_code     => l_bflow_class_code
1634            ,p_balance_type            => l_balance_type_code);
1635    ELSE
1636       NULL;
1637 XLA_AE_LINES_PKG.business_flow_validation(
1638                                 p_business_method_code     => l_bflow_method_code
1639                                ,p_business_class_code      => l_bflow_class_code
1640                                ,p_inherit_description_flag => l_inherit_desc_flag);
1641    END IF;
1642 
1643    --
1644    -- call analytical criteria
1645    --
1646    -- Inherited Analytical Criteria for business flow method of Prior Entry.
1647    --
1648    -- call description
1649    --
1650    
1651 xla_ae_lines_pkg.SetLineDescription(
1652    p_ae_header_id => l_ae_header_id
1653   ,p_description  => Description_2 (
1654      p_application_id         => p_application_id
1655    , p_ae_header_id           => l_ae_header_id 
1656 , p_source_3 => p_source_3
1657 , p_source_4 => p_source_4
1658 , p_source_5 => p_source_5
1659 , p_source_6 => p_source_6
1660    )
1661 );
1662 
1663 
1664    --
1665    -- call ADRs
1666    -- Bug 4922099
1667    --
1668    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1669         (NVL(l_actual_upg_option, 'N') = 'O') OR
1670         (NVL(l_enc_upg_option, 'N') = 'O')
1671       )
1672    THEN
1673    NULL;
1674    --
1675    --
1676    
1677    --
1678    --
1679    END IF;
1680    --
1681    -- Bug 4922099
1682    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1683           (NVL(l_enc_upg_option, 'N') = 'O')
1684         ) AND
1685         (l_bflow_method_code = 'PRIOR_ENTRY')
1686       )
1687    THEN
1688       IF
1689       --
1690       1 = 1
1691       --
1692       THEN
1693       xla_accounting_err_pkg.build_message
1694                                     (p_appli_s_name            => 'XLA'
1695                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1696                                     ,p_token_1                 => 'LINE_NUMBER'
1697                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1698                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1699                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1700                                                                              l_component_type
1701                                                                             ,l_component_code
1702                                                                             ,l_component_type_code
1703                                                                             ,l_component_appl_id
1704                                                                             ,l_amb_context_code
1705                                                                             ,l_entity_code
1706                                                                             ,l_event_class_code
1707                                                                            )
1708                                     ,p_token_3                 => 'OWNER'
1709                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1710                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1711                                                                           ,p_lookup_code    => l_component_type_code
1712                                                                          )
1713                                     ,p_token_4                 => 'PRODUCT_NAME'
1714                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1715                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1716                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1717                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1718                                     ,p_ae_header_id            =>  NULL
1719                                        );
1720 
1721         IF (C_LEVEL_ERROR>= g_log_level) THEN
1722                  trace
1723                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1724                       ,p_level    => C_LEVEL_ERROR
1725                       ,p_module   => l_log_module);
1726         END IF;
1727       END IF;
1728    END IF;
1729    --
1730    --
1731    ------------------------------------------------------------------------------------------------
1732    -- 4219869 Business Flow
1733    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1734    -- Prior Entry.  Currently, the following code is always generated.
1735    ------------------------------------------------------------------------------------------------
1736    -- No ValidateCurrentLine for business flow method of Prior Entry
1737 
1738    ------------------------------------------------------------------------------------
1739    -- 4219869 Business Flow
1740    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1741    ------------------------------------------------------------------------------------
1742    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1743 
1744    ----------------------------------------------------------------------------------
1745    -- 4219869 Business Flow
1746    -- Update journal entry status -- Need to generate this within IF <condition>
1747    ----------------------------------------------------------------------------------
1748    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1749          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1750          ,p_balance_type_code => l_balance_type_code
1751          );
1752 
1753    -------------------------------------------------------------------------------------------
1754    -- 4262811 - Generate the Accrual Reversal lines
1755    -------------------------------------------------------------------------------------------
1756    BEGIN
1757       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1758                               (g_array_event(p_event_id).array_value_num('header_index'));
1759       IF l_acc_rev_flag IS NULL THEN
1760          l_acc_rev_flag := 'N';
1761       END IF;
1762    EXCEPTION
1763       WHEN OTHERS THEN
1764          l_acc_rev_flag := 'N';
1765    END;
1766    --
1767    IF (l_acc_rev_flag = 'Y') THEN
1768 
1769        -- 4645092  ------------------------------------------------------------------------------
1770        -- To allow MPA report to determine if it should generate report process
1771        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1772        ------------------------------------------------------------------------------------------
1773 
1774        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1775        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1776 
1777        --
1778        -- Update the line information that should be overwritten
1779        --
1780        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1781                                          p_header_num   => 1);
1782        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1783 
1784        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1785 
1786        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1787           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1788        END IF;
1789 
1790       --
1791       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1792       --
1793       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1794           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1795       ELSE
1796           ---------------------------------------------------------------------------------------------------
1797           -- 4262811a Switch Sign
1798           ---------------------------------------------------------------------------------------------------
1799           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1800           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1801                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1802           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1803                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1804           -- 5132302
1805           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1806                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1807 
1808       END IF;
1809 
1810       -- 4955764
1811       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1812       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1813 
1814 
1815       XLA_AE_LINES_PKG.ValidateCurrentLine;
1816       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1817 
1818       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1819                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1820                ,p_balance_type_code => l_balance_type_code);
1821 
1822    END IF;
1823 
1824    -----------------------------------------------------------------------------------------
1825    -- 4262811 Multiperiod Accounting
1826    -----------------------------------------------------------------------------------------
1827      -- No MPA option is assigned.
1828 
1829 
1830 END IF;
1831 END IF;
1832 --
1833 
1834 --
1835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1836    trace
1837       (p_msg      => 'END of AcctLineType_9'
1838       ,p_level    => C_LEVEL_PROCEDURE
1839       ,p_module   => l_log_module);
1840 END IF;
1841 --
1842 EXCEPTION
1843   WHEN xla_exceptions_pkg.application_exception THEN
1844       RAISE;
1845   WHEN OTHERS THEN
1846        xla_exceptions_pkg.raise_message
1847            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_9');
1848 END AcctLineType_9;
1849 --
1850 
1851 ---------------------------------------
1852 --
1853 -- PRIVATE FUNCTION
1854 --         AcctLineType_10
1855 --
1856 ---------------------------------------
1857 PROCEDURE AcctLineType_10 (
1858   p_application_id        IN NUMBER
1859  ,p_event_id              IN NUMBER
1860  ,p_calculate_acctd_flag  IN VARCHAR2
1861  ,p_calculate_g_l_flag    IN VARCHAR2
1862  ,p_actual_flag           IN OUT VARCHAR2
1863  ,p_balance_type_code     OUT VARCHAR2
1864  ,p_gain_or_loss_ref      OUT VARCHAR2
1865  
1866 --Project Name
1867  , p_source_3            IN VARCHAR2
1868 --Task Name
1869  , p_source_4            IN VARCHAR2
1870 --Project Expenditure Organization Identifier
1871  , p_source_5            IN NUMBER
1872 --Expenditure Type
1873  , p_source_6            IN VARCHAR2
1874 --Document Type
1875  , p_source_9            IN VARCHAR2
1876 --Main Or Backing Code
1877  , p_source_13            IN VARCHAR2
1878 --Burden Record Identifier
1879  , p_source_14            IN VARCHAR2
1880  , p_source_14_meaning    IN VARCHAR2
1881 --Burden Amount Display Method
1882  , p_source_15            IN VARCHAR2
1883 --Accounting Reversal Flag
1884  , p_source_16            IN VARCHAR2
1885 --Allocated to Application Identifier
1886  , p_source_17            IN NUMBER
1887 --Allocated to Distribution Type
1888  , p_source_18            IN VARCHAR2
1889 --Allocated to Entity Code
1890  , p_source_19            IN VARCHAR2
1891 --Allocated to First Distribution Identifier
1892  , p_source_20            IN NUMBER
1893 --Allocated to First System Transaction Identifier
1894  , p_source_21            IN NUMBER
1895 --Purchase Order Burden Applied to Application Identifier
1896  , p_source_23            IN NUMBER
1897 --PO Distribution Type
1898  , p_source_24            IN VARCHAR2
1899 --Purchase Order Burden Applied to Entity Code
1900  , p_source_25            IN VARCHAR2
1901 --Purchase Order Burden Applied to First Distribution Identifier
1902  , p_source_26            IN NUMBER
1903 --Purchase Order Burden Applied to First System Transaction Identifier
1904  , p_source_27            IN NUMBER
1905 --Purchase Order Burden Applied to Second Distribution Identifier
1906  , p_source_28            IN VARCHAR2
1907 --PO Distribution Identifier
1908  , p_source_29            IN NUMBER
1909 --Line Type Name
1910  , p_source_30            IN VARCHAR2
1911 --Encumbrance Upgrade Credit Accounting Class
1912  , p_source_31            IN VARCHAR2
1913 --Encumbrance Upgrade Credit Account
1914  , p_source_32            IN NUMBER
1915 --Entered Amount
1916  , p_source_33            IN NUMBER
1917 --Currency Code
1918  , p_source_34            IN VARCHAR2
1919 --Accounted Amount
1920  , p_source_35            IN NUMBER
1921 --Encumbrance Upgrade Debit Accounting Class
1922  , p_source_36            IN VARCHAR2
1923 --Encumbrance Upgrade Debit Account
1924  , p_source_37            IN NUMBER
1925 --Use Encumbrances Upgrade Attributes Flag
1926  , p_source_38            IN VARCHAR2
1927 --Encumbrance Upgrade Credit Encumbrance Type
1928  , p_source_39            IN NUMBER
1929 --Encumbrance Upgrade Debit Encumbrance Type
1930  , p_source_40            IN NUMBER
1931 )
1932 IS
1933 
1934 l_component_type              VARCHAR2(80);
1935 l_component_code              VARCHAR2(30);
1936 l_component_type_code         VARCHAR2(1);
1937 l_component_appl_id           INTEGER;
1938 l_amb_context_code            VARCHAR2(30);
1939 l_entity_code                 VARCHAR2(30);
1940 l_event_class_code            VARCHAR2(30);
1941 l_ae_header_id                NUMBER;
1942 l_event_type_code             VARCHAR2(30);
1943 l_line_definition_code        VARCHAR2(30);
1944 l_line_definition_owner_code  VARCHAR2(1);
1945 --
1946 -- adr variables
1947 l_segment                     VARCHAR2(30);
1948 l_ccid                        NUMBER;
1949 l_adr_transaction_coa_id      NUMBER;
1950 l_adr_accounting_coa_id       NUMBER;
1951 l_adr_flexfield_segment_code  VARCHAR2(30);
1952 l_adr_flex_value_set_id       NUMBER;
1953 l_adr_value_type_code         VARCHAR2(30);
1954 l_adr_value_combination_id    NUMBER;
1955 l_adr_value_segment_code      VARCHAR2(30);
1956 
1957 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1958 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1959 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1960 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1961 
1962 -- 4262811 Variables ------------------------------------------------------------------------------------------
1963 l_entered_amt_idx             NUMBER;
1964 l_accted_amt_idx              NUMBER;
1965 l_acc_rev_flag                VARCHAR2(1);
1966 l_accrual_line_num            NUMBER;
1967 l_tmp_amt                     NUMBER;
1968 l_acc_rev_natural_side_code   VARCHAR2(1);
1969 
1970 l_num_entries                 NUMBER;
1971 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1972 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1973 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1974 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1975 l_recog_line_1                NUMBER;
1976 l_recog_line_2                NUMBER;
1977 
1978 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1979 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1980 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1981 
1982 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1983 
1984 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1985 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1986 
1987 ---------------------------------------------------------------------------------------------------------------
1988 
1989 
1990 --
1991 -- bulk performance
1992 --
1993 l_balance_type_code           VARCHAR2(1);
1994 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1995 l_log_module                  VARCHAR2(240);
1996 
1997 --
1998 -- Upgrade strategy
1999 --
2000 l_actual_upg_option           VARCHAR2(1);
2001 l_enc_upg_option           VARCHAR2(1);
2002 
2003 --
2004 BEGIN
2005 --
2006 IF g_log_enabled THEN
2007       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
2008 END IF;
2009 --
2010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2011 
2012       trace
2013          (p_msg      => 'BEGIN of AcctLineType_10'
2014          ,p_level    => C_LEVEL_PROCEDURE
2015          ,p_module   => l_log_module);
2016 
2017 END IF;
2018 --
2019 l_component_type             := 'AMB_JLT';
2020 l_component_code             := 'CANCEL_BURDENED_PO_ENC';
2021 l_component_type_code        := 'S';
2022 l_component_appl_id          :=  201;
2023 l_amb_context_code           := 'DEFAULT';
2024 l_entity_code                := 'PURCHASE_ORDER';
2025 l_event_class_code           := 'PO_BURDEN';
2026 l_event_type_code            := 'PO_BURDEN_ALL';
2027 l_line_definition_owner_code := 'S';
2028 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
2029 --
2030 l_balance_type_code          := 'E';
2031 l_segment                     := NULL;
2032 l_ccid                        := NULL;
2033 l_adr_transaction_coa_id      := NULL;
2034 l_adr_accounting_coa_id       := NULL;
2035 l_adr_flexfield_segment_code  := NULL;
2036 l_adr_flex_value_set_id       := NULL;
2037 l_adr_value_type_code         := NULL;
2038 l_adr_value_combination_id    := NULL;
2039 l_adr_value_segment_code      := NULL;
2040 
2041 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2042 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
2043 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2044 l_budgetary_control_flag     := 'Y';
2045 
2046 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2047 l_bflow_applied_to_amt       := NULL; -- 5132302
2048 l_entered_amt_idx            := NULL;          -- 4262811
2049 l_accted_amt_idx             := NULL;          -- 4262811
2050 l_acc_rev_flag               := NULL;          -- 4262811
2051 l_accrual_line_num           := NULL;          -- 4262811
2052 l_tmp_amt                    := NULL;          -- 4262811
2053 --
2054  
2055 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2056     l_balance_type_code <> 'B' THEN
2057 IF (NVL(
2058 xla_ae_sources_pkg.GetSystemSourceChar(
2059    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2060  , p_source_type_code      => 'Y'
2061  , p_source_application_id =>  602
2062 ),'
2063 ') =  'PO_BURDEN_CANCELLED' OR 
2064 NVL(
2065 xla_ae_sources_pkg.GetSystemSourceChar(
2066    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2067  , p_source_type_code      => 'Y'
2068  , p_source_application_id =>  602
2069 ),'
2070 ') =  'PO_BURDEN_CR_MEMO_CANCELLED') AND 
2071 NVL(p_source_13,'
2072 ') =  'M' AND 
2073 (NVL(p_source_14,'
2074 ') =  'N' OR 
2075 NVL(p_source_14,'
2076 ') =  'O') AND 
2077 NVL(p_source_9,'
2078 ') =  'PO' AND 
2079 NVL(p_source_15,'
2080 ') =  'S'
2081  THEN 
2082 
2083    --
2084    XLA_AE_LINES_PKG.SetNewLine;
2085 
2086    p_balance_type_code          := l_balance_type_code;
2087    -- set the flag so later we will know whether the gain loss line needs to be created
2088    
2089    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2090      p_actual_flag :='A';
2091    END IF;
2092 
2093    --
2094    -- bulk performance
2095    --
2096    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2097                                       p_header_num   => 0); -- 4262811
2098    --
2099    -- set accounting line options
2100    --
2101    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2102            p_natural_side_code          => 'D'
2103          , p_gain_or_loss_flag          => 'N'
2104          , p_gl_transfer_mode_code      => 'S'
2105          , p_acct_entry_type_code       => 'E'
2106          , p_switch_side_flag           => 'N'
2107          , p_merge_duplicate_code       => 'N'
2108          );
2109    --
2110    l_acc_rev_natural_side_code := 'C';  -- 4262811
2111    -- 
2112    --
2113    -- set accounting line type info
2114    --
2115    xla_ae_lines_pkg.SetAcctLineType
2116       (p_component_type             => l_component_type
2117       ,p_event_type_code            => l_event_type_code
2118       ,p_line_definition_owner_code => l_line_definition_owner_code
2119       ,p_line_definition_code       => l_line_definition_code
2120       ,p_accounting_line_code       => l_component_code
2121       ,p_accounting_line_type_code  => l_component_type_code
2122       ,p_accounting_line_appl_id    => l_component_appl_id
2123       ,p_amb_context_code           => l_amb_context_code
2124       ,p_entity_code                => l_entity_code
2125       ,p_event_class_code           => l_event_class_code);
2126    --
2127    -- set accounting class
2128    --
2129    xla_ae_lines_pkg.SetAcctClass(
2130            p_accounting_class_code  => 'PO_PA_BURDENED'
2131          , p_ae_header_id           => l_ae_header_id
2132          );
2133 
2134    --
2135    -- set rounding class
2136    --
2137    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2138                       'PO_PA_BURDENED';
2139 
2140    --
2141    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2142    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2143    --
2144    -- bulk performance
2145    --
2146    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2147 
2148    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2149       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2150 
2151    -- 4955764
2152    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2153       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2154 
2155    -- 4458381 Public Sector Enh
2156    
2157    --
2158    -- set accounting attributes for the line type
2159    --
2160    l_entered_amt_idx := 27;
2161    l_accted_amt_idx  := 29;
2162    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2163    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2164    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
2165    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
2166    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
2167    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
2168    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
2169    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
2170    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
2171    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
2172    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
2173    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
2174    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
2175    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
2176    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
2177    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2178    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
2179    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
2180    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
2181    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
2182    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
2183    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2184    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
2185    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
2186    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
2187    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
2188    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
2189    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
2190    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
2191    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
2192    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
2193    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
2194    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
2195    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
2196    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
2197    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
2198    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
2199    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
2200    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
2201    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
2202    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
2203    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
2204    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
2205    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
2206    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
2207    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
2208    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
2209    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
2210    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
2211    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
2212    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
2213    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
2214    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
2215    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
2216    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
2217    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
2218    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
2219    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
2220    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
2221    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
2222    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
2223    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
2224    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
2225    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
2226    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
2227    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
2228    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
2229    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
2230    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
2231 
2232    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2233    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2234 
2235    ---------------------------------------------------------------------------------------------------------------
2236    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2237    ---------------------------------------------------------------------------------------------------------------
2238    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2239 
2240    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2241    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2242 
2243    IF xla_accounting_cache_pkg.GetValueChar
2244          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2245          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2246    AND l_bflow_method_code = 'PRIOR_ENTRY'
2247 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2248    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2249          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2250        )
2251    THEN
2252          xla_ae_lines_pkg.BflowUpgEntry
2253            (p_business_method_code    => l_bflow_method_code
2254            ,p_business_class_code     => l_bflow_class_code
2255            ,p_balance_type            => l_balance_type_code);
2256    ELSE
2257       NULL;
2258 XLA_AE_LINES_PKG.business_flow_validation(
2259                                 p_business_method_code     => l_bflow_method_code
2260                                ,p_business_class_code      => l_bflow_class_code
2261                                ,p_inherit_description_flag => l_inherit_desc_flag);
2262    END IF;
2263 
2264    --
2265    -- call analytical criteria
2266    --
2267    -- Inherited Analytical Criteria for business flow method of Prior Entry.
2268    --
2269    -- call description
2270    --
2271    
2272 xla_ae_lines_pkg.SetLineDescription(
2273    p_ae_header_id => l_ae_header_id
2274   ,p_description  => Description_2 (
2275      p_application_id         => p_application_id
2276    , p_ae_header_id           => l_ae_header_id 
2277 , p_source_3 => p_source_3
2278 , p_source_4 => p_source_4
2279 , p_source_5 => p_source_5
2280 , p_source_6 => p_source_6
2281    )
2282 );
2283 
2284 
2285    --
2286    -- call ADRs
2287    -- Bug 4922099
2288    --
2289    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2290         (NVL(l_actual_upg_option, 'N') = 'O') OR
2291         (NVL(l_enc_upg_option, 'N') = 'O')
2292       )
2293    THEN
2294    NULL;
2295    --
2296    --
2297    
2298    --
2299    --
2300    END IF;
2301    --
2302    -- Bug 4922099
2303    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2304           (NVL(l_enc_upg_option, 'N') = 'O')
2305         ) AND
2306         (l_bflow_method_code = 'PRIOR_ENTRY')
2307       )
2308    THEN
2309       IF
2310       --
2311       1 = 1
2312       --
2313       THEN
2314       xla_accounting_err_pkg.build_message
2315                                     (p_appli_s_name            => 'XLA'
2316                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2317                                     ,p_token_1                 => 'LINE_NUMBER'
2318                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2319                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2320                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2321                                                                              l_component_type
2322                                                                             ,l_component_code
2323                                                                             ,l_component_type_code
2324                                                                             ,l_component_appl_id
2325                                                                             ,l_amb_context_code
2326                                                                             ,l_entity_code
2327                                                                             ,l_event_class_code
2328                                                                            )
2329                                     ,p_token_3                 => 'OWNER'
2330                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2331                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2332                                                                           ,p_lookup_code    => l_component_type_code
2333                                                                          )
2334                                     ,p_token_4                 => 'PRODUCT_NAME'
2335                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2336                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2337                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2338                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2339                                     ,p_ae_header_id            =>  NULL
2340                                        );
2341 
2342         IF (C_LEVEL_ERROR>= g_log_level) THEN
2343                  trace
2344                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2345                       ,p_level    => C_LEVEL_ERROR
2346                       ,p_module   => l_log_module);
2347         END IF;
2348       END IF;
2349    END IF;
2350    --
2351    --
2352    ------------------------------------------------------------------------------------------------
2353    -- 4219869 Business Flow
2354    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2355    -- Prior Entry.  Currently, the following code is always generated.
2356    ------------------------------------------------------------------------------------------------
2357    -- No ValidateCurrentLine for business flow method of Prior Entry
2358 
2359    ------------------------------------------------------------------------------------
2360    -- 4219869 Business Flow
2361    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2362    ------------------------------------------------------------------------------------
2363    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2364 
2365    ----------------------------------------------------------------------------------
2366    -- 4219869 Business Flow
2367    -- Update journal entry status -- Need to generate this within IF <condition>
2368    ----------------------------------------------------------------------------------
2369    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2370          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2371          ,p_balance_type_code => l_balance_type_code
2372          );
2373 
2374    -------------------------------------------------------------------------------------------
2375    -- 4262811 - Generate the Accrual Reversal lines
2376    -------------------------------------------------------------------------------------------
2377    BEGIN
2378       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2379                               (g_array_event(p_event_id).array_value_num('header_index'));
2380       IF l_acc_rev_flag IS NULL THEN
2381          l_acc_rev_flag := 'N';
2382       END IF;
2383    EXCEPTION
2384       WHEN OTHERS THEN
2385          l_acc_rev_flag := 'N';
2386    END;
2387    --
2388    IF (l_acc_rev_flag = 'Y') THEN
2389 
2390        -- 4645092  ------------------------------------------------------------------------------
2391        -- To allow MPA report to determine if it should generate report process
2392        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2393        ------------------------------------------------------------------------------------------
2394 
2395        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2396        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2397 
2398        --
2399        -- Update the line information that should be overwritten
2400        --
2401        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2402                                          p_header_num   => 1);
2403        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2404 
2405        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2406 
2407        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2408           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2409        END IF;
2410 
2411       --
2412       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2413       --
2414       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2415           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2416       ELSE
2417           ---------------------------------------------------------------------------------------------------
2418           -- 4262811a Switch Sign
2419           ---------------------------------------------------------------------------------------------------
2420           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2421           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2422                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2423           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2424                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2425           -- 5132302
2426           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2427                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2428 
2429       END IF;
2430 
2431       -- 4955764
2432       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2433       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2434 
2435 
2436       XLA_AE_LINES_PKG.ValidateCurrentLine;
2437       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2438 
2439       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2440                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2441                ,p_balance_type_code => l_balance_type_code);
2442 
2443    END IF;
2444 
2445    -----------------------------------------------------------------------------------------
2446    -- 4262811 Multiperiod Accounting
2447    -----------------------------------------------------------------------------------------
2448      -- No MPA option is assigned.
2449 
2450 
2451 END IF;
2452 END IF;
2453 --
2454 
2455 --
2456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2457    trace
2458       (p_msg      => 'END of AcctLineType_10'
2459       ,p_level    => C_LEVEL_PROCEDURE
2460       ,p_module   => l_log_module);
2461 END IF;
2462 --
2463 EXCEPTION
2464   WHEN xla_exceptions_pkg.application_exception THEN
2465       RAISE;
2466   WHEN OTHERS THEN
2467        xla_exceptions_pkg.raise_message
2468            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_10');
2469 END AcctLineType_10;
2470 --
2471 
2472 ---------------------------------------
2473 --
2474 -- PRIVATE FUNCTION
2475 --         AcctLineType_11
2476 --
2477 ---------------------------------------
2478 PROCEDURE AcctLineType_11 (
2479   p_application_id        IN NUMBER
2480  ,p_event_id              IN NUMBER
2481  ,p_calculate_acctd_flag  IN VARCHAR2
2482  ,p_calculate_g_l_flag    IN VARCHAR2
2483  ,p_actual_flag           IN OUT VARCHAR2
2484  ,p_balance_type_code     OUT VARCHAR2
2485  ,p_gain_or_loss_ref      OUT VARCHAR2
2486  
2487 --Project Name
2488  , p_source_3            IN VARCHAR2
2489 --Task Name
2490  , p_source_4            IN VARCHAR2
2491 --Project Expenditure Organization Identifier
2492  , p_source_5            IN NUMBER
2493 --Expenditure Type
2494  , p_source_6            IN VARCHAR2
2495 --Main Or Backing Code
2496  , p_source_13            IN VARCHAR2
2497 --Burden Record Identifier
2498  , p_source_14            IN VARCHAR2
2499  , p_source_14_meaning    IN VARCHAR2
2500 --Burden Amount Display Method
2501  , p_source_15            IN VARCHAR2
2502 --Accounting Reversal Flag
2503  , p_source_16            IN VARCHAR2
2504 --Allocated to Application Identifier
2505  , p_source_17            IN NUMBER
2506 --Allocated to Distribution Type
2507  , p_source_18            IN VARCHAR2
2508 --Allocated to Entity Code
2509  , p_source_19            IN VARCHAR2
2510 --Allocated to First Distribution Identifier
2511  , p_source_20            IN NUMBER
2512 --Allocated to First System Transaction Identifier
2513  , p_source_21            IN NUMBER
2514 --Allocated to Second Distribution Identifier
2515  , p_source_22            IN VARCHAR2
2516 --Line Type Name
2517  , p_source_30            IN VARCHAR2
2518 --Encumbrance Upgrade Credit Accounting Class
2519  , p_source_31            IN VARCHAR2
2520 --Encumbrance Upgrade Credit Account
2521  , p_source_32            IN NUMBER
2522 --Entered Amount
2523  , p_source_33            IN NUMBER
2524 --Currency Code
2525  , p_source_34            IN VARCHAR2
2526 --Accounted Amount
2527  , p_source_35            IN NUMBER
2528 --Encumbrance Upgrade Debit Accounting Class
2529  , p_source_36            IN VARCHAR2
2530 --Encumbrance Upgrade Debit Account
2531  , p_source_37            IN NUMBER
2532 --Use Encumbrances Upgrade Attributes Flag
2533  , p_source_38            IN VARCHAR2
2534 --Encumbrance Upgrade Credit Encumbrance Type
2535  , p_source_39            IN NUMBER
2536 --Encumbrance Upgrade Debit Encumbrance Type
2537  , p_source_40            IN NUMBER
2538 --Requisition Burden Applied to Application Identifier
2539  , p_source_41            IN NUMBER
2540 --Requisition Distribution Type
2541  , p_source_42            IN VARCHAR2
2542 --Requisition Burden Applied to Entity Code
2543  , p_source_43            IN VARCHAR2
2544 --Requisition Burden Applied to First Distribution Identifier
2545  , p_source_44            IN NUMBER
2546 --Requisition Burden Applied to First System Transaction Identifier
2547  , p_source_45            IN NUMBER
2548 --Requisition Burden Applied to Second Distribution Identifier
2549  , p_source_46            IN VARCHAR2
2550 --Requisition Distribution Identifier
2551  , p_source_47            IN NUMBER
2552 )
2553 IS
2554 
2555 l_component_type              VARCHAR2(80);
2556 l_component_code              VARCHAR2(30);
2557 l_component_type_code         VARCHAR2(1);
2558 l_component_appl_id           INTEGER;
2559 l_amb_context_code            VARCHAR2(30);
2560 l_entity_code                 VARCHAR2(30);
2561 l_event_class_code            VARCHAR2(30);
2562 l_ae_header_id                NUMBER;
2563 l_event_type_code             VARCHAR2(30);
2564 l_line_definition_code        VARCHAR2(30);
2565 l_line_definition_owner_code  VARCHAR2(1);
2566 --
2567 -- adr variables
2568 l_segment                     VARCHAR2(30);
2569 l_ccid                        NUMBER;
2570 l_adr_transaction_coa_id      NUMBER;
2571 l_adr_accounting_coa_id       NUMBER;
2572 l_adr_flexfield_segment_code  VARCHAR2(30);
2573 l_adr_flex_value_set_id       NUMBER;
2574 l_adr_value_type_code         VARCHAR2(30);
2575 l_adr_value_combination_id    NUMBER;
2576 l_adr_value_segment_code      VARCHAR2(30);
2577 
2578 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2579 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2580 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2581 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2582 
2583 -- 4262811 Variables ------------------------------------------------------------------------------------------
2584 l_entered_amt_idx             NUMBER;
2585 l_accted_amt_idx              NUMBER;
2586 l_acc_rev_flag                VARCHAR2(1);
2587 l_accrual_line_num            NUMBER;
2588 l_tmp_amt                     NUMBER;
2589 l_acc_rev_natural_side_code   VARCHAR2(1);
2590 
2591 l_num_entries                 NUMBER;
2592 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2593 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2594 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2595 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2596 l_recog_line_1                NUMBER;
2597 l_recog_line_2                NUMBER;
2598 
2599 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2600 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2601 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2602 
2603 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2604 
2605 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2606 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2607 
2608 ---------------------------------------------------------------------------------------------------------------
2609 
2610 
2611 --
2612 -- bulk performance
2613 --
2614 l_balance_type_code           VARCHAR2(1);
2615 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2616 l_log_module                  VARCHAR2(240);
2617 
2618 --
2619 -- Upgrade strategy
2620 --
2621 l_actual_upg_option           VARCHAR2(1);
2622 l_enc_upg_option           VARCHAR2(1);
2623 
2624 --
2625 BEGIN
2626 --
2627 IF g_log_enabled THEN
2628       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
2629 END IF;
2630 --
2631 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2632 
2633       trace
2634          (p_msg      => 'BEGIN of AcctLineType_11'
2635          ,p_level    => C_LEVEL_PROCEDURE
2636          ,p_module   => l_log_module);
2637 
2638 END IF;
2639 --
2640 l_component_type             := 'AMB_JLT';
2641 l_component_code             := 'CANCEL_BURDENED_REQ_ENC';
2642 l_component_type_code        := 'S';
2643 l_component_appl_id          :=  201;
2644 l_amb_context_code           := 'DEFAULT';
2645 l_entity_code                := 'REQUISITION';
2646 l_event_class_code           := 'REQUISITION_BURDEN';
2647 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
2648 l_line_definition_owner_code := 'S';
2649 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
2650 --
2651 l_balance_type_code          := 'E';
2652 l_segment                     := NULL;
2653 l_ccid                        := NULL;
2654 l_adr_transaction_coa_id      := NULL;
2655 l_adr_accounting_coa_id       := NULL;
2656 l_adr_flexfield_segment_code  := NULL;
2657 l_adr_flex_value_set_id       := NULL;
2658 l_adr_value_type_code         := NULL;
2659 l_adr_value_combination_id    := NULL;
2660 l_adr_value_segment_code      := NULL;
2661 
2662 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2663 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
2664 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2665 l_budgetary_control_flag     := 'Y';
2666 
2667 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2668 l_bflow_applied_to_amt       := NULL; -- 5132302
2669 l_entered_amt_idx            := NULL;          -- 4262811
2670 l_accted_amt_idx             := NULL;          -- 4262811
2671 l_acc_rev_flag               := NULL;          -- 4262811
2672 l_accrual_line_num           := NULL;          -- 4262811
2673 l_tmp_amt                    := NULL;          -- 4262811
2674 --
2675  
2676 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2677     l_balance_type_code <> 'B' THEN
2678 IF NVL(
2679 xla_ae_sources_pkg.GetSystemSourceChar(
2680    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2681  , p_source_type_code      => 'Y'
2682  , p_source_application_id =>  602
2683 ),'
2684 ') =  'REQ_BURDEN_CANCELLED' AND 
2685 NVL(p_source_13,'
2686 ') =  'M' AND 
2687 (NVL(p_source_14,'
2688 ') =  'N' OR 
2689 NVL(p_source_14,'
2690 ') =  'O') AND 
2691 NVL(p_source_15,'
2692 ') =  'S'
2693  THEN 
2694 
2695    --
2696    XLA_AE_LINES_PKG.SetNewLine;
2697 
2698    p_balance_type_code          := l_balance_type_code;
2699    -- set the flag so later we will know whether the gain loss line needs to be created
2700    
2701    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2702      p_actual_flag :='A';
2703    END IF;
2704 
2705    --
2706    -- bulk performance
2707    --
2708    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2709                                       p_header_num   => 0); -- 4262811
2710    --
2711    -- set accounting line options
2712    --
2713    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2714            p_natural_side_code          => 'D'
2715          , p_gain_or_loss_flag          => 'N'
2716          , p_gl_transfer_mode_code      => 'S'
2717          , p_acct_entry_type_code       => 'E'
2718          , p_switch_side_flag           => 'N'
2719          , p_merge_duplicate_code       => 'N'
2720          );
2721    --
2722    l_acc_rev_natural_side_code := 'C';  -- 4262811
2723    -- 
2724    --
2725    -- set accounting line type info
2726    --
2727    xla_ae_lines_pkg.SetAcctLineType
2728       (p_component_type             => l_component_type
2729       ,p_event_type_code            => l_event_type_code
2730       ,p_line_definition_owner_code => l_line_definition_owner_code
2731       ,p_line_definition_code       => l_line_definition_code
2732       ,p_accounting_line_code       => l_component_code
2733       ,p_accounting_line_type_code  => l_component_type_code
2734       ,p_accounting_line_appl_id    => l_component_appl_id
2735       ,p_amb_context_code           => l_amb_context_code
2736       ,p_entity_code                => l_entity_code
2737       ,p_event_class_code           => l_event_class_code);
2738    --
2739    -- set accounting class
2740    --
2741    xla_ae_lines_pkg.SetAcctClass(
2742            p_accounting_class_code  => 'REQ_PA_BURDENED'
2743          , p_ae_header_id           => l_ae_header_id
2744          );
2745 
2746    --
2747    -- set rounding class
2748    --
2749    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2750                       'REQ_PA_BURDENED';
2751 
2752    --
2753    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2754    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2755    --
2756    -- bulk performance
2757    --
2758    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2759 
2760    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2761       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2762 
2763    -- 4955764
2764    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2765       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2766 
2767    -- 4458381 Public Sector Enh
2768    
2769    --
2770    -- set accounting attributes for the line type
2771    --
2772    l_entered_amt_idx := 28;
2773    l_accted_amt_idx  := 30;
2774    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2775    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2776    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
2777    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
2778    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
2779    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
2780    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
2781    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
2782    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
2783    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
2784    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
2785    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
2786    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
2787    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
2788    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
2789    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
2790    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
2791    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2792    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
2793    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
2794    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
2795    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
2796    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
2797    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2798    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
2799    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
2800    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
2801    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
2802    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
2803    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
2804    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
2805    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
2806    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
2807    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
2808    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
2809    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
2810    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
2811    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
2812    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
2813    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
2814    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
2815    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
2816    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
2817    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
2818    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
2819    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
2820    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
2821    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
2822    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
2823    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
2824    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
2825    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
2826    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
2827    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
2828    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
2829    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
2830    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
2831    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
2832    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
2833    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
2834    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
2835    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
2836    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
2837    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
2838    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
2839    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
2840    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
2841    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
2842    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
2843    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
2844    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
2845 
2846    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2847    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2848 
2849    ---------------------------------------------------------------------------------------------------------------
2850    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2851    ---------------------------------------------------------------------------------------------------------------
2852    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2853 
2854    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2855    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2856 
2857    IF xla_accounting_cache_pkg.GetValueChar
2858          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2859          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2860    AND l_bflow_method_code = 'PRIOR_ENTRY'
2861 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2862    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2863          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2864        )
2865    THEN
2866          xla_ae_lines_pkg.BflowUpgEntry
2867            (p_business_method_code    => l_bflow_method_code
2868            ,p_business_class_code     => l_bflow_class_code
2869            ,p_balance_type            => l_balance_type_code);
2870    ELSE
2871       NULL;
2872 XLA_AE_LINES_PKG.business_flow_validation(
2873                                 p_business_method_code     => l_bflow_method_code
2874                                ,p_business_class_code      => l_bflow_class_code
2875                                ,p_inherit_description_flag => l_inherit_desc_flag);
2876    END IF;
2877 
2878    --
2879    -- call analytical criteria
2880    --
2881    -- Inherited Analytical Criteria for business flow method of Prior Entry.
2882    --
2883    -- call description
2884    --
2885    
2886 xla_ae_lines_pkg.SetLineDescription(
2887    p_ae_header_id => l_ae_header_id
2888   ,p_description  => Description_2 (
2889      p_application_id         => p_application_id
2890    , p_ae_header_id           => l_ae_header_id 
2891 , p_source_3 => p_source_3
2892 , p_source_4 => p_source_4
2893 , p_source_5 => p_source_5
2894 , p_source_6 => p_source_6
2895    )
2896 );
2897 
2898 
2899    --
2900    -- call ADRs
2901    -- Bug 4922099
2902    --
2903    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2904         (NVL(l_actual_upg_option, 'N') = 'O') OR
2905         (NVL(l_enc_upg_option, 'N') = 'O')
2906       )
2907    THEN
2908    NULL;
2909    --
2910    --
2911    
2912    --
2913    --
2914    END IF;
2915    --
2916    -- Bug 4922099
2917    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2918           (NVL(l_enc_upg_option, 'N') = 'O')
2919         ) AND
2920         (l_bflow_method_code = 'PRIOR_ENTRY')
2921       )
2922    THEN
2923       IF
2924       --
2925       1 = 1
2926       --
2927       THEN
2928       xla_accounting_err_pkg.build_message
2929                                     (p_appli_s_name            => 'XLA'
2930                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2931                                     ,p_token_1                 => 'LINE_NUMBER'
2932                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2933                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2934                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2935                                                                              l_component_type
2936                                                                             ,l_component_code
2937                                                                             ,l_component_type_code
2938                                                                             ,l_component_appl_id
2939                                                                             ,l_amb_context_code
2940                                                                             ,l_entity_code
2941                                                                             ,l_event_class_code
2942                                                                            )
2943                                     ,p_token_3                 => 'OWNER'
2944                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2945                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2946                                                                           ,p_lookup_code    => l_component_type_code
2947                                                                          )
2948                                     ,p_token_4                 => 'PRODUCT_NAME'
2949                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2950                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2951                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2952                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2953                                     ,p_ae_header_id            =>  NULL
2954                                        );
2955 
2956         IF (C_LEVEL_ERROR>= g_log_level) THEN
2957                  trace
2958                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2959                       ,p_level    => C_LEVEL_ERROR
2960                       ,p_module   => l_log_module);
2961         END IF;
2962       END IF;
2963    END IF;
2964    --
2965    --
2966    ------------------------------------------------------------------------------------------------
2967    -- 4219869 Business Flow
2968    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2969    -- Prior Entry.  Currently, the following code is always generated.
2970    ------------------------------------------------------------------------------------------------
2971    -- No ValidateCurrentLine for business flow method of Prior Entry
2972 
2973    ------------------------------------------------------------------------------------
2974    -- 4219869 Business Flow
2975    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2976    ------------------------------------------------------------------------------------
2977    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2978 
2979    ----------------------------------------------------------------------------------
2980    -- 4219869 Business Flow
2981    -- Update journal entry status -- Need to generate this within IF <condition>
2982    ----------------------------------------------------------------------------------
2983    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2984          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2985          ,p_balance_type_code => l_balance_type_code
2986          );
2987 
2988    -------------------------------------------------------------------------------------------
2989    -- 4262811 - Generate the Accrual Reversal lines
2990    -------------------------------------------------------------------------------------------
2991    BEGIN
2992       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2993                               (g_array_event(p_event_id).array_value_num('header_index'));
2994       IF l_acc_rev_flag IS NULL THEN
2995          l_acc_rev_flag := 'N';
2996       END IF;
2997    EXCEPTION
2998       WHEN OTHERS THEN
2999          l_acc_rev_flag := 'N';
3000    END;
3001    --
3002    IF (l_acc_rev_flag = 'Y') THEN
3003 
3004        -- 4645092  ------------------------------------------------------------------------------
3005        -- To allow MPA report to determine if it should generate report process
3006        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3007        ------------------------------------------------------------------------------------------
3008 
3009        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3010        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3011 
3012        --
3013        -- Update the line information that should be overwritten
3014        --
3015        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3016                                          p_header_num   => 1);
3017        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3018 
3019        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3020 
3021        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3022           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3023        END IF;
3024 
3025       --
3026       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3027       --
3028       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3029           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3030       ELSE
3031           ---------------------------------------------------------------------------------------------------
3032           -- 4262811a Switch Sign
3033           ---------------------------------------------------------------------------------------------------
3034           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3035           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3036                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3037           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3038                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3039           -- 5132302
3040           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3041                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3042 
3043       END IF;
3044 
3045       -- 4955764
3046       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3047       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3048 
3049 
3050       XLA_AE_LINES_PKG.ValidateCurrentLine;
3051       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3052 
3053       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3054                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3055                ,p_balance_type_code => l_balance_type_code);
3056 
3057    END IF;
3058 
3059    -----------------------------------------------------------------------------------------
3060    -- 4262811 Multiperiod Accounting
3061    -----------------------------------------------------------------------------------------
3062      -- No MPA option is assigned.
3063 
3064 
3065 END IF;
3066 END IF;
3067 --
3068 
3069 --
3070 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3071    trace
3072       (p_msg      => 'END of AcctLineType_11'
3073       ,p_level    => C_LEVEL_PROCEDURE
3074       ,p_module   => l_log_module);
3075 END IF;
3076 --
3077 EXCEPTION
3078   WHEN xla_exceptions_pkg.application_exception THEN
3079       RAISE;
3080   WHEN OTHERS THEN
3081        xla_exceptions_pkg.raise_message
3082            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_11');
3083 END AcctLineType_11;
3084 --
3085 
3086 ---------------------------------------
3087 --
3088 -- PRIVATE FUNCTION
3089 --         AcctLineType_12
3090 --
3091 ---------------------------------------
3092 PROCEDURE AcctLineType_12 (
3093   p_application_id        IN NUMBER
3094  ,p_event_id              IN NUMBER
3095  ,p_calculate_acctd_flag  IN VARCHAR2
3096  ,p_calculate_g_l_flag    IN VARCHAR2
3097  ,p_actual_flag           IN OUT VARCHAR2
3098  ,p_balance_type_code     OUT VARCHAR2
3099  ,p_gain_or_loss_ref      OUT VARCHAR2
3100  
3101 --Project Name
3102  , p_source_3            IN VARCHAR2
3103 --Task Name
3104  , p_source_4            IN VARCHAR2
3105 --Project Expenditure Organization Identifier
3106  , p_source_5            IN NUMBER
3107 --Expenditure Type
3108  , p_source_6            IN VARCHAR2
3109 --Document Type
3110  , p_source_9            IN VARCHAR2
3111 --Main Or Backing Code
3112  , p_source_13            IN VARCHAR2
3113 --Burden Record Identifier
3114  , p_source_14            IN VARCHAR2
3115  , p_source_14_meaning    IN VARCHAR2
3116 --Burden Amount Display Method
3117  , p_source_15            IN VARCHAR2
3118 --Accounting Reversal Flag
3119  , p_source_16            IN VARCHAR2
3120 --Allocated to Application Identifier
3121  , p_source_17            IN NUMBER
3122 --Allocated to Distribution Type
3123  , p_source_18            IN VARCHAR2
3124 --Allocated to Entity Code
3125  , p_source_19            IN VARCHAR2
3126 --Allocated to First Distribution Identifier
3127  , p_source_20            IN NUMBER
3128 --Allocated to First System Transaction Identifier
3129  , p_source_21            IN NUMBER
3130 --Allocated to Second Distribution Identifier
3131  , p_source_22            IN VARCHAR2
3132 --Purchase Order Burden Applied to Application Identifier
3133  , p_source_23            IN NUMBER
3134 --PO Distribution Type
3135  , p_source_24            IN VARCHAR2
3136 --Purchase Order Burden Applied to Entity Code
3137  , p_source_25            IN VARCHAR2
3138 --Purchase Order Burden Applied to First Distribution Identifier
3139  , p_source_26            IN NUMBER
3140 --Purchase Order Burden Applied to First System Transaction Identifier
3141  , p_source_27            IN NUMBER
3142 --Purchase Order Burden Applied to Second Distribution Identifier
3143  , p_source_28            IN VARCHAR2
3144 --PO Distribution Identifier
3145  , p_source_29            IN NUMBER
3146 --Line Type Name
3147  , p_source_30            IN VARCHAR2
3148 --Encumbrance Upgrade Credit Accounting Class
3149  , p_source_31            IN VARCHAR2
3150 --Encumbrance Upgrade Credit Account
3151  , p_source_32            IN NUMBER
3152 --Entered Amount
3153  , p_source_33            IN NUMBER
3154 --Currency Code
3155  , p_source_34            IN VARCHAR2
3156 --Accounted Amount
3157  , p_source_35            IN NUMBER
3158 --Encumbrance Upgrade Debit Accounting Class
3159  , p_source_36            IN VARCHAR2
3160 --Encumbrance Upgrade Debit Account
3161  , p_source_37            IN NUMBER
3162 --Use Encumbrances Upgrade Attributes Flag
3163  , p_source_38            IN VARCHAR2
3164 --Encumbrance Upgrade Credit Encumbrance Type
3165  , p_source_39            IN NUMBER
3166 --Encumbrance Upgrade Debit Encumbrance Type
3167  , p_source_40            IN NUMBER
3168 )
3169 IS
3170 
3171 l_component_type              VARCHAR2(80);
3172 l_component_code              VARCHAR2(30);
3173 l_component_type_code         VARCHAR2(1);
3174 l_component_appl_id           INTEGER;
3175 l_amb_context_code            VARCHAR2(30);
3176 l_entity_code                 VARCHAR2(30);
3177 l_event_class_code            VARCHAR2(30);
3178 l_ae_header_id                NUMBER;
3179 l_event_type_code             VARCHAR2(30);
3180 l_line_definition_code        VARCHAR2(30);
3181 l_line_definition_owner_code  VARCHAR2(1);
3182 --
3183 -- adr variables
3184 l_segment                     VARCHAR2(30);
3185 l_ccid                        NUMBER;
3186 l_adr_transaction_coa_id      NUMBER;
3187 l_adr_accounting_coa_id       NUMBER;
3188 l_adr_flexfield_segment_code  VARCHAR2(30);
3189 l_adr_flex_value_set_id       NUMBER;
3190 l_adr_value_type_code         VARCHAR2(30);
3191 l_adr_value_combination_id    NUMBER;
3192 l_adr_value_segment_code      VARCHAR2(30);
3193 
3194 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3195 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3196 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3197 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3198 
3199 -- 4262811 Variables ------------------------------------------------------------------------------------------
3200 l_entered_amt_idx             NUMBER;
3201 l_accted_amt_idx              NUMBER;
3202 l_acc_rev_flag                VARCHAR2(1);
3203 l_accrual_line_num            NUMBER;
3204 l_tmp_amt                     NUMBER;
3205 l_acc_rev_natural_side_code   VARCHAR2(1);
3206 
3207 l_num_entries                 NUMBER;
3208 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3209 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3210 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3211 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3212 l_recog_line_1                NUMBER;
3213 l_recog_line_2                NUMBER;
3214 
3215 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3216 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3217 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3218 
3219 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3220 
3221 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3222 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3223 
3224 ---------------------------------------------------------------------------------------------------------------
3225 
3226 
3227 --
3228 -- bulk performance
3229 --
3230 l_balance_type_code           VARCHAR2(1);
3231 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3232 l_log_module                  VARCHAR2(240);
3233 
3234 --
3235 -- Upgrade strategy
3236 --
3237 l_actual_upg_option           VARCHAR2(1);
3238 l_enc_upg_option           VARCHAR2(1);
3239 
3240 --
3241 BEGIN
3242 --
3243 IF g_log_enabled THEN
3244       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
3245 END IF;
3246 --
3247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3248 
3249       trace
3250          (p_msg      => 'BEGIN of AcctLineType_12'
3251          ,p_level    => C_LEVEL_PROCEDURE
3252          ,p_module   => l_log_module);
3253 
3254 END IF;
3255 --
3256 l_component_type             := 'AMB_JLT';
3257 l_component_code             := 'CANCEL_BURDEN_ RELEASE_ENC';
3258 l_component_type_code        := 'S';
3259 l_component_appl_id          :=  201;
3260 l_amb_context_code           := 'DEFAULT';
3261 l_entity_code                := 'RELEASE';
3262 l_event_class_code           := 'RELEASE_BURDEN';
3263 l_event_type_code            := 'RELEASE_BURDEN_ALL';
3264 l_line_definition_owner_code := 'S';
3265 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
3266 --
3267 l_balance_type_code          := 'E';
3268 l_segment                     := NULL;
3269 l_ccid                        := NULL;
3270 l_adr_transaction_coa_id      := NULL;
3271 l_adr_accounting_coa_id       := NULL;
3272 l_adr_flexfield_segment_code  := NULL;
3273 l_adr_flex_value_set_id       := NULL;
3274 l_adr_value_type_code         := NULL;
3275 l_adr_value_combination_id    := NULL;
3276 l_adr_value_segment_code      := NULL;
3277 
3278 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3279 l_bflow_class_code           := 'REL_PA_BURDEN_ENC';    -- 4219869 Business Flow
3280 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3281 l_budgetary_control_flag     := 'Y';
3282 
3283 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3284 l_bflow_applied_to_amt       := NULL; -- 5132302
3285 l_entered_amt_idx            := NULL;          -- 4262811
3286 l_accted_amt_idx             := NULL;          -- 4262811
3287 l_acc_rev_flag               := NULL;          -- 4262811
3288 l_accrual_line_num           := NULL;          -- 4262811
3289 l_tmp_amt                    := NULL;          -- 4262811
3290 --
3291  
3292 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3293     l_balance_type_code <> 'B' THEN
3294 IF (NVL(
3295 xla_ae_sources_pkg.GetSystemSourceChar(
3296    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3297  , p_source_type_code      => 'Y'
3298  , p_source_application_id =>  602
3299 ),'
3300 ') =  'REL_BURDEN_CANCELLED' OR 
3301 NVL(
3302 xla_ae_sources_pkg.GetSystemSourceChar(
3303    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3304  , p_source_type_code      => 'Y'
3305  , p_source_application_id =>  602
3306 ),'
3307 ') =  'REL_BURDEN_CR_MEMO_CANCELLED') AND 
3308 NVL(p_source_13,'
3309 ') =  'M' AND 
3310 NVL(p_source_14,'
3311 ') =  'O' AND 
3312 NVL(p_source_9,'
3313 ') =  'PO' AND 
3314 NVL(p_source_15,'
3315 ') =  'D'
3316  THEN 
3317 
3318    --
3319    XLA_AE_LINES_PKG.SetNewLine;
3320 
3321    p_balance_type_code          := l_balance_type_code;
3322    -- set the flag so later we will know whether the gain loss line needs to be created
3323    
3324    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3325      p_actual_flag :='A';
3326    END IF;
3327 
3328    --
3329    -- bulk performance
3330    --
3331    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3332                                       p_header_num   => 0); -- 4262811
3333    --
3334    -- set accounting line options
3335    --
3336    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3337            p_natural_side_code          => 'D'
3338          , p_gain_or_loss_flag          => 'N'
3339          , p_gl_transfer_mode_code      => 'S'
3340          , p_acct_entry_type_code       => 'E'
3341          , p_switch_side_flag           => 'N'
3342          , p_merge_duplicate_code       => 'N'
3343          );
3344    --
3345    l_acc_rev_natural_side_code := 'C';  -- 4262811
3346    -- 
3347    --
3348    -- set accounting line type info
3349    --
3350    xla_ae_lines_pkg.SetAcctLineType
3351       (p_component_type             => l_component_type
3352       ,p_event_type_code            => l_event_type_code
3353       ,p_line_definition_owner_code => l_line_definition_owner_code
3354       ,p_line_definition_code       => l_line_definition_code
3355       ,p_accounting_line_code       => l_component_code
3356       ,p_accounting_line_type_code  => l_component_type_code
3357       ,p_accounting_line_appl_id    => l_component_appl_id
3358       ,p_amb_context_code           => l_amb_context_code
3359       ,p_entity_code                => l_entity_code
3360       ,p_event_class_code           => l_event_class_code);
3361    --
3362    -- set accounting class
3363    --
3364    xla_ae_lines_pkg.SetAcctClass(
3365            p_accounting_class_code  => 'PO_PA_BURDEN'
3366          , p_ae_header_id           => l_ae_header_id
3367          );
3368 
3369    --
3370    -- set rounding class
3371    --
3372    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3373                       'PO_PA_BURDEN';
3374 
3375    --
3376    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3377    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3378    --
3379    -- bulk performance
3380    --
3381    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3382 
3383    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3384       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3385 
3386    -- 4955764
3387    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3388       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3389 
3390    -- 4458381 Public Sector Enh
3391    
3392    --
3393    -- set accounting attributes for the line type
3394    --
3395    l_entered_amt_idx := 28;
3396    l_accted_amt_idx  := 30;
3397    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3398    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3399    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
3400    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
3401    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
3402    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
3403    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
3404    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
3405    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
3406    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
3407    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
3408    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
3409    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
3410    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
3411    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
3412    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
3413    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
3414    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3415    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
3416    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
3417    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
3418    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
3419    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
3420    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3421    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
3422    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
3423    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
3424    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
3425    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
3426    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
3427    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
3428    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
3429    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
3430    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
3431    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
3432    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
3433    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
3434    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
3435    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
3436    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
3437    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
3438    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
3439    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
3440    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
3441    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
3442    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
3443    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
3444    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
3445    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
3446    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
3447    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
3448    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
3449    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
3450    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
3451    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
3452    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
3453    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
3454    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
3455    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
3456    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
3457    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
3458    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
3459    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
3460    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
3461    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
3462    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
3463    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
3464    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
3465    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
3466    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
3467    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
3468 
3469    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3470    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3471 
3472    ---------------------------------------------------------------------------------------------------------------
3473    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3474    ---------------------------------------------------------------------------------------------------------------
3475    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3476 
3477    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3478    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3479 
3480    IF xla_accounting_cache_pkg.GetValueChar
3481          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3482          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3483    AND l_bflow_method_code = 'PRIOR_ENTRY'
3484 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3485    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3486          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3487        )
3488    THEN
3489          xla_ae_lines_pkg.BflowUpgEntry
3490            (p_business_method_code    => l_bflow_method_code
3491            ,p_business_class_code     => l_bflow_class_code
3492            ,p_balance_type            => l_balance_type_code);
3493    ELSE
3494       NULL;
3495 XLA_AE_LINES_PKG.business_flow_validation(
3496                                 p_business_method_code     => l_bflow_method_code
3497                                ,p_business_class_code      => l_bflow_class_code
3498                                ,p_inherit_description_flag => l_inherit_desc_flag);
3499    END IF;
3500 
3501    --
3502    -- call analytical criteria
3503    --
3504    -- Inherited Analytical Criteria for business flow method of Prior Entry.
3505    --
3506    -- call description
3507    --
3508    
3509 xla_ae_lines_pkg.SetLineDescription(
3510    p_ae_header_id => l_ae_header_id
3511   ,p_description  => Description_2 (
3512      p_application_id         => p_application_id
3513    , p_ae_header_id           => l_ae_header_id 
3514 , p_source_3 => p_source_3
3515 , p_source_4 => p_source_4
3516 , p_source_5 => p_source_5
3517 , p_source_6 => p_source_6
3518    )
3519 );
3520 
3521 
3522    --
3523    -- call ADRs
3524    -- Bug 4922099
3525    --
3526    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3527         (NVL(l_actual_upg_option, 'N') = 'O') OR
3528         (NVL(l_enc_upg_option, 'N') = 'O')
3529       )
3530    THEN
3531    NULL;
3532    --
3533    --
3534    
3535    --
3536    --
3537    END IF;
3538    --
3539    -- Bug 4922099
3540    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3541           (NVL(l_enc_upg_option, 'N') = 'O')
3542         ) AND
3543         (l_bflow_method_code = 'PRIOR_ENTRY')
3544       )
3545    THEN
3546       IF
3547       --
3548       1 = 1
3549       --
3550       THEN
3551       xla_accounting_err_pkg.build_message
3552                                     (p_appli_s_name            => 'XLA'
3553                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3554                                     ,p_token_1                 => 'LINE_NUMBER'
3555                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3556                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3557                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3558                                                                              l_component_type
3559                                                                             ,l_component_code
3560                                                                             ,l_component_type_code
3561                                                                             ,l_component_appl_id
3562                                                                             ,l_amb_context_code
3563                                                                             ,l_entity_code
3564                                                                             ,l_event_class_code
3565                                                                            )
3566                                     ,p_token_3                 => 'OWNER'
3567                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3568                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3569                                                                           ,p_lookup_code    => l_component_type_code
3570                                                                          )
3571                                     ,p_token_4                 => 'PRODUCT_NAME'
3572                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3573                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3574                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3575                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3576                                     ,p_ae_header_id            =>  NULL
3577                                        );
3578 
3579         IF (C_LEVEL_ERROR>= g_log_level) THEN
3580                  trace
3581                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3582                       ,p_level    => C_LEVEL_ERROR
3583                       ,p_module   => l_log_module);
3584         END IF;
3585       END IF;
3586    END IF;
3587    --
3588    --
3589    ------------------------------------------------------------------------------------------------
3590    -- 4219869 Business Flow
3591    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3592    -- Prior Entry.  Currently, the following code is always generated.
3593    ------------------------------------------------------------------------------------------------
3594    -- No ValidateCurrentLine for business flow method of Prior Entry
3595 
3596    ------------------------------------------------------------------------------------
3597    -- 4219869 Business Flow
3598    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3599    ------------------------------------------------------------------------------------
3600    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3601 
3602    ----------------------------------------------------------------------------------
3603    -- 4219869 Business Flow
3604    -- Update journal entry status -- Need to generate this within IF <condition>
3605    ----------------------------------------------------------------------------------
3606    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3607          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3608          ,p_balance_type_code => l_balance_type_code
3609          );
3610 
3611    -------------------------------------------------------------------------------------------
3612    -- 4262811 - Generate the Accrual Reversal lines
3613    -------------------------------------------------------------------------------------------
3614    BEGIN
3615       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3616                               (g_array_event(p_event_id).array_value_num('header_index'));
3617       IF l_acc_rev_flag IS NULL THEN
3618          l_acc_rev_flag := 'N';
3619       END IF;
3620    EXCEPTION
3621       WHEN OTHERS THEN
3622          l_acc_rev_flag := 'N';
3623    END;
3624    --
3625    IF (l_acc_rev_flag = 'Y') THEN
3626 
3627        -- 4645092  ------------------------------------------------------------------------------
3628        -- To allow MPA report to determine if it should generate report process
3629        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3630        ------------------------------------------------------------------------------------------
3631 
3632        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3633        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3634 
3635        --
3636        -- Update the line information that should be overwritten
3637        --
3638        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3639                                          p_header_num   => 1);
3640        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3641 
3642        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3643 
3644        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3645           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3646        END IF;
3647 
3648       --
3649       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3650       --
3651       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3652           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3653       ELSE
3654           ---------------------------------------------------------------------------------------------------
3655           -- 4262811a Switch Sign
3656           ---------------------------------------------------------------------------------------------------
3657           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3658           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3659                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3660           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3661                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3662           -- 5132302
3663           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3664                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3665 
3666       END IF;
3667 
3668       -- 4955764
3669       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3670       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3671 
3672 
3673       XLA_AE_LINES_PKG.ValidateCurrentLine;
3674       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3675 
3676       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3677                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3678                ,p_balance_type_code => l_balance_type_code);
3679 
3680    END IF;
3681 
3682    -----------------------------------------------------------------------------------------
3683    -- 4262811 Multiperiod Accounting
3684    -----------------------------------------------------------------------------------------
3685      -- No MPA option is assigned.
3686 
3687 
3688 END IF;
3689 END IF;
3690 --
3691 
3692 --
3693 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3694    trace
3695       (p_msg      => 'END of AcctLineType_12'
3696       ,p_level    => C_LEVEL_PROCEDURE
3697       ,p_module   => l_log_module);
3698 END IF;
3699 --
3700 EXCEPTION
3701   WHEN xla_exceptions_pkg.application_exception THEN
3702       RAISE;
3703   WHEN OTHERS THEN
3704        xla_exceptions_pkg.raise_message
3705            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_12');
3706 END AcctLineType_12;
3707 --
3708 
3709 ---------------------------------------
3710 --
3711 -- PRIVATE FUNCTION
3712 --         AcctLineType_13
3713 --
3714 ---------------------------------------
3715 PROCEDURE AcctLineType_13 (
3716   p_application_id        IN NUMBER
3717  ,p_event_id              IN NUMBER
3718  ,p_calculate_acctd_flag  IN VARCHAR2
3719  ,p_calculate_g_l_flag    IN VARCHAR2
3720  ,p_actual_flag           IN OUT VARCHAR2
3721  ,p_balance_type_code     OUT VARCHAR2
3722  ,p_gain_or_loss_ref      OUT VARCHAR2
3723  
3724 --Project Name
3725  , p_source_3            IN VARCHAR2
3726 --Task Name
3727  , p_source_4            IN VARCHAR2
3728 --Project Expenditure Organization Identifier
3729  , p_source_5            IN NUMBER
3730 --Expenditure Type
3731  , p_source_6            IN VARCHAR2
3732 --Document Type
3733  , p_source_9            IN VARCHAR2
3734 --Main Or Backing Code
3735  , p_source_13            IN VARCHAR2
3736 --Burden Record Identifier
3737  , p_source_14            IN VARCHAR2
3738  , p_source_14_meaning    IN VARCHAR2
3739 --Burden Amount Display Method
3740  , p_source_15            IN VARCHAR2
3741 --Accounting Reversal Flag
3742  , p_source_16            IN VARCHAR2
3743 --Allocated to Application Identifier
3744  , p_source_17            IN NUMBER
3745 --Allocated to Distribution Type
3746  , p_source_18            IN VARCHAR2
3747 --Allocated to Entity Code
3748  , p_source_19            IN VARCHAR2
3749 --Allocated to First Distribution Identifier
3750  , p_source_20            IN NUMBER
3751 --Allocated to First System Transaction Identifier
3752  , p_source_21            IN NUMBER
3753 --Purchase Order Burden Applied to Application Identifier
3754  , p_source_23            IN NUMBER
3755 --PO Distribution Type
3756  , p_source_24            IN VARCHAR2
3757 --Purchase Order Burden Applied to Entity Code
3758  , p_source_25            IN VARCHAR2
3759 --Purchase Order Burden Applied to First Distribution Identifier
3760  , p_source_26            IN NUMBER
3761 --Purchase Order Burden Applied to First System Transaction Identifier
3762  , p_source_27            IN NUMBER
3763 --Purchase Order Burden Applied to Second Distribution Identifier
3764  , p_source_28            IN VARCHAR2
3765 --PO Distribution Identifier
3766  , p_source_29            IN NUMBER
3767 --Line Type Name
3768  , p_source_30            IN VARCHAR2
3769 --Encumbrance Upgrade Credit Accounting Class
3770  , p_source_31            IN VARCHAR2
3771 --Encumbrance Upgrade Credit Account
3772  , p_source_32            IN NUMBER
3773 --Entered Amount
3774  , p_source_33            IN NUMBER
3775 --Currency Code
3776  , p_source_34            IN VARCHAR2
3777 --Accounted Amount
3778  , p_source_35            IN NUMBER
3779 --Encumbrance Upgrade Debit Accounting Class
3780  , p_source_36            IN VARCHAR2
3781 --Encumbrance Upgrade Debit Account
3782  , p_source_37            IN NUMBER
3783 --Use Encumbrances Upgrade Attributes Flag
3784  , p_source_38            IN VARCHAR2
3785 --Encumbrance Upgrade Credit Encumbrance Type
3786  , p_source_39            IN NUMBER
3787 --Encumbrance Upgrade Debit Encumbrance Type
3788  , p_source_40            IN NUMBER
3789 )
3790 IS
3791 
3792 l_component_type              VARCHAR2(80);
3793 l_component_code              VARCHAR2(30);
3794 l_component_type_code         VARCHAR2(1);
3795 l_component_appl_id           INTEGER;
3796 l_amb_context_code            VARCHAR2(30);
3797 l_entity_code                 VARCHAR2(30);
3798 l_event_class_code            VARCHAR2(30);
3799 l_ae_header_id                NUMBER;
3800 l_event_type_code             VARCHAR2(30);
3801 l_line_definition_code        VARCHAR2(30);
3802 l_line_definition_owner_code  VARCHAR2(1);
3803 --
3804 -- adr variables
3805 l_segment                     VARCHAR2(30);
3806 l_ccid                        NUMBER;
3807 l_adr_transaction_coa_id      NUMBER;
3808 l_adr_accounting_coa_id       NUMBER;
3809 l_adr_flexfield_segment_code  VARCHAR2(30);
3810 l_adr_flex_value_set_id       NUMBER;
3811 l_adr_value_type_code         VARCHAR2(30);
3812 l_adr_value_combination_id    NUMBER;
3813 l_adr_value_segment_code      VARCHAR2(30);
3814 
3815 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3816 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3817 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3818 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3819 
3820 -- 4262811 Variables ------------------------------------------------------------------------------------------
3821 l_entered_amt_idx             NUMBER;
3822 l_accted_amt_idx              NUMBER;
3823 l_acc_rev_flag                VARCHAR2(1);
3824 l_accrual_line_num            NUMBER;
3825 l_tmp_amt                     NUMBER;
3826 l_acc_rev_natural_side_code   VARCHAR2(1);
3827 
3828 l_num_entries                 NUMBER;
3829 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3830 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3831 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3832 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3833 l_recog_line_1                NUMBER;
3834 l_recog_line_2                NUMBER;
3835 
3836 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3837 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3838 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3839 
3840 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3841 
3842 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3843 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3844 
3845 ---------------------------------------------------------------------------------------------------------------
3846 
3847 
3848 --
3849 -- bulk performance
3850 --
3851 l_balance_type_code           VARCHAR2(1);
3852 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3853 l_log_module                  VARCHAR2(240);
3854 
3855 --
3856 -- Upgrade strategy
3857 --
3858 l_actual_upg_option           VARCHAR2(1);
3859 l_enc_upg_option           VARCHAR2(1);
3860 
3861 --
3862 BEGIN
3863 --
3864 IF g_log_enabled THEN
3865       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
3866 END IF;
3867 --
3868 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3869 
3870       trace
3871          (p_msg      => 'BEGIN of AcctLineType_13'
3872          ,p_level    => C_LEVEL_PROCEDURE
3873          ,p_module   => l_log_module);
3874 
3875 END IF;
3876 --
3877 l_component_type             := 'AMB_JLT';
3878 l_component_code             := 'CANCEL_BURDEN_PO_ENC';
3879 l_component_type_code        := 'S';
3880 l_component_appl_id          :=  201;
3881 l_amb_context_code           := 'DEFAULT';
3882 l_entity_code                := 'PURCHASE_ORDER';
3883 l_event_class_code           := 'PO_BURDEN';
3884 l_event_type_code            := 'PO_BURDEN_ALL';
3885 l_line_definition_owner_code := 'S';
3886 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
3887 --
3888 l_balance_type_code          := 'E';
3889 l_segment                     := NULL;
3890 l_ccid                        := NULL;
3891 l_adr_transaction_coa_id      := NULL;
3892 l_adr_accounting_coa_id       := NULL;
3893 l_adr_flexfield_segment_code  := NULL;
3894 l_adr_flex_value_set_id       := NULL;
3895 l_adr_value_type_code         := NULL;
3896 l_adr_value_combination_id    := NULL;
3897 l_adr_value_segment_code      := NULL;
3898 
3899 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3900 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
3901 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3902 l_budgetary_control_flag     := 'Y';
3903 
3904 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3905 l_bflow_applied_to_amt       := NULL; -- 5132302
3906 l_entered_amt_idx            := NULL;          -- 4262811
3907 l_accted_amt_idx             := NULL;          -- 4262811
3908 l_acc_rev_flag               := NULL;          -- 4262811
3909 l_accrual_line_num           := NULL;          -- 4262811
3910 l_tmp_amt                    := NULL;          -- 4262811
3911 --
3912  
3913 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3914     l_balance_type_code <> 'B' THEN
3915 IF (NVL(
3916 xla_ae_sources_pkg.GetSystemSourceChar(
3917    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3918  , p_source_type_code      => 'Y'
3919  , p_source_application_id =>  602
3920 ),'
3921 ') =  'PO_BURDEN_CANCELLED' OR 
3922 NVL(
3923 xla_ae_sources_pkg.GetSystemSourceChar(
3924    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3925  , p_source_type_code      => 'Y'
3926  , p_source_application_id =>  602
3927 ),'
3928 ') =  'PO_BURDEN_CR_MEMO_CANCELLED') AND 
3929 NVL(p_source_13,'
3930 ') =  'M' AND 
3931 NVL(p_source_14,'
3932 ') =  'O' AND 
3933 NVL(p_source_9,'
3934 ') =  'PO' AND 
3935 NVL(p_source_15,'
3936 ') =  'D'
3937  THEN 
3938 
3939    --
3940    XLA_AE_LINES_PKG.SetNewLine;
3941 
3942    p_balance_type_code          := l_balance_type_code;
3943    -- set the flag so later we will know whether the gain loss line needs to be created
3944    
3945    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3946      p_actual_flag :='A';
3947    END IF;
3948 
3949    --
3950    -- bulk performance
3951    --
3952    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3953                                       p_header_num   => 0); -- 4262811
3954    --
3955    -- set accounting line options
3956    --
3957    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3958            p_natural_side_code          => 'D'
3959          , p_gain_or_loss_flag          => 'N'
3960          , p_gl_transfer_mode_code      => 'S'
3961          , p_acct_entry_type_code       => 'E'
3962          , p_switch_side_flag           => 'N'
3963          , p_merge_duplicate_code       => 'N'
3964          );
3965    --
3966    l_acc_rev_natural_side_code := 'C';  -- 4262811
3967    -- 
3968    --
3969    -- set accounting line type info
3970    --
3971    xla_ae_lines_pkg.SetAcctLineType
3972       (p_component_type             => l_component_type
3973       ,p_event_type_code            => l_event_type_code
3974       ,p_line_definition_owner_code => l_line_definition_owner_code
3975       ,p_line_definition_code       => l_line_definition_code
3976       ,p_accounting_line_code       => l_component_code
3977       ,p_accounting_line_type_code  => l_component_type_code
3978       ,p_accounting_line_appl_id    => l_component_appl_id
3979       ,p_amb_context_code           => l_amb_context_code
3980       ,p_entity_code                => l_entity_code
3981       ,p_event_class_code           => l_event_class_code);
3982    --
3983    -- set accounting class
3984    --
3985    xla_ae_lines_pkg.SetAcctClass(
3986            p_accounting_class_code  => 'PO_PA_BURDEN'
3987          , p_ae_header_id           => l_ae_header_id
3988          );
3989 
3990    --
3991    -- set rounding class
3992    --
3993    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3994                       'PO_PA_BURDEN';
3995 
3996    --
3997    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3998    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3999    --
4000    -- bulk performance
4001    --
4002    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4003 
4004    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4005       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4006 
4007    -- 4955764
4008    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4009       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4010 
4011    -- 4458381 Public Sector Enh
4012    
4013    --
4014    -- set accounting attributes for the line type
4015    --
4016    l_entered_amt_idx := 27;
4017    l_accted_amt_idx  := 29;
4018    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4019    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4020    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
4021    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
4022    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
4023    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
4024    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
4025    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
4026    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
4027    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
4028    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
4029    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
4030    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
4031    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
4032    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
4033    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4034    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
4035    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
4036    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
4037    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
4038    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
4039    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4040    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
4041    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
4042    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
4043    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
4044    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
4045    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
4046    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
4047    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
4048    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
4049    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
4050    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
4051    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
4052    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
4053    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
4054    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
4055    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
4056    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
4057    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
4058    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
4059    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
4060    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
4061    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
4062    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
4063    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
4064    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
4065    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
4066    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
4067    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
4068    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
4069    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
4070    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
4071    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
4072    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
4073    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
4074    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
4075    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
4076    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
4077    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
4078    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
4079    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
4080    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
4081    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
4082    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
4083    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
4084    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
4085    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
4086    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
4087 
4088    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4089    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4090 
4091    ---------------------------------------------------------------------------------------------------------------
4092    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4093    ---------------------------------------------------------------------------------------------------------------
4094    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4095 
4096    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4097    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4098 
4099    IF xla_accounting_cache_pkg.GetValueChar
4100          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4101          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4102    AND l_bflow_method_code = 'PRIOR_ENTRY'
4103 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4104    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4105          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4106        )
4107    THEN
4108          xla_ae_lines_pkg.BflowUpgEntry
4109            (p_business_method_code    => l_bflow_method_code
4110            ,p_business_class_code     => l_bflow_class_code
4111            ,p_balance_type            => l_balance_type_code);
4112    ELSE
4113       NULL;
4114 XLA_AE_LINES_PKG.business_flow_validation(
4115                                 p_business_method_code     => l_bflow_method_code
4116                                ,p_business_class_code      => l_bflow_class_code
4117                                ,p_inherit_description_flag => l_inherit_desc_flag);
4118    END IF;
4119 
4120    --
4121    -- call analytical criteria
4122    --
4123    -- Inherited Analytical Criteria for business flow method of Prior Entry.
4124    --
4125    -- call description
4126    --
4127    
4128 xla_ae_lines_pkg.SetLineDescription(
4129    p_ae_header_id => l_ae_header_id
4130   ,p_description  => Description_2 (
4131      p_application_id         => p_application_id
4132    , p_ae_header_id           => l_ae_header_id 
4133 , p_source_3 => p_source_3
4134 , p_source_4 => p_source_4
4135 , p_source_5 => p_source_5
4136 , p_source_6 => p_source_6
4137    )
4138 );
4139 
4140 
4141    --
4142    -- call ADRs
4143    -- Bug 4922099
4144    --
4145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4146         (NVL(l_actual_upg_option, 'N') = 'O') OR
4147         (NVL(l_enc_upg_option, 'N') = 'O')
4148       )
4149    THEN
4150    NULL;
4151    --
4152    --
4153    
4154    --
4155    --
4156    END IF;
4157    --
4158    -- Bug 4922099
4159    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4160           (NVL(l_enc_upg_option, 'N') = 'O')
4161         ) AND
4162         (l_bflow_method_code = 'PRIOR_ENTRY')
4163       )
4164    THEN
4165       IF
4166       --
4167       1 = 1
4168       --
4169       THEN
4170       xla_accounting_err_pkg.build_message
4171                                     (p_appli_s_name            => 'XLA'
4172                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4173                                     ,p_token_1                 => 'LINE_NUMBER'
4174                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4175                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4176                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4177                                                                              l_component_type
4178                                                                             ,l_component_code
4179                                                                             ,l_component_type_code
4180                                                                             ,l_component_appl_id
4181                                                                             ,l_amb_context_code
4182                                                                             ,l_entity_code
4183                                                                             ,l_event_class_code
4184                                                                            )
4185                                     ,p_token_3                 => 'OWNER'
4186                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4187                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4188                                                                           ,p_lookup_code    => l_component_type_code
4189                                                                          )
4190                                     ,p_token_4                 => 'PRODUCT_NAME'
4191                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4192                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4193                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4194                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4195                                     ,p_ae_header_id            =>  NULL
4196                                        );
4197 
4198         IF (C_LEVEL_ERROR>= g_log_level) THEN
4199                  trace
4200                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4201                       ,p_level    => C_LEVEL_ERROR
4202                       ,p_module   => l_log_module);
4203         END IF;
4204       END IF;
4205    END IF;
4206    --
4207    --
4208    ------------------------------------------------------------------------------------------------
4209    -- 4219869 Business Flow
4210    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4211    -- Prior Entry.  Currently, the following code is always generated.
4212    ------------------------------------------------------------------------------------------------
4213    -- No ValidateCurrentLine for business flow method of Prior Entry
4214 
4215    ------------------------------------------------------------------------------------
4216    -- 4219869 Business Flow
4217    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4218    ------------------------------------------------------------------------------------
4219    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4220 
4221    ----------------------------------------------------------------------------------
4222    -- 4219869 Business Flow
4223    -- Update journal entry status -- Need to generate this within IF <condition>
4224    ----------------------------------------------------------------------------------
4225    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4226          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4227          ,p_balance_type_code => l_balance_type_code
4228          );
4229 
4230    -------------------------------------------------------------------------------------------
4231    -- 4262811 - Generate the Accrual Reversal lines
4232    -------------------------------------------------------------------------------------------
4233    BEGIN
4234       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4235                               (g_array_event(p_event_id).array_value_num('header_index'));
4236       IF l_acc_rev_flag IS NULL THEN
4237          l_acc_rev_flag := 'N';
4238       END IF;
4239    EXCEPTION
4240       WHEN OTHERS THEN
4241          l_acc_rev_flag := 'N';
4242    END;
4243    --
4244    IF (l_acc_rev_flag = 'Y') THEN
4245 
4246        -- 4645092  ------------------------------------------------------------------------------
4247        -- To allow MPA report to determine if it should generate report process
4248        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4249        ------------------------------------------------------------------------------------------
4250 
4251        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4252        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4253 
4254        --
4255        -- Update the line information that should be overwritten
4256        --
4257        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4258                                          p_header_num   => 1);
4259        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4260 
4261        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4262 
4263        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4264           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4265        END IF;
4266 
4267       --
4268       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4269       --
4270       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4271           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4272       ELSE
4273           ---------------------------------------------------------------------------------------------------
4274           -- 4262811a Switch Sign
4275           ---------------------------------------------------------------------------------------------------
4276           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4277           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4278                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4279           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4280                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4281           -- 5132302
4282           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4283                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4284 
4285       END IF;
4286 
4287       -- 4955764
4288       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4289       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4290 
4291 
4292       XLA_AE_LINES_PKG.ValidateCurrentLine;
4293       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4294 
4295       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4296                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4297                ,p_balance_type_code => l_balance_type_code);
4298 
4299    END IF;
4300 
4301    -----------------------------------------------------------------------------------------
4302    -- 4262811 Multiperiod Accounting
4303    -----------------------------------------------------------------------------------------
4304      -- No MPA option is assigned.
4305 
4306 
4307 END IF;
4308 END IF;
4309 --
4310 
4311 --
4312 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4313    trace
4314       (p_msg      => 'END of AcctLineType_13'
4315       ,p_level    => C_LEVEL_PROCEDURE
4316       ,p_module   => l_log_module);
4317 END IF;
4318 --
4319 EXCEPTION
4320   WHEN xla_exceptions_pkg.application_exception THEN
4321       RAISE;
4322   WHEN OTHERS THEN
4323        xla_exceptions_pkg.raise_message
4324            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_13');
4325 END AcctLineType_13;
4326 --
4327 
4328 ---------------------------------------
4329 --
4330 -- PRIVATE FUNCTION
4331 --         AcctLineType_14
4332 --
4333 ---------------------------------------
4334 PROCEDURE AcctLineType_14 (
4335   p_application_id        IN NUMBER
4336  ,p_event_id              IN NUMBER
4337  ,p_calculate_acctd_flag  IN VARCHAR2
4338  ,p_calculate_g_l_flag    IN VARCHAR2
4339  ,p_actual_flag           IN OUT VARCHAR2
4340  ,p_balance_type_code     OUT VARCHAR2
4341  ,p_gain_or_loss_ref      OUT VARCHAR2
4342  
4343 --Project Name
4344  , p_source_3            IN VARCHAR2
4345 --Task Name
4346  , p_source_4            IN VARCHAR2
4347 --Project Expenditure Organization Identifier
4348  , p_source_5            IN NUMBER
4349 --Expenditure Type
4350  , p_source_6            IN VARCHAR2
4351 --Main Or Backing Code
4352  , p_source_13            IN VARCHAR2
4353 --Burden Record Identifier
4354  , p_source_14            IN VARCHAR2
4355  , p_source_14_meaning    IN VARCHAR2
4356 --Burden Amount Display Method
4357  , p_source_15            IN VARCHAR2
4358 --Accounting Reversal Flag
4359  , p_source_16            IN VARCHAR2
4360 --Allocated to Application Identifier
4361  , p_source_17            IN NUMBER
4362 --Allocated to Distribution Type
4363  , p_source_18            IN VARCHAR2
4364 --Allocated to Entity Code
4365  , p_source_19            IN VARCHAR2
4366 --Allocated to First Distribution Identifier
4367  , p_source_20            IN NUMBER
4368 --Allocated to First System Transaction Identifier
4369  , p_source_21            IN NUMBER
4370 --Allocated to Second Distribution Identifier
4371  , p_source_22            IN VARCHAR2
4372 --Line Type Name
4373  , p_source_30            IN VARCHAR2
4374 --Encumbrance Upgrade Credit Accounting Class
4375  , p_source_31            IN VARCHAR2
4376 --Encumbrance Upgrade Credit Account
4377  , p_source_32            IN NUMBER
4378 --Entered Amount
4379  , p_source_33            IN NUMBER
4380 --Currency Code
4381  , p_source_34            IN VARCHAR2
4382 --Accounted Amount
4383  , p_source_35            IN NUMBER
4384 --Encumbrance Upgrade Debit Accounting Class
4385  , p_source_36            IN VARCHAR2
4386 --Encumbrance Upgrade Debit Account
4387  , p_source_37            IN NUMBER
4388 --Use Encumbrances Upgrade Attributes Flag
4389  , p_source_38            IN VARCHAR2
4390 --Encumbrance Upgrade Credit Encumbrance Type
4391  , p_source_39            IN NUMBER
4392 --Encumbrance Upgrade Debit Encumbrance Type
4393  , p_source_40            IN NUMBER
4394 --Requisition Burden Applied to Application Identifier
4395  , p_source_41            IN NUMBER
4396 --Requisition Distribution Type
4397  , p_source_42            IN VARCHAR2
4398 --Requisition Burden Applied to Entity Code
4399  , p_source_43            IN VARCHAR2
4400 --Requisition Burden Applied to First Distribution Identifier
4401  , p_source_44            IN NUMBER
4402 --Requisition Burden Applied to First System Transaction Identifier
4403  , p_source_45            IN NUMBER
4404 --Requisition Burden Applied to Second Distribution Identifier
4405  , p_source_46            IN VARCHAR2
4406 --Requisition Distribution Identifier
4407  , p_source_47            IN NUMBER
4408 )
4409 IS
4410 
4411 l_component_type              VARCHAR2(80);
4412 l_component_code              VARCHAR2(30);
4413 l_component_type_code         VARCHAR2(1);
4414 l_component_appl_id           INTEGER;
4415 l_amb_context_code            VARCHAR2(30);
4416 l_entity_code                 VARCHAR2(30);
4417 l_event_class_code            VARCHAR2(30);
4418 l_ae_header_id                NUMBER;
4419 l_event_type_code             VARCHAR2(30);
4420 l_line_definition_code        VARCHAR2(30);
4421 l_line_definition_owner_code  VARCHAR2(1);
4422 --
4423 -- adr variables
4424 l_segment                     VARCHAR2(30);
4425 l_ccid                        NUMBER;
4426 l_adr_transaction_coa_id      NUMBER;
4427 l_adr_accounting_coa_id       NUMBER;
4428 l_adr_flexfield_segment_code  VARCHAR2(30);
4429 l_adr_flex_value_set_id       NUMBER;
4430 l_adr_value_type_code         VARCHAR2(30);
4431 l_adr_value_combination_id    NUMBER;
4432 l_adr_value_segment_code      VARCHAR2(30);
4433 
4434 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4435 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4436 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4437 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4438 
4439 -- 4262811 Variables ------------------------------------------------------------------------------------------
4440 l_entered_amt_idx             NUMBER;
4441 l_accted_amt_idx              NUMBER;
4442 l_acc_rev_flag                VARCHAR2(1);
4443 l_accrual_line_num            NUMBER;
4444 l_tmp_amt                     NUMBER;
4445 l_acc_rev_natural_side_code   VARCHAR2(1);
4446 
4447 l_num_entries                 NUMBER;
4448 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4449 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4450 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4451 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4452 l_recog_line_1                NUMBER;
4453 l_recog_line_2                NUMBER;
4454 
4455 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4456 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4457 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4458 
4459 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4460 
4461 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4462 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4463 
4464 ---------------------------------------------------------------------------------------------------------------
4465 
4466 
4467 --
4468 -- bulk performance
4469 --
4470 l_balance_type_code           VARCHAR2(1);
4471 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4472 l_log_module                  VARCHAR2(240);
4473 
4474 --
4475 -- Upgrade strategy
4476 --
4477 l_actual_upg_option           VARCHAR2(1);
4478 l_enc_upg_option           VARCHAR2(1);
4479 
4480 --
4481 BEGIN
4482 --
4483 IF g_log_enabled THEN
4484       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
4485 END IF;
4486 --
4487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4488 
4489       trace
4490          (p_msg      => 'BEGIN of AcctLineType_14'
4491          ,p_level    => C_LEVEL_PROCEDURE
4492          ,p_module   => l_log_module);
4493 
4494 END IF;
4495 --
4496 l_component_type             := 'AMB_JLT';
4497 l_component_code             := 'CANCEL_BURDEN_REQ_ENC';
4498 l_component_type_code        := 'S';
4499 l_component_appl_id          :=  201;
4500 l_amb_context_code           := 'DEFAULT';
4501 l_entity_code                := 'REQUISITION';
4502 l_event_class_code           := 'REQUISITION_BURDEN';
4503 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
4504 l_line_definition_owner_code := 'S';
4505 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
4506 --
4507 l_balance_type_code          := 'E';
4508 l_segment                     := NULL;
4509 l_ccid                        := NULL;
4510 l_adr_transaction_coa_id      := NULL;
4511 l_adr_accounting_coa_id       := NULL;
4512 l_adr_flexfield_segment_code  := NULL;
4513 l_adr_flex_value_set_id       := NULL;
4514 l_adr_value_type_code         := NULL;
4515 l_adr_value_combination_id    := NULL;
4516 l_adr_value_segment_code      := NULL;
4517 
4518 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
4519 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
4520 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4521 l_budgetary_control_flag     := 'Y';
4522 
4523 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4524 l_bflow_applied_to_amt       := NULL; -- 5132302
4525 l_entered_amt_idx            := NULL;          -- 4262811
4526 l_accted_amt_idx             := NULL;          -- 4262811
4527 l_acc_rev_flag               := NULL;          -- 4262811
4528 l_accrual_line_num           := NULL;          -- 4262811
4529 l_tmp_amt                    := NULL;          -- 4262811
4530 --
4531  
4532 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4533     l_balance_type_code <> 'B' THEN
4534 IF NVL(
4535 xla_ae_sources_pkg.GetSystemSourceChar(
4536    p_source_code           => 'XLA_EVENT_TYPE_CODE'
4537  , p_source_type_code      => 'Y'
4538  , p_source_application_id =>  602
4539 ),'
4540 ') =  'REQ_BURDEN_CANCELLED' AND 
4541 NVL(p_source_13,'
4542 ') =  'M' AND 
4543 NVL(p_source_14,'
4544 ') =  'O' AND 
4545 NVL(p_source_15,'
4546 ') =  'D'
4547  THEN 
4548 
4549    --
4550    XLA_AE_LINES_PKG.SetNewLine;
4551 
4552    p_balance_type_code          := l_balance_type_code;
4553    -- set the flag so later we will know whether the gain loss line needs to be created
4554    
4555    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4556      p_actual_flag :='A';
4557    END IF;
4558 
4559    --
4560    -- bulk performance
4561    --
4562    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4563                                       p_header_num   => 0); -- 4262811
4564    --
4565    -- set accounting line options
4566    --
4567    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4568            p_natural_side_code          => 'D'
4569          , p_gain_or_loss_flag          => 'N'
4570          , p_gl_transfer_mode_code      => 'S'
4571          , p_acct_entry_type_code       => 'E'
4572          , p_switch_side_flag           => 'N'
4573          , p_merge_duplicate_code       => 'N'
4574          );
4575    --
4576    l_acc_rev_natural_side_code := 'C';  -- 4262811
4577    -- 
4578    --
4579    -- set accounting line type info
4580    --
4581    xla_ae_lines_pkg.SetAcctLineType
4582       (p_component_type             => l_component_type
4583       ,p_event_type_code            => l_event_type_code
4584       ,p_line_definition_owner_code => l_line_definition_owner_code
4585       ,p_line_definition_code       => l_line_definition_code
4586       ,p_accounting_line_code       => l_component_code
4587       ,p_accounting_line_type_code  => l_component_type_code
4588       ,p_accounting_line_appl_id    => l_component_appl_id
4589       ,p_amb_context_code           => l_amb_context_code
4590       ,p_entity_code                => l_entity_code
4591       ,p_event_class_code           => l_event_class_code);
4592    --
4593    -- set accounting class
4594    --
4595    xla_ae_lines_pkg.SetAcctClass(
4596            p_accounting_class_code  => 'REQ_PA_BURDEN'
4597          , p_ae_header_id           => l_ae_header_id
4598          );
4599 
4600    --
4601    -- set rounding class
4602    --
4603    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4604                       'REQ_PA_BURDEN';
4605 
4606    --
4607    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4608    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4609    --
4610    -- bulk performance
4611    --
4612    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4613 
4614    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4615       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4616 
4617    -- 4955764
4618    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4619       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4620 
4621    -- 4458381 Public Sector Enh
4622    
4623    --
4624    -- set accounting attributes for the line type
4625    --
4626    l_entered_amt_idx := 28;
4627    l_accted_amt_idx  := 30;
4628    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4629    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4630    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
4631    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
4632    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
4633    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
4634    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
4635    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
4636    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
4637    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
4638    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
4639    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
4640    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
4641    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
4642    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
4643    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
4644    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
4645    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4646    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
4647    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
4648    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
4649    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
4650    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
4651    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4652    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
4653    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
4654    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
4655    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
4656    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
4657    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
4658    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
4659    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
4660    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
4661    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
4662    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
4663    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
4664    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
4665    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
4666    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
4667    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
4668    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
4669    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
4670    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
4671    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
4672    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
4673    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
4674    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
4675    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
4676    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
4677    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
4678    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
4679    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
4680    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
4681    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
4682    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
4683    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
4684    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
4685    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
4686    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
4687    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
4688    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
4689    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
4690    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
4691    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
4692    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
4693    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
4694    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
4695    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
4696    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
4697    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
4698    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
4699 
4700    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4701    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4702 
4703    ---------------------------------------------------------------------------------------------------------------
4704    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4705    ---------------------------------------------------------------------------------------------------------------
4706    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4707 
4708    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4709    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4710 
4711    IF xla_accounting_cache_pkg.GetValueChar
4712          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4713          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4714    AND l_bflow_method_code = 'PRIOR_ENTRY'
4715 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4716    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4717          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4718        )
4719    THEN
4720          xla_ae_lines_pkg.BflowUpgEntry
4721            (p_business_method_code    => l_bflow_method_code
4722            ,p_business_class_code     => l_bflow_class_code
4723            ,p_balance_type            => l_balance_type_code);
4724    ELSE
4725       NULL;
4726 XLA_AE_LINES_PKG.business_flow_validation(
4727                                 p_business_method_code     => l_bflow_method_code
4728                                ,p_business_class_code      => l_bflow_class_code
4729                                ,p_inherit_description_flag => l_inherit_desc_flag);
4730    END IF;
4731 
4732    --
4733    -- call analytical criteria
4734    --
4735    -- Inherited Analytical Criteria for business flow method of Prior Entry.
4736    --
4737    -- call description
4738    --
4739    
4740 xla_ae_lines_pkg.SetLineDescription(
4741    p_ae_header_id => l_ae_header_id
4742   ,p_description  => Description_2 (
4743      p_application_id         => p_application_id
4744    , p_ae_header_id           => l_ae_header_id 
4745 , p_source_3 => p_source_3
4746 , p_source_4 => p_source_4
4747 , p_source_5 => p_source_5
4748 , p_source_6 => p_source_6
4749    )
4750 );
4751 
4752 
4753    --
4754    -- call ADRs
4755    -- Bug 4922099
4756    --
4757    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4758         (NVL(l_actual_upg_option, 'N') = 'O') OR
4759         (NVL(l_enc_upg_option, 'N') = 'O')
4760       )
4761    THEN
4762    NULL;
4763    --
4764    --
4765    
4766    --
4767    --
4768    END IF;
4769    --
4770    -- Bug 4922099
4771    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4772           (NVL(l_enc_upg_option, 'N') = 'O')
4773         ) AND
4774         (l_bflow_method_code = 'PRIOR_ENTRY')
4775       )
4776    THEN
4777       IF
4778       --
4779       1 = 1
4780       --
4781       THEN
4782       xla_accounting_err_pkg.build_message
4783                                     (p_appli_s_name            => 'XLA'
4784                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4785                                     ,p_token_1                 => 'LINE_NUMBER'
4786                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4787                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4788                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4789                                                                              l_component_type
4790                                                                             ,l_component_code
4791                                                                             ,l_component_type_code
4792                                                                             ,l_component_appl_id
4793                                                                             ,l_amb_context_code
4794                                                                             ,l_entity_code
4795                                                                             ,l_event_class_code
4796                                                                            )
4797                                     ,p_token_3                 => 'OWNER'
4798                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4799                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4800                                                                           ,p_lookup_code    => l_component_type_code
4801                                                                          )
4802                                     ,p_token_4                 => 'PRODUCT_NAME'
4803                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4804                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4805                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4806                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4807                                     ,p_ae_header_id            =>  NULL
4808                                        );
4809 
4810         IF (C_LEVEL_ERROR>= g_log_level) THEN
4811                  trace
4812                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4813                       ,p_level    => C_LEVEL_ERROR
4814                       ,p_module   => l_log_module);
4815         END IF;
4816       END IF;
4817    END IF;
4818    --
4819    --
4820    ------------------------------------------------------------------------------------------------
4821    -- 4219869 Business Flow
4822    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4823    -- Prior Entry.  Currently, the following code is always generated.
4824    ------------------------------------------------------------------------------------------------
4825    -- No ValidateCurrentLine for business flow method of Prior Entry
4826 
4827    ------------------------------------------------------------------------------------
4828    -- 4219869 Business Flow
4829    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4830    ------------------------------------------------------------------------------------
4831    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4832 
4833    ----------------------------------------------------------------------------------
4834    -- 4219869 Business Flow
4835    -- Update journal entry status -- Need to generate this within IF <condition>
4836    ----------------------------------------------------------------------------------
4837    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4838          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4839          ,p_balance_type_code => l_balance_type_code
4840          );
4841 
4842    -------------------------------------------------------------------------------------------
4843    -- 4262811 - Generate the Accrual Reversal lines
4844    -------------------------------------------------------------------------------------------
4845    BEGIN
4846       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4847                               (g_array_event(p_event_id).array_value_num('header_index'));
4848       IF l_acc_rev_flag IS NULL THEN
4849          l_acc_rev_flag := 'N';
4850       END IF;
4851    EXCEPTION
4852       WHEN OTHERS THEN
4853          l_acc_rev_flag := 'N';
4854    END;
4855    --
4856    IF (l_acc_rev_flag = 'Y') THEN
4857 
4858        -- 4645092  ------------------------------------------------------------------------------
4859        -- To allow MPA report to determine if it should generate report process
4860        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4861        ------------------------------------------------------------------------------------------
4862 
4863        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4864        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4865 
4866        --
4867        -- Update the line information that should be overwritten
4868        --
4869        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4870                                          p_header_num   => 1);
4871        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4872 
4873        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4874 
4875        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4876           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4877        END IF;
4878 
4879       --
4880       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4881       --
4882       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4883           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4884       ELSE
4885           ---------------------------------------------------------------------------------------------------
4886           -- 4262811a Switch Sign
4887           ---------------------------------------------------------------------------------------------------
4888           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4889           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4890                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4891           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4892                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4893           -- 5132302
4894           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4895                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4896 
4897       END IF;
4898 
4899       -- 4955764
4900       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4901       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4902 
4903 
4904       XLA_AE_LINES_PKG.ValidateCurrentLine;
4905       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4906 
4907       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4908                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4909                ,p_balance_type_code => l_balance_type_code);
4910 
4911    END IF;
4912 
4913    -----------------------------------------------------------------------------------------
4914    -- 4262811 Multiperiod Accounting
4915    -----------------------------------------------------------------------------------------
4916      -- No MPA option is assigned.
4917 
4918 
4919 END IF;
4920 END IF;
4921 --
4922 
4923 --
4924 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4925    trace
4926       (p_msg      => 'END of AcctLineType_14'
4927       ,p_level    => C_LEVEL_PROCEDURE
4928       ,p_module   => l_log_module);
4929 END IF;
4930 --
4931 EXCEPTION
4932   WHEN xla_exceptions_pkg.application_exception THEN
4933       RAISE;
4934   WHEN OTHERS THEN
4935        xla_exceptions_pkg.raise_message
4936            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_14');
4937 END AcctLineType_14;
4938 --
4939 
4940 ---------------------------------------
4941 --
4942 -- PRIVATE FUNCTION
4943 --         AcctLineType_15
4944 --
4945 ---------------------------------------
4946 PROCEDURE AcctLineType_15 (
4947   p_application_id        IN NUMBER
4948  ,p_event_id              IN NUMBER
4949  ,p_calculate_acctd_flag  IN VARCHAR2
4950  ,p_calculate_g_l_flag    IN VARCHAR2
4951  ,p_actual_flag           IN OUT VARCHAR2
4952  ,p_balance_type_code     OUT VARCHAR2
4953  ,p_gain_or_loss_ref      OUT VARCHAR2
4954  
4955 --Budget Account
4956  , p_source_11            IN NUMBER
4957 --Main Or Backing Code
4958  , p_source_13            IN VARCHAR2
4959 --Accounting Reversal Flag
4960  , p_source_16            IN VARCHAR2
4961 --PO Distribution Identifier
4962  , p_source_29            IN NUMBER
4963 --Entered Amount
4964  , p_source_33            IN NUMBER
4965 --Currency Code
4966  , p_source_34            IN VARCHAR2
4967 --Accounted Amount
4968  , p_source_35            IN NUMBER
4969 --Allocated to Main Document Distribution Type
4970  , p_source_49            IN VARCHAR2
4971 --Allocated to Main Document Distribution Identifier
4972  , p_source_51            IN NUMBER
4973 --PO Header Identifier
4974  , p_source_52            IN NUMBER
4975 --Applied To Application Identifier
4976  , p_source_53            IN NUMBER
4977 --Applied To Distribution Link Type
4978  , p_source_54            IN VARCHAR2
4979 --Applied To Entity Code
4980  , p_source_55            IN VARCHAR2
4981 --Applied To Distribution Identifier 1
4982  , p_source_56            IN NUMBER
4983 --Applied To Header Identifier 1
4984  , p_source_57            IN NUMBER
4985 --Distribution Link Type
4986  , p_source_58            IN VARCHAR2
4987 --PO Encumbrance Upgrade Option
4988  , p_source_59            IN VARCHAR2
4989 --JFMIP Reference
4990  , p_source_60            IN VARCHAR2
4991 --PO Upgrade Encumbrance Type Identifier
4992  , p_source_61            IN NUMBER
4993 )
4994 IS
4995 
4996 l_component_type              VARCHAR2(80);
4997 l_component_code              VARCHAR2(30);
4998 l_component_type_code         VARCHAR2(1);
4999 l_component_appl_id           INTEGER;
5000 l_amb_context_code            VARCHAR2(30);
5001 l_entity_code                 VARCHAR2(30);
5002 l_event_class_code            VARCHAR2(30);
5003 l_ae_header_id                NUMBER;
5004 l_event_type_code             VARCHAR2(30);
5005 l_line_definition_code        VARCHAR2(30);
5006 l_line_definition_owner_code  VARCHAR2(1);
5007 --
5008 -- adr variables
5009 l_segment                     VARCHAR2(30);
5010 l_ccid                        NUMBER;
5011 l_adr_transaction_coa_id      NUMBER;
5012 l_adr_accounting_coa_id       NUMBER;
5013 l_adr_flexfield_segment_code  VARCHAR2(30);
5014 l_adr_flex_value_set_id       NUMBER;
5015 l_adr_value_type_code         VARCHAR2(30);
5016 l_adr_value_combination_id    NUMBER;
5017 l_adr_value_segment_code      VARCHAR2(30);
5018 
5019 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5020 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5021 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5022 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5023 
5024 -- 4262811 Variables ------------------------------------------------------------------------------------------
5025 l_entered_amt_idx             NUMBER;
5026 l_accted_amt_idx              NUMBER;
5027 l_acc_rev_flag                VARCHAR2(1);
5028 l_accrual_line_num            NUMBER;
5029 l_tmp_amt                     NUMBER;
5030 l_acc_rev_natural_side_code   VARCHAR2(1);
5031 
5032 l_num_entries                 NUMBER;
5033 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5034 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5035 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5036 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5037 l_recog_line_1                NUMBER;
5038 l_recog_line_2                NUMBER;
5039 
5040 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5041 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5042 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5043 
5044 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5045 
5046 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5047 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5048 
5049 ---------------------------------------------------------------------------------------------------------------
5050 
5051 
5052 --
5053 -- bulk performance
5054 --
5055 l_balance_type_code           VARCHAR2(1);
5056 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5057 l_log_module                  VARCHAR2(240);
5058 
5059 --
5060 -- Upgrade strategy
5061 --
5062 l_actual_upg_option           VARCHAR2(1);
5063 l_enc_upg_option           VARCHAR2(1);
5064 
5065 --
5066 BEGIN
5067 --
5068 IF g_log_enabled THEN
5069       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
5070 END IF;
5071 --
5072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5073 
5074       trace
5075          (p_msg      => 'BEGIN of AcctLineType_15'
5076          ,p_level    => C_LEVEL_PROCEDURE
5077          ,p_module   => l_log_module);
5078 
5079 END IF;
5080 --
5081 l_component_type             := 'AMB_JLT';
5082 l_component_code             := 'REINSTATE_BPA_ENC_FROM_PO_CR';
5083 l_component_type_code        := 'S';
5084 l_component_appl_id          :=  201;
5085 l_amb_context_code           := 'DEFAULT';
5086 l_entity_code                := 'PURCHASE_ORDER';
5087 l_event_class_code           := 'PO_PA';
5088 l_event_type_code            := 'PO_PA_ALL';
5089 l_line_definition_owner_code := 'S';
5090 l_line_definition_code       := 'PO_PA_ENC_ALL';
5091 --
5092 l_balance_type_code          := 'E';
5093 l_segment                     := NULL;
5094 l_ccid                        := NULL;
5095 l_adr_transaction_coa_id      := NULL;
5096 l_adr_accounting_coa_id       := NULL;
5097 l_adr_flexfield_segment_code  := NULL;
5098 l_adr_flex_value_set_id       := NULL;
5099 l_adr_value_type_code         := NULL;
5100 l_adr_value_combination_id    := NULL;
5101 l_adr_value_segment_code      := NULL;
5102 
5103 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
5104 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
5105 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
5106 l_budgetary_control_flag     := 'Y';
5107 
5108 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5109 l_bflow_applied_to_amt       := NULL; -- 5132302
5110 l_entered_amt_idx            := NULL;          -- 4262811
5111 l_accted_amt_idx             := NULL;          -- 4262811
5112 l_acc_rev_flag               := NULL;          -- 4262811
5113 l_accrual_line_num           := NULL;          -- 4262811
5114 l_tmp_amt                    := NULL;          -- 4262811
5115 --
5116  
5117 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5118     l_balance_type_code <> 'B' THEN
5119 IF (NVL(
5120 xla_ae_sources_pkg.GetSystemSourceChar(
5121    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5122  , p_source_type_code      => 'Y'
5123  , p_source_application_id =>  602
5124 ),'
5125 ') =  'PO_PA_CANCELLED' OR 
5126 NVL(
5127 xla_ae_sources_pkg.GetSystemSourceChar(
5128    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5129  , p_source_type_code      => 'Y'
5130  , p_source_application_id =>  602
5131 ),'
5132 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
5133 NVL(p_source_13,'
5134 ') =  'B_PA'
5135  THEN 
5136 
5137    --
5138    XLA_AE_LINES_PKG.SetNewLine;
5139 
5140    p_balance_type_code          := l_balance_type_code;
5141    -- set the flag so later we will know whether the gain loss line needs to be created
5142    
5143    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5144      p_actual_flag :='A';
5145    END IF;
5146 
5147    --
5148    -- bulk performance
5149    --
5150    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5151                                       p_header_num   => 0); -- 4262811
5152    --
5153    -- set accounting line options
5154    --
5155    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5156            p_natural_side_code          => 'C'
5157          , p_gain_or_loss_flag          => 'N'
5158          , p_gl_transfer_mode_code      => 'S'
5159          , p_acct_entry_type_code       => 'E'
5160          , p_switch_side_flag           => 'N'
5161          , p_merge_duplicate_code       => 'N'
5162          );
5163    --
5164    l_acc_rev_natural_side_code := 'D';  -- 4262811
5165    -- 
5166    --
5167    -- set accounting line type info
5168    --
5169    xla_ae_lines_pkg.SetAcctLineType
5170       (p_component_type             => l_component_type
5171       ,p_event_type_code            => l_event_type_code
5172       ,p_line_definition_owner_code => l_line_definition_owner_code
5173       ,p_line_definition_code       => l_line_definition_code
5174       ,p_accounting_line_code       => l_component_code
5175       ,p_accounting_line_type_code  => l_component_type_code
5176       ,p_accounting_line_appl_id    => l_component_appl_id
5177       ,p_amb_context_code           => l_amb_context_code
5178       ,p_entity_code                => l_entity_code
5179       ,p_event_class_code           => l_event_class_code);
5180    --
5181    -- set accounting class
5182    --
5183    xla_ae_lines_pkg.SetAcctClass(
5184            p_accounting_class_code  => 'PURCHASE_ORDER'
5185          , p_ae_header_id           => l_ae_header_id
5186          );
5187 
5188    --
5189    -- set rounding class
5190    --
5191    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5192                       'PURCHASE_ORDER';
5193 
5194    --
5195    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5196    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5197    --
5198    -- bulk performance
5199    --
5200    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5201 
5202    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5203       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5204 
5205    -- 4955764
5206    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5207       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5208 
5209    -- 4458381 Public Sector Enh
5210    
5211    --
5212    -- set accounting attributes for the line type
5213    --
5214    l_entered_amt_idx := 23;
5215    l_accted_amt_idx  := 25;
5216    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5217    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5218    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
5219    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
5220    l_rec_acct_attrs.array_num_value(2)  := 
5221 xla_ae_sources_pkg.GetSystemSourceNum(
5222    p_source_code           => 'XLA_EVENT_APPL_ID'
5223  , p_source_type_code      => 'Y'
5224  , p_source_application_id =>  602
5225 );
5226    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
5227    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
5228    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
5229    l_rec_acct_attrs.array_char_value(4)  := 
5230 xla_ae_sources_pkg.GetSystemSourceChar(
5231    p_source_code           => 'XLA_ENTITY_CODE'
5232  , p_source_type_code      => 'Y'
5233  , p_source_application_id =>  602
5234 );
5235    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
5236    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
5237    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
5238    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
5239    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
5240    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
5241    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5242    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
5243    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
5244    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
5245    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
5246    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
5247    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5248    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
5249    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
5250    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
5251    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
5252    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
5253    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
5254    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
5255    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
5256    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
5257    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
5258    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
5259    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
5260    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
5261    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
5262    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
5263    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
5264    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
5265    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
5266    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
5267    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
5268    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
5269    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
5270    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
5271    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
5272    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
5273    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
5274    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
5275    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
5276    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
5277    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
5278    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
5279    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
5280    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
5281    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
5282    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
5283    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
5284    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_29);
5285    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
5286    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
5287    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
5288    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
5289 
5290    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5291    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5292 
5293    ---------------------------------------------------------------------------------------------------------------
5294    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5295    ---------------------------------------------------------------------------------------------------------------
5296    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5297 
5298    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5299    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5300 
5301    IF xla_accounting_cache_pkg.GetValueChar
5302          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5303          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5304    AND l_bflow_method_code = 'PRIOR_ENTRY'
5305 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5306    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5307          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5308        )
5309    THEN
5310          xla_ae_lines_pkg.BflowUpgEntry
5311            (p_business_method_code    => l_bflow_method_code
5312            ,p_business_class_code     => l_bflow_class_code
5313            ,p_balance_type            => l_balance_type_code);
5314    ELSE
5315       NULL;
5316 XLA_AE_LINES_PKG.business_flow_validation(
5317                                 p_business_method_code     => l_bflow_method_code
5318                                ,p_business_class_code      => l_bflow_class_code
5319                                ,p_inherit_description_flag => l_inherit_desc_flag);
5320    END IF;
5321 
5322    --
5323    -- call analytical criteria
5324    --
5325    -- Inherited Analytical Criteria for business flow method of Prior Entry.
5326    --
5327    -- call description
5328    --
5329    -- No description or it is inherited.
5330    --
5331    -- call ADRs
5332    -- Bug 4922099
5333    --
5334    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5335         (NVL(l_actual_upg_option, 'N') = 'O') OR
5336         (NVL(l_enc_upg_option, 'N') = 'O')
5337       )
5338    THEN
5339    NULL;
5340    --
5341    --
5342    
5343    --
5344    --
5345    END IF;
5346    --
5347    -- Bug 4922099
5348    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5349           (NVL(l_enc_upg_option, 'N') = 'O')
5350         ) AND
5351         (l_bflow_method_code = 'PRIOR_ENTRY')
5352       )
5353    THEN
5354       IF
5355       --
5356       1 = 1
5357       --
5358       THEN
5359       xla_accounting_err_pkg.build_message
5360                                     (p_appli_s_name            => 'XLA'
5361                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5362                                     ,p_token_1                 => 'LINE_NUMBER'
5363                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5364                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5365                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5366                                                                              l_component_type
5367                                                                             ,l_component_code
5368                                                                             ,l_component_type_code
5369                                                                             ,l_component_appl_id
5370                                                                             ,l_amb_context_code
5371                                                                             ,l_entity_code
5372                                                                             ,l_event_class_code
5373                                                                            )
5374                                     ,p_token_3                 => 'OWNER'
5375                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5376                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5377                                                                           ,p_lookup_code    => l_component_type_code
5378                                                                          )
5379                                     ,p_token_4                 => 'PRODUCT_NAME'
5380                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5381                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5382                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5383                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5384                                     ,p_ae_header_id            =>  NULL
5385                                        );
5386 
5387         IF (C_LEVEL_ERROR>= g_log_level) THEN
5388                  trace
5389                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5390                       ,p_level    => C_LEVEL_ERROR
5391                       ,p_module   => l_log_module);
5392         END IF;
5393       END IF;
5394    END IF;
5395    --
5396    --
5397    ------------------------------------------------------------------------------------------------
5398    -- 4219869 Business Flow
5399    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5400    -- Prior Entry.  Currently, the following code is always generated.
5401    ------------------------------------------------------------------------------------------------
5402    -- No ValidateCurrentLine for business flow method of Prior Entry
5403 
5404    ------------------------------------------------------------------------------------
5405    -- 4219869 Business Flow
5406    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5407    ------------------------------------------------------------------------------------
5408    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5409 
5410    ----------------------------------------------------------------------------------
5411    -- 4219869 Business Flow
5412    -- Update journal entry status -- Need to generate this within IF <condition>
5413    ----------------------------------------------------------------------------------
5414    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5415          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5416          ,p_balance_type_code => l_balance_type_code
5417          );
5418 
5419    -------------------------------------------------------------------------------------------
5420    -- 4262811 - Generate the Accrual Reversal lines
5421    -------------------------------------------------------------------------------------------
5422    BEGIN
5423       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5424                               (g_array_event(p_event_id).array_value_num('header_index'));
5425       IF l_acc_rev_flag IS NULL THEN
5426          l_acc_rev_flag := 'N';
5427       END IF;
5428    EXCEPTION
5429       WHEN OTHERS THEN
5430          l_acc_rev_flag := 'N';
5431    END;
5432    --
5433    IF (l_acc_rev_flag = 'Y') THEN
5434 
5435        -- 4645092  ------------------------------------------------------------------------------
5436        -- To allow MPA report to determine if it should generate report process
5437        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5438        ------------------------------------------------------------------------------------------
5439 
5440        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5441        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5442 
5443        --
5444        -- Update the line information that should be overwritten
5445        --
5446        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5447                                          p_header_num   => 1);
5448        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5449 
5450        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5451 
5452        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5453           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5454        END IF;
5455 
5456       --
5457       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5458       --
5459       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5460           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5461       ELSE
5462           ---------------------------------------------------------------------------------------------------
5463           -- 4262811a Switch Sign
5464           ---------------------------------------------------------------------------------------------------
5465           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5466           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5467                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5468           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5469                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5470           -- 5132302
5471           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5472                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5473 
5474       END IF;
5475 
5476       -- 4955764
5477       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5478       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5479 
5480 
5481       XLA_AE_LINES_PKG.ValidateCurrentLine;
5482       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5483 
5484       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5485                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5486                ,p_balance_type_code => l_balance_type_code);
5487 
5488    END IF;
5489 
5490    -----------------------------------------------------------------------------------------
5491    -- 4262811 Multiperiod Accounting
5492    -----------------------------------------------------------------------------------------
5493      -- No MPA option is assigned.
5494 
5495 
5496 END IF;
5497 END IF;
5498 --
5499 
5500 --
5501 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5502    trace
5503       (p_msg      => 'END of AcctLineType_15'
5504       ,p_level    => C_LEVEL_PROCEDURE
5505       ,p_module   => l_log_module);
5506 END IF;
5507 --
5508 EXCEPTION
5509   WHEN xla_exceptions_pkg.application_exception THEN
5510       RAISE;
5511   WHEN OTHERS THEN
5512        xla_exceptions_pkg.raise_message
5513            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_15');
5514 END AcctLineType_15;
5515 --
5516 
5517 ---------------------------------------
5518 --
5519 -- PRIVATE FUNCTION
5520 --         AcctLineType_16
5521 --
5522 ---------------------------------------
5523 PROCEDURE AcctLineType_16 (
5524   p_application_id        IN NUMBER
5525  ,p_event_id              IN NUMBER
5526  ,p_calculate_acctd_flag  IN VARCHAR2
5527  ,p_calculate_g_l_flag    IN VARCHAR2
5528  ,p_actual_flag           IN OUT VARCHAR2
5529  ,p_balance_type_code     OUT VARCHAR2
5530  ,p_gain_or_loss_ref      OUT VARCHAR2
5531  
5532 --Budget Account
5533  , p_source_11            IN NUMBER
5534 --Main Or Backing Code
5535  , p_source_13            IN VARCHAR2
5536 --Accounting Reversal Flag
5537  , p_source_16            IN VARCHAR2
5538 --PO Distribution Identifier
5539  , p_source_29            IN NUMBER
5540 --Entered Amount
5541  , p_source_33            IN NUMBER
5542 --Currency Code
5543  , p_source_34            IN VARCHAR2
5544 --Accounted Amount
5545  , p_source_35            IN NUMBER
5546 --Allocated to Main Document Distribution Type
5547  , p_source_49            IN VARCHAR2
5548 --Allocated to Main Document Distribution Identifier
5549  , p_source_51            IN NUMBER
5550 --PO Header Identifier
5551  , p_source_52            IN NUMBER
5552 --Applied To Application Identifier
5553  , p_source_53            IN NUMBER
5554 --Applied To Distribution Link Type
5555  , p_source_54            IN VARCHAR2
5556 --Applied To Entity Code
5557  , p_source_55            IN VARCHAR2
5558 --Applied To Distribution Identifier 1
5559  , p_source_56            IN NUMBER
5560 --Applied To Header Identifier 1
5561  , p_source_57            IN NUMBER
5562 --Distribution Link Type
5563  , p_source_58            IN VARCHAR2
5564 --PO Encumbrance Upgrade Option
5565  , p_source_59            IN VARCHAR2
5566 --JFMIP Reference
5567  , p_source_60            IN VARCHAR2
5568 --PO Upgrade Encumbrance Type Identifier
5569  , p_source_61            IN NUMBER
5570 )
5571 IS
5572 
5573 l_component_type              VARCHAR2(80);
5574 l_component_code              VARCHAR2(30);
5575 l_component_type_code         VARCHAR2(1);
5576 l_component_appl_id           INTEGER;
5577 l_amb_context_code            VARCHAR2(30);
5578 l_entity_code                 VARCHAR2(30);
5579 l_event_class_code            VARCHAR2(30);
5580 l_ae_header_id                NUMBER;
5581 l_event_type_code             VARCHAR2(30);
5582 l_line_definition_code        VARCHAR2(30);
5583 l_line_definition_owner_code  VARCHAR2(1);
5584 --
5585 -- adr variables
5586 l_segment                     VARCHAR2(30);
5587 l_ccid                        NUMBER;
5588 l_adr_transaction_coa_id      NUMBER;
5589 l_adr_accounting_coa_id       NUMBER;
5590 l_adr_flexfield_segment_code  VARCHAR2(30);
5591 l_adr_flex_value_set_id       NUMBER;
5592 l_adr_value_type_code         VARCHAR2(30);
5593 l_adr_value_combination_id    NUMBER;
5594 l_adr_value_segment_code      VARCHAR2(30);
5595 
5596 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5597 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5598 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5599 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5600 
5601 -- 4262811 Variables ------------------------------------------------------------------------------------------
5602 l_entered_amt_idx             NUMBER;
5603 l_accted_amt_idx              NUMBER;
5604 l_acc_rev_flag                VARCHAR2(1);
5605 l_accrual_line_num            NUMBER;
5606 l_tmp_amt                     NUMBER;
5607 l_acc_rev_natural_side_code   VARCHAR2(1);
5608 
5609 l_num_entries                 NUMBER;
5610 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5611 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5612 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5613 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5614 l_recog_line_1                NUMBER;
5615 l_recog_line_2                NUMBER;
5616 
5617 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5618 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5619 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5620 
5621 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5622 
5623 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5624 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5625 
5626 ---------------------------------------------------------------------------------------------------------------
5627 
5628 
5629 --
5630 -- bulk performance
5631 --
5632 l_balance_type_code           VARCHAR2(1);
5633 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5634 l_log_module                  VARCHAR2(240);
5635 
5636 --
5637 -- Upgrade strategy
5638 --
5639 l_actual_upg_option           VARCHAR2(1);
5640 l_enc_upg_option           VARCHAR2(1);
5641 
5642 --
5643 BEGIN
5644 --
5645 IF g_log_enabled THEN
5646       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
5647 END IF;
5648 --
5649 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5650 
5651       trace
5652          (p_msg      => 'BEGIN of AcctLineType_16'
5653          ,p_level    => C_LEVEL_PROCEDURE
5654          ,p_module   => l_log_module);
5655 
5656 END IF;
5657 --
5658 l_component_type             := 'AMB_JLT';
5659 l_component_code             := 'REINSTATE_BPA_ENC_FROM_PO_DR';
5660 l_component_type_code        := 'S';
5661 l_component_appl_id          :=  201;
5662 l_amb_context_code           := 'DEFAULT';
5663 l_entity_code                := 'PURCHASE_ORDER';
5664 l_event_class_code           := 'PO_PA';
5665 l_event_type_code            := 'PO_PA_ALL';
5666 l_line_definition_owner_code := 'S';
5667 l_line_definition_code       := 'PO_PA_ENC_ALL';
5668 --
5669 l_balance_type_code          := 'E';
5670 l_segment                     := NULL;
5671 l_ccid                        := NULL;
5672 l_adr_transaction_coa_id      := NULL;
5673 l_adr_accounting_coa_id       := NULL;
5674 l_adr_flexfield_segment_code  := NULL;
5675 l_adr_flex_value_set_id       := NULL;
5676 l_adr_value_type_code         := NULL;
5677 l_adr_value_combination_id    := NULL;
5678 l_adr_value_segment_code      := NULL;
5679 
5680 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
5681 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
5682 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
5683 l_budgetary_control_flag     := 'Y';
5684 
5685 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5686 l_bflow_applied_to_amt       := NULL; -- 5132302
5687 l_entered_amt_idx            := NULL;          -- 4262811
5688 l_accted_amt_idx             := NULL;          -- 4262811
5689 l_acc_rev_flag               := NULL;          -- 4262811
5690 l_accrual_line_num           := NULL;          -- 4262811
5691 l_tmp_amt                    := NULL;          -- 4262811
5692 --
5693  
5694 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5695     l_balance_type_code <> 'B' THEN
5696 IF (NVL(
5697 xla_ae_sources_pkg.GetSystemSourceChar(
5698    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5699  , p_source_type_code      => 'Y'
5700  , p_source_application_id =>  602
5701 ),'
5702 ') =  'PO_PA_UNRESERVED' OR 
5703 NVL(
5704 xla_ae_sources_pkg.GetSystemSourceChar(
5705    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5706  , p_source_type_code      => 'Y'
5707  , p_source_application_id =>  602
5708 ),'
5709 ') =  'PO_PA_REJECTED' OR 
5710 NVL(
5711 xla_ae_sources_pkg.GetSystemSourceChar(
5712    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5713  , p_source_type_code      => 'Y'
5714  , p_source_application_id =>  602
5715 ),'
5716 ') =  'PO_PA_INV_CANCELLED') AND 
5717 NVL(p_source_13,'
5718 ') =  'B_PA'
5719  THEN 
5720 
5721    --
5722    XLA_AE_LINES_PKG.SetNewLine;
5723 
5724    p_balance_type_code          := l_balance_type_code;
5725    -- set the flag so later we will know whether the gain loss line needs to be created
5726    
5727    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5728      p_actual_flag :='A';
5729    END IF;
5730 
5731    --
5732    -- bulk performance
5733    --
5734    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5735                                       p_header_num   => 0); -- 4262811
5736    --
5737    -- set accounting line options
5738    --
5739    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5740            p_natural_side_code          => 'D'
5741          , p_gain_or_loss_flag          => 'N'
5742          , p_gl_transfer_mode_code      => 'S'
5743          , p_acct_entry_type_code       => 'E'
5744          , p_switch_side_flag           => 'N'
5745          , p_merge_duplicate_code       => 'N'
5746          );
5747    --
5748    l_acc_rev_natural_side_code := 'C';  -- 4262811
5749    -- 
5750    --
5751    -- set accounting line type info
5752    --
5753    xla_ae_lines_pkg.SetAcctLineType
5754       (p_component_type             => l_component_type
5755       ,p_event_type_code            => l_event_type_code
5756       ,p_line_definition_owner_code => l_line_definition_owner_code
5757       ,p_line_definition_code       => l_line_definition_code
5758       ,p_accounting_line_code       => l_component_code
5759       ,p_accounting_line_type_code  => l_component_type_code
5760       ,p_accounting_line_appl_id    => l_component_appl_id
5761       ,p_amb_context_code           => l_amb_context_code
5762       ,p_entity_code                => l_entity_code
5763       ,p_event_class_code           => l_event_class_code);
5764    --
5765    -- set accounting class
5766    --
5767    xla_ae_lines_pkg.SetAcctClass(
5768            p_accounting_class_code  => 'PURCHASE_ORDER'
5769          , p_ae_header_id           => l_ae_header_id
5770          );
5771 
5772    --
5773    -- set rounding class
5774    --
5775    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5776                       'PURCHASE_ORDER';
5777 
5778    --
5779    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5780    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5781    --
5782    -- bulk performance
5783    --
5784    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5785 
5786    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5787       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5788 
5789    -- 4955764
5790    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5791       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5792 
5793    -- 4458381 Public Sector Enh
5794    
5795    --
5796    -- set accounting attributes for the line type
5797    --
5798    l_entered_amt_idx := 23;
5799    l_accted_amt_idx  := 25;
5800    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5801    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5802    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
5803    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
5804    l_rec_acct_attrs.array_num_value(2)  := 
5805 xla_ae_sources_pkg.GetSystemSourceNum(
5806    p_source_code           => 'XLA_EVENT_APPL_ID'
5807  , p_source_type_code      => 'Y'
5808  , p_source_application_id =>  602
5809 );
5810    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
5811    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
5812    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
5813    l_rec_acct_attrs.array_char_value(4)  := 
5814 xla_ae_sources_pkg.GetSystemSourceChar(
5815    p_source_code           => 'XLA_ENTITY_CODE'
5816  , p_source_type_code      => 'Y'
5817  , p_source_application_id =>  602
5818 );
5819    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
5820    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
5821    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
5822    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
5823    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
5824    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
5825    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5826    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
5827    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
5828    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
5829    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
5830    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
5831    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5832    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
5833    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
5834    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
5835    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
5836    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
5837    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
5838    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
5839    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
5840    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
5841    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
5842    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
5843    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
5844    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
5845    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
5846    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
5847    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
5848    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
5849    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
5850    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
5851    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
5852    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
5853    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
5854    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
5855    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
5856    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
5857    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
5858    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
5859    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
5860    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
5861    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
5862    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
5863    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
5864    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
5865    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
5866    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
5867    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
5868    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_29);
5869    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
5870    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
5871    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
5872    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
5873 
5874    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5875    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5876 
5877    ---------------------------------------------------------------------------------------------------------------
5878    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5879    ---------------------------------------------------------------------------------------------------------------
5880    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5881 
5882    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5883    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5884 
5885    IF xla_accounting_cache_pkg.GetValueChar
5886          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5887          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5888    AND l_bflow_method_code = 'PRIOR_ENTRY'
5889 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5890    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5891          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5892        )
5893    THEN
5894          xla_ae_lines_pkg.BflowUpgEntry
5895            (p_business_method_code    => l_bflow_method_code
5896            ,p_business_class_code     => l_bflow_class_code
5897            ,p_balance_type            => l_balance_type_code);
5898    ELSE
5899       NULL;
5900 XLA_AE_LINES_PKG.business_flow_validation(
5901                                 p_business_method_code     => l_bflow_method_code
5902                                ,p_business_class_code      => l_bflow_class_code
5903                                ,p_inherit_description_flag => l_inherit_desc_flag);
5904    END IF;
5905 
5906    --
5907    -- call analytical criteria
5908    --
5909    -- Inherited Analytical Criteria for business flow method of Prior Entry.
5910    --
5911    -- call description
5912    --
5913    -- No description or it is inherited.
5914    --
5915    -- call ADRs
5916    -- Bug 4922099
5917    --
5918    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5919         (NVL(l_actual_upg_option, 'N') = 'O') OR
5920         (NVL(l_enc_upg_option, 'N') = 'O')
5921       )
5922    THEN
5923    NULL;
5924    --
5925    --
5926    
5927    --
5928    --
5929    END IF;
5930    --
5931    -- Bug 4922099
5932    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5933           (NVL(l_enc_upg_option, 'N') = 'O')
5934         ) AND
5935         (l_bflow_method_code = 'PRIOR_ENTRY')
5936       )
5937    THEN
5938       IF
5939       --
5940       1 = 1
5941       --
5942       THEN
5943       xla_accounting_err_pkg.build_message
5944                                     (p_appli_s_name            => 'XLA'
5945                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5946                                     ,p_token_1                 => 'LINE_NUMBER'
5947                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5948                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5949                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5950                                                                              l_component_type
5951                                                                             ,l_component_code
5952                                                                             ,l_component_type_code
5953                                                                             ,l_component_appl_id
5954                                                                             ,l_amb_context_code
5955                                                                             ,l_entity_code
5956                                                                             ,l_event_class_code
5957                                                                            )
5958                                     ,p_token_3                 => 'OWNER'
5959                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5960                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5961                                                                           ,p_lookup_code    => l_component_type_code
5962                                                                          )
5963                                     ,p_token_4                 => 'PRODUCT_NAME'
5964                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5965                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5966                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5967                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5968                                     ,p_ae_header_id            =>  NULL
5969                                        );
5970 
5971         IF (C_LEVEL_ERROR>= g_log_level) THEN
5972                  trace
5973                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5974                       ,p_level    => C_LEVEL_ERROR
5975                       ,p_module   => l_log_module);
5976         END IF;
5977       END IF;
5978    END IF;
5979    --
5980    --
5981    ------------------------------------------------------------------------------------------------
5982    -- 4219869 Business Flow
5983    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5984    -- Prior Entry.  Currently, the following code is always generated.
5985    ------------------------------------------------------------------------------------------------
5986    -- No ValidateCurrentLine for business flow method of Prior Entry
5987 
5988    ------------------------------------------------------------------------------------
5989    -- 4219869 Business Flow
5990    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5991    ------------------------------------------------------------------------------------
5992    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5993 
5994    ----------------------------------------------------------------------------------
5995    -- 4219869 Business Flow
5996    -- Update journal entry status -- Need to generate this within IF <condition>
5997    ----------------------------------------------------------------------------------
5998    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5999          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6000          ,p_balance_type_code => l_balance_type_code
6001          );
6002 
6003    -------------------------------------------------------------------------------------------
6004    -- 4262811 - Generate the Accrual Reversal lines
6005    -------------------------------------------------------------------------------------------
6006    BEGIN
6007       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6008                               (g_array_event(p_event_id).array_value_num('header_index'));
6009       IF l_acc_rev_flag IS NULL THEN
6010          l_acc_rev_flag := 'N';
6011       END IF;
6012    EXCEPTION
6013       WHEN OTHERS THEN
6014          l_acc_rev_flag := 'N';
6015    END;
6016    --
6017    IF (l_acc_rev_flag = 'Y') THEN
6018 
6019        -- 4645092  ------------------------------------------------------------------------------
6020        -- To allow MPA report to determine if it should generate report process
6021        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6022        ------------------------------------------------------------------------------------------
6023 
6024        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6025        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6026 
6027        --
6028        -- Update the line information that should be overwritten
6029        --
6030        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6031                                          p_header_num   => 1);
6032        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6033 
6034        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6035 
6036        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6037           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6038        END IF;
6039 
6040       --
6041       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6042       --
6043       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6044           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6045       ELSE
6046           ---------------------------------------------------------------------------------------------------
6047           -- 4262811a Switch Sign
6048           ---------------------------------------------------------------------------------------------------
6049           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6050           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6051                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6052           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6053                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6054           -- 5132302
6055           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6056                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6057 
6058       END IF;
6059 
6060       -- 4955764
6061       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6062       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6063 
6064 
6065       XLA_AE_LINES_PKG.ValidateCurrentLine;
6066       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6067 
6068       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6069                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6070                ,p_balance_type_code => l_balance_type_code);
6071 
6072    END IF;
6073 
6074    -----------------------------------------------------------------------------------------
6075    -- 4262811 Multiperiod Accounting
6076    -----------------------------------------------------------------------------------------
6077      -- No MPA option is assigned.
6078 
6079 
6080 END IF;
6081 END IF;
6082 --
6083 
6084 --
6085 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6086    trace
6087       (p_msg      => 'END of AcctLineType_16'
6088       ,p_level    => C_LEVEL_PROCEDURE
6089       ,p_module   => l_log_module);
6090 END IF;
6091 --
6092 EXCEPTION
6093   WHEN xla_exceptions_pkg.application_exception THEN
6094       RAISE;
6095   WHEN OTHERS THEN
6096        xla_exceptions_pkg.raise_message
6097            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_16');
6098 END AcctLineType_16;
6099 --
6100 
6101 ---------------------------------------
6102 --
6103 -- PRIVATE FUNCTION
6104 --         AcctLineType_17
6105 --
6106 ---------------------------------------
6107 PROCEDURE AcctLineType_17 (
6108   p_application_id        IN NUMBER
6109  ,p_event_id              IN NUMBER
6110  ,p_calculate_acctd_flag  IN VARCHAR2
6111  ,p_calculate_g_l_flag    IN VARCHAR2
6112  ,p_actual_flag           IN OUT VARCHAR2
6113  ,p_balance_type_code     OUT VARCHAR2
6114  ,p_gain_or_loss_ref      OUT VARCHAR2
6115  
6116 --Journal entry Line Description
6117  , p_source_7            IN VARCHAR2
6118 --Budget Account
6119  , p_source_11            IN NUMBER
6120 --Main Or Backing Code
6121  , p_source_13            IN VARCHAR2
6122 --Accounting Reversal Flag
6123  , p_source_16            IN VARCHAR2
6124 --PO Distribution Identifier
6125  , p_source_29            IN NUMBER
6126 --Entered Amount
6127  , p_source_33            IN NUMBER
6128 --Currency Code
6129  , p_source_34            IN VARCHAR2
6130 --Accounted Amount
6131  , p_source_35            IN NUMBER
6132 --Allocated to Main Document Distribution Type
6133  , p_source_49            IN VARCHAR2
6134 --Allocated to Main Document Distribution Identifier
6135  , p_source_51            IN NUMBER
6136 --PO Header Identifier
6137  , p_source_52            IN NUMBER
6138 --Applied To Application Identifier
6139  , p_source_53            IN NUMBER
6140 --Applied To Distribution Link Type
6141  , p_source_54            IN VARCHAR2
6142 --Applied To Entity Code
6143  , p_source_55            IN VARCHAR2
6144 --Applied To Distribution Identifier 1
6145  , p_source_56            IN NUMBER
6146 --Applied To Header Identifier 1
6147  , p_source_57            IN NUMBER
6148 --Distribution Link Type
6149  , p_source_58            IN VARCHAR2
6150 --PO Encumbrance Upgrade Option
6151  , p_source_59            IN VARCHAR2
6152 --JFMIP Reference
6153  , p_source_60            IN VARCHAR2
6154 --PO Upgrade Encumbrance Type Identifier
6155  , p_source_61            IN NUMBER
6156 --Currency Conversion Date
6157  , p_source_62            IN DATE
6158 --Currency Conversion Rate
6159  , p_source_63            IN NUMBER
6160 --Currency Conversion Type
6161  , p_source_64            IN VARCHAR2
6162 )
6163 IS
6164 
6165 l_component_type              VARCHAR2(80);
6166 l_component_code              VARCHAR2(30);
6167 l_component_type_code         VARCHAR2(1);
6168 l_component_appl_id           INTEGER;
6169 l_amb_context_code            VARCHAR2(30);
6170 l_entity_code                 VARCHAR2(30);
6171 l_event_class_code            VARCHAR2(30);
6172 l_ae_header_id                NUMBER;
6173 l_event_type_code             VARCHAR2(30);
6174 l_line_definition_code        VARCHAR2(30);
6175 l_line_definition_owner_code  VARCHAR2(1);
6176 --
6177 -- adr variables
6178 l_segment                     VARCHAR2(30);
6179 l_ccid                        NUMBER;
6180 l_adr_transaction_coa_id      NUMBER;
6181 l_adr_accounting_coa_id       NUMBER;
6182 l_adr_flexfield_segment_code  VARCHAR2(30);
6183 l_adr_flex_value_set_id       NUMBER;
6184 l_adr_value_type_code         VARCHAR2(30);
6185 l_adr_value_combination_id    NUMBER;
6186 l_adr_value_segment_code      VARCHAR2(30);
6187 
6188 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6189 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6190 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6191 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6192 
6193 -- 4262811 Variables ------------------------------------------------------------------------------------------
6194 l_entered_amt_idx             NUMBER;
6195 l_accted_amt_idx              NUMBER;
6196 l_acc_rev_flag                VARCHAR2(1);
6197 l_accrual_line_num            NUMBER;
6198 l_tmp_amt                     NUMBER;
6199 l_acc_rev_natural_side_code   VARCHAR2(1);
6200 
6201 l_num_entries                 NUMBER;
6202 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6203 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6204 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6205 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6206 l_recog_line_1                NUMBER;
6207 l_recog_line_2                NUMBER;
6208 
6209 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6210 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6211 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6212 
6213 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6214 
6215 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6216 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6217 
6218 ---------------------------------------------------------------------------------------------------------------
6219 
6220 
6221 --
6222 -- bulk performance
6223 --
6224 l_balance_type_code           VARCHAR2(1);
6225 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6226 l_log_module                  VARCHAR2(240);
6227 
6228 --
6229 -- Upgrade strategy
6230 --
6231 l_actual_upg_option           VARCHAR2(1);
6232 l_enc_upg_option           VARCHAR2(1);
6233 
6234 --
6235 BEGIN
6236 --
6237 IF g_log_enabled THEN
6238       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
6239 END IF;
6240 --
6241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6242 
6243       trace
6244          (p_msg      => 'BEGIN of AcctLineType_17'
6245          ,p_level    => C_LEVEL_PROCEDURE
6246          ,p_module   => l_log_module);
6247 
6248 END IF;
6249 --
6250 l_component_type             := 'AMB_JLT';
6251 l_component_code             := 'REINSTATE_REQ_ENC_FROM_PO_CR';
6252 l_component_type_code        := 'S';
6253 l_component_appl_id          :=  201;
6254 l_amb_context_code           := 'DEFAULT';
6255 l_entity_code                := 'PURCHASE_ORDER';
6256 l_event_class_code           := 'PO_PA';
6257 l_event_type_code            := 'PO_PA_ALL';
6258 l_line_definition_owner_code := 'S';
6259 l_line_definition_code       := 'PO_PA_ENC_ALL';
6260 --
6261 l_balance_type_code          := 'E';
6262 l_segment                     := NULL;
6263 l_ccid                        := NULL;
6264 l_adr_transaction_coa_id      := NULL;
6265 l_adr_accounting_coa_id       := NULL;
6266 l_adr_flexfield_segment_code  := NULL;
6267 l_adr_flex_value_set_id       := NULL;
6268 l_adr_value_type_code         := NULL;
6269 l_adr_value_combination_id    := NULL;
6270 l_adr_value_segment_code      := NULL;
6271 
6272 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6273 l_bflow_class_code           := '';    -- 4219869 Business Flow
6274 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6275 l_budgetary_control_flag     := 'Y';
6276 
6277 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6278 l_bflow_applied_to_amt       := NULL; -- 5132302
6279 l_entered_amt_idx            := NULL;          -- 4262811
6280 l_accted_amt_idx             := NULL;          -- 4262811
6281 l_acc_rev_flag               := NULL;          -- 4262811
6282 l_accrual_line_num           := NULL;          -- 4262811
6283 l_tmp_amt                    := NULL;          -- 4262811
6284 --
6285  
6286 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6287     l_balance_type_code <> 'B' THEN
6288 IF (NVL(
6289 xla_ae_sources_pkg.GetSystemSourceChar(
6290    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6291  , p_source_type_code      => 'Y'
6292  , p_source_application_id =>  602
6293 ),'
6294 ') =  'PO_PA_CANCELLED' OR 
6295 NVL(
6296 xla_ae_sources_pkg.GetSystemSourceChar(
6297    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6298  , p_source_type_code      => 'Y'
6299  , p_source_application_id =>  602
6300 ),'
6301 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
6302 NVL(p_source_13,'
6303 ') =  'B_REQ'
6304  THEN 
6305 
6306    --
6307    XLA_AE_LINES_PKG.SetNewLine;
6308 
6309    p_balance_type_code          := l_balance_type_code;
6310    -- set the flag so later we will know whether the gain loss line needs to be created
6311    
6312    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6313      p_actual_flag :='A';
6314    END IF;
6315 
6316    --
6317    -- bulk performance
6318    --
6319    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6320                                       p_header_num   => 0); -- 4262811
6321    --
6322    -- set accounting line options
6323    --
6324    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6325            p_natural_side_code          => 'C'
6326          , p_gain_or_loss_flag          => 'N'
6327          , p_gl_transfer_mode_code      => 'S'
6328          , p_acct_entry_type_code       => 'E'
6329          , p_switch_side_flag           => 'N'
6330          , p_merge_duplicate_code       => 'N'
6331          );
6332    --
6333    l_acc_rev_natural_side_code := 'D';  -- 4262811
6334    -- 
6335    --
6336    -- set accounting line type info
6337    --
6338    xla_ae_lines_pkg.SetAcctLineType
6339       (p_component_type             => l_component_type
6340       ,p_event_type_code            => l_event_type_code
6341       ,p_line_definition_owner_code => l_line_definition_owner_code
6342       ,p_line_definition_code       => l_line_definition_code
6343       ,p_accounting_line_code       => l_component_code
6344       ,p_accounting_line_type_code  => l_component_type_code
6345       ,p_accounting_line_appl_id    => l_component_appl_id
6346       ,p_amb_context_code           => l_amb_context_code
6347       ,p_entity_code                => l_entity_code
6348       ,p_event_class_code           => l_event_class_code);
6349    --
6350    -- set accounting class
6351    --
6352    xla_ae_lines_pkg.SetAcctClass(
6353            p_accounting_class_code  => 'REQUISITION'
6354          , p_ae_header_id           => l_ae_header_id
6355          );
6356 
6357    --
6358    -- set rounding class
6359    --
6360    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6361                       'REQUISITION';
6362 
6363    --
6364    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6365    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6366    --
6367    -- bulk performance
6368    --
6369    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6370 
6371    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6372       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6373 
6374    -- 4955764
6375    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6376       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6377 
6378    -- 4458381 Public Sector Enh
6379       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
6380    --
6381    -- set accounting attributes for the line type
6382    --
6383    l_entered_amt_idx := 23;
6384    l_accted_amt_idx  := 28;
6385    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6386    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6387    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
6388    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
6389    l_rec_acct_attrs.array_num_value(2)  := 
6390 xla_ae_sources_pkg.GetSystemSourceNum(
6391    p_source_code           => 'XLA_EVENT_APPL_ID'
6392  , p_source_type_code      => 'Y'
6393  , p_source_application_id =>  602
6394 );
6395    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
6396    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
6397    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
6398    l_rec_acct_attrs.array_char_value(4)  := 
6399 xla_ae_sources_pkg.GetSystemSourceChar(
6400    p_source_code           => 'XLA_ENTITY_CODE'
6401  , p_source_type_code      => 'Y'
6402  , p_source_application_id =>  602
6403 );
6404    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
6405    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
6406    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
6407    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
6408    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
6409    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
6410    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6411    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
6412    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
6413    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
6414    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
6415    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
6416    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6417    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
6418    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
6419    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
6420    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
6421    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
6422    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
6423    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
6424    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
6425    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
6426    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
6427    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
6428    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
6429    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
6430    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
6431    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
6432    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
6433    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
6434    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
6435    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
6436    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
6437    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
6438    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
6439    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
6440    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
6441    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
6442    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
6443    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
6444    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
6445    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
6446    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
6447    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
6448    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
6449    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
6450    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
6451    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
6452    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
6453    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
6454    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
6455    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
6456    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
6457    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
6458    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
6459    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_29);
6460    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
6461    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
6462    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
6463    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
6464 
6465    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6466    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6467 
6468    ---------------------------------------------------------------------------------------------------------------
6469    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6470    ---------------------------------------------------------------------------------------------------------------
6471    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6472 
6473    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6474    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6475 
6476    IF xla_accounting_cache_pkg.GetValueChar
6477          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6478          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6479    AND l_bflow_method_code = 'PRIOR_ENTRY'
6480 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6481    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6482          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6483        )
6484    THEN
6485          xla_ae_lines_pkg.BflowUpgEntry
6486            (p_business_method_code    => l_bflow_method_code
6487            ,p_business_class_code     => l_bflow_class_code
6488            ,p_balance_type            => l_balance_type_code);
6489    ELSE
6490       NULL;
6491 -- No business flow processing for business flow method of NONE.
6492    END IF;
6493 
6494    --
6495    -- call analytical criteria
6496    --
6497    
6498    --
6499    -- call description
6500    --
6501    
6502 xla_ae_lines_pkg.SetLineDescription(
6503    p_ae_header_id => l_ae_header_id
6504   ,p_description  => Description_3 (
6505      p_application_id         => p_application_id
6506    , p_ae_header_id           => l_ae_header_id 
6507 , p_source_7 => p_source_7
6508    )
6509 );
6510 
6511 
6512    --
6513    -- call ADRs
6514    -- Bug 4922099
6515    --
6516    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6517         (NVL(l_actual_upg_option, 'N') = 'O') OR
6518         (NVL(l_enc_upg_option, 'N') = 'O')
6519       )
6520    THEN
6521    NULL;
6522    --
6523    --
6524    
6525   l_ccid := AcctDerRule_8(
6526            p_application_id           => p_application_id
6527          , p_ae_header_id             => l_ae_header_id 
6528 , p_source_11 => p_source_11
6529          , x_transaction_coa_id       => l_adr_transaction_coa_id
6530          , x_accounting_coa_id        => l_adr_accounting_coa_id
6531          , x_value_type_code          => l_adr_value_type_code
6532          , p_side                     => 'NA'
6533    );
6534 
6535    xla_ae_lines_pkg.set_ccid(
6536     p_code_combination_id          => l_ccid
6537   , p_value_type_code              => l_adr_value_type_code
6538   , p_transaction_coa_id           => l_adr_transaction_coa_id
6539   , p_accounting_coa_id            => l_adr_accounting_coa_id
6540   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
6541   , p_adr_type_code                => 'S'
6542   , p_component_type               => l_component_type
6543   , p_component_code               => l_component_code
6544   , p_component_type_code          => l_component_type_code
6545   , p_component_appl_id            => l_component_appl_id
6546   , p_amb_context_code             => l_amb_context_code
6547   , p_side                         => 'NA'
6548   );
6549 
6550 
6551    --
6552    --
6553    END IF;
6554    --
6555    -- Bug 4922099
6556    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6557           (NVL(l_enc_upg_option, 'N') = 'O')
6558         ) AND
6559         (l_bflow_method_code = 'PRIOR_ENTRY')
6560       )
6561    THEN
6562       IF
6563       --
6564       1 = 2
6565       --
6566       THEN
6567       xla_accounting_err_pkg.build_message
6568                                     (p_appli_s_name            => 'XLA'
6569                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6570                                     ,p_token_1                 => 'LINE_NUMBER'
6571                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6572                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6573                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6574                                                                              l_component_type
6575                                                                             ,l_component_code
6576                                                                             ,l_component_type_code
6577                                                                             ,l_component_appl_id
6578                                                                             ,l_amb_context_code
6579                                                                             ,l_entity_code
6580                                                                             ,l_event_class_code
6581                                                                            )
6582                                     ,p_token_3                 => 'OWNER'
6583                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6584                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6585                                                                           ,p_lookup_code    => l_component_type_code
6586                                                                          )
6587                                     ,p_token_4                 => 'PRODUCT_NAME'
6588                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6589                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6590                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6591                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6592                                     ,p_ae_header_id            =>  NULL
6593                                        );
6594 
6595         IF (C_LEVEL_ERROR>= g_log_level) THEN
6596                  trace
6597                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6598                       ,p_level    => C_LEVEL_ERROR
6599                       ,p_module   => l_log_module);
6600         END IF;
6601       END IF;
6602    END IF;
6603    --
6604    --
6605    ------------------------------------------------------------------------------------------------
6606    -- 4219869 Business Flow
6607    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6608    -- Prior Entry.  Currently, the following code is always generated.
6609    ------------------------------------------------------------------------------------------------
6610    XLA_AE_LINES_PKG.ValidateCurrentLine;
6611 
6612    ------------------------------------------------------------------------------------
6613    -- 4219869 Business Flow
6614    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6615    ------------------------------------------------------------------------------------
6616    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6617 
6618    ----------------------------------------------------------------------------------
6619    -- 4219869 Business Flow
6620    -- Update journal entry status -- Need to generate this within IF <condition>
6621    ----------------------------------------------------------------------------------
6622    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6623          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6624          ,p_balance_type_code => l_balance_type_code
6625          );
6626 
6627    -------------------------------------------------------------------------------------------
6628    -- 4262811 - Generate the Accrual Reversal lines
6629    -------------------------------------------------------------------------------------------
6630    BEGIN
6631       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6632                               (g_array_event(p_event_id).array_value_num('header_index'));
6633       IF l_acc_rev_flag IS NULL THEN
6634          l_acc_rev_flag := 'N';
6635       END IF;
6636    EXCEPTION
6637       WHEN OTHERS THEN
6638          l_acc_rev_flag := 'N';
6639    END;
6640    --
6641    IF (l_acc_rev_flag = 'Y') THEN
6642 
6643        -- 4645092  ------------------------------------------------------------------------------
6644        -- To allow MPA report to determine if it should generate report process
6645        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6646        ------------------------------------------------------------------------------------------
6647 
6648        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6649        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6650 
6651        --
6652        -- Update the line information that should be overwritten
6653        --
6654        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6655                                          p_header_num   => 1);
6656        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6657 
6658        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6659 
6660        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6661           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6662        END IF;
6663 
6664       --
6665       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6666       --
6667       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6668           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6669       ELSE
6670           ---------------------------------------------------------------------------------------------------
6671           -- 4262811a Switch Sign
6672           ---------------------------------------------------------------------------------------------------
6673           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6674           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6675                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6676           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6677                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6678           -- 5132302
6679           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6680                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6681 
6682       END IF;
6683 
6684       -- 4955764
6685       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6686       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6687 
6688 
6689       XLA_AE_LINES_PKG.ValidateCurrentLine;
6690       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6691 
6692       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6693                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6694                ,p_balance_type_code => l_balance_type_code);
6695 
6696    END IF;
6697 
6698    -----------------------------------------------------------------------------------------
6699    -- 4262811 Multiperiod Accounting
6700    -----------------------------------------------------------------------------------------
6701      -- No MPA option is assigned.
6702 
6703 
6704 END IF;
6705 END IF;
6706 --
6707 
6708 --
6709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6710    trace
6711       (p_msg      => 'END of AcctLineType_17'
6712       ,p_level    => C_LEVEL_PROCEDURE
6713       ,p_module   => l_log_module);
6714 END IF;
6715 --
6716 EXCEPTION
6717   WHEN xla_exceptions_pkg.application_exception THEN
6718       RAISE;
6719   WHEN OTHERS THEN
6720        xla_exceptions_pkg.raise_message
6721            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_17');
6722 END AcctLineType_17;
6723 --
6724 
6725 ---------------------------------------
6726 --
6727 -- PRIVATE FUNCTION
6728 --         AcctLineType_18
6729 --
6730 ---------------------------------------
6731 PROCEDURE AcctLineType_18 (
6732   p_application_id        IN NUMBER
6733  ,p_event_id              IN NUMBER
6734  ,p_calculate_acctd_flag  IN VARCHAR2
6735  ,p_calculate_g_l_flag    IN VARCHAR2
6736  ,p_actual_flag           IN OUT VARCHAR2
6737  ,p_balance_type_code     OUT VARCHAR2
6738  ,p_gain_or_loss_ref      OUT VARCHAR2
6739  
6740 --Budget Account
6741  , p_source_11            IN NUMBER
6742 --Main Or Backing Code
6743  , p_source_13            IN VARCHAR2
6744 --Accounting Reversal Flag
6745  , p_source_16            IN VARCHAR2
6746 --PO Distribution Identifier
6747  , p_source_29            IN NUMBER
6748 --Entered Amount
6749  , p_source_33            IN NUMBER
6750 --Currency Code
6751  , p_source_34            IN VARCHAR2
6752 --Accounted Amount
6753  , p_source_35            IN NUMBER
6754 --Allocated to Main Document Distribution Type
6755  , p_source_49            IN VARCHAR2
6756 --Allocated to Main Document Distribution Identifier
6757  , p_source_51            IN NUMBER
6758 --PO Header Identifier
6759  , p_source_52            IN NUMBER
6760 --Applied To Application Identifier
6761  , p_source_53            IN NUMBER
6762 --Applied To Distribution Link Type
6763  , p_source_54            IN VARCHAR2
6764 --Applied To Entity Code
6765  , p_source_55            IN VARCHAR2
6766 --Applied To Distribution Identifier 1
6767  , p_source_56            IN NUMBER
6768 --Applied To Header Identifier 1
6769  , p_source_57            IN NUMBER
6770 --Distribution Link Type
6771  , p_source_58            IN VARCHAR2
6772 --PO Encumbrance Upgrade Option
6773  , p_source_59            IN VARCHAR2
6774 --JFMIP Reference
6775  , p_source_60            IN VARCHAR2
6776 --PO Upgrade Encumbrance Type Identifier
6777  , p_source_61            IN NUMBER
6778 --Backing Requisition Prevent Encumbrance Changed Flag
6779  , p_source_65            IN VARCHAR2
6780 )
6781 IS
6782 
6783 l_component_type              VARCHAR2(80);
6784 l_component_code              VARCHAR2(30);
6785 l_component_type_code         VARCHAR2(1);
6786 l_component_appl_id           INTEGER;
6787 l_amb_context_code            VARCHAR2(30);
6788 l_entity_code                 VARCHAR2(30);
6789 l_event_class_code            VARCHAR2(30);
6790 l_ae_header_id                NUMBER;
6791 l_event_type_code             VARCHAR2(30);
6792 l_line_definition_code        VARCHAR2(30);
6793 l_line_definition_owner_code  VARCHAR2(1);
6794 --
6795 -- adr variables
6796 l_segment                     VARCHAR2(30);
6797 l_ccid                        NUMBER;
6798 l_adr_transaction_coa_id      NUMBER;
6799 l_adr_accounting_coa_id       NUMBER;
6800 l_adr_flexfield_segment_code  VARCHAR2(30);
6801 l_adr_flex_value_set_id       NUMBER;
6802 l_adr_value_type_code         VARCHAR2(30);
6803 l_adr_value_combination_id    NUMBER;
6804 l_adr_value_segment_code      VARCHAR2(30);
6805 
6806 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6807 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6808 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6809 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6810 
6811 -- 4262811 Variables ------------------------------------------------------------------------------------------
6812 l_entered_amt_idx             NUMBER;
6813 l_accted_amt_idx              NUMBER;
6814 l_acc_rev_flag                VARCHAR2(1);
6815 l_accrual_line_num            NUMBER;
6816 l_tmp_amt                     NUMBER;
6817 l_acc_rev_natural_side_code   VARCHAR2(1);
6818 
6819 l_num_entries                 NUMBER;
6820 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6821 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6822 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6823 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6824 l_recog_line_1                NUMBER;
6825 l_recog_line_2                NUMBER;
6826 
6827 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6828 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6829 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6830 
6831 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6832 
6833 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6834 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6835 
6836 ---------------------------------------------------------------------------------------------------------------
6837 
6838 
6839 --
6840 -- bulk performance
6841 --
6842 l_balance_type_code           VARCHAR2(1);
6843 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6844 l_log_module                  VARCHAR2(240);
6845 
6846 --
6847 -- Upgrade strategy
6848 --
6849 l_actual_upg_option           VARCHAR2(1);
6850 l_enc_upg_option           VARCHAR2(1);
6851 
6852 --
6853 BEGIN
6854 --
6855 IF g_log_enabled THEN
6856       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
6857 END IF;
6858 --
6859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6860 
6861       trace
6862          (p_msg      => 'BEGIN of AcctLineType_18'
6863          ,p_level    => C_LEVEL_PROCEDURE
6864          ,p_module   => l_log_module);
6865 
6866 END IF;
6867 --
6868 l_component_type             := 'AMB_JLT';
6869 l_component_code             := 'REINSTATE_REQ_ENC_FROM_PO_DR';
6870 l_component_type_code        := 'S';
6871 l_component_appl_id          :=  201;
6872 l_amb_context_code           := 'DEFAULT';
6873 l_entity_code                := 'PURCHASE_ORDER';
6874 l_event_class_code           := 'PO_PA';
6875 l_event_type_code            := 'PO_PA_ALL';
6876 l_line_definition_owner_code := 'S';
6877 l_line_definition_code       := 'PO_PA_ENC_ALL';
6878 --
6879 l_balance_type_code          := 'E';
6880 l_segment                     := NULL;
6881 l_ccid                        := NULL;
6882 l_adr_transaction_coa_id      := NULL;
6883 l_adr_accounting_coa_id       := NULL;
6884 l_adr_flexfield_segment_code  := NULL;
6885 l_adr_flex_value_set_id       := NULL;
6886 l_adr_value_type_code         := NULL;
6887 l_adr_value_combination_id    := NULL;
6888 l_adr_value_segment_code      := NULL;
6889 
6890 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
6891 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
6892 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
6893 l_budgetary_control_flag     := 'Y';
6894 
6895 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6896 l_bflow_applied_to_amt       := NULL; -- 5132302
6897 l_entered_amt_idx            := NULL;          -- 4262811
6898 l_accted_amt_idx             := NULL;          -- 4262811
6899 l_acc_rev_flag               := NULL;          -- 4262811
6900 l_accrual_line_num           := NULL;          -- 4262811
6901 l_tmp_amt                    := NULL;          -- 4262811
6902 --
6903  
6904 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6905     l_balance_type_code <> 'B' THEN
6906 IF (NVL(
6907 xla_ae_sources_pkg.GetSystemSourceChar(
6908    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6909  , p_source_type_code      => 'Y'
6910  , p_source_application_id =>  602
6911 ),'
6912 ') =  'PO_PA_UNRESERVED' OR 
6913 NVL(
6914 xla_ae_sources_pkg.GetSystemSourceChar(
6915    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6916  , p_source_type_code      => 'Y'
6917  , p_source_application_id =>  602
6918 ),'
6919 ') =  'PO_PA_REJECTED' OR 
6920 NVL(
6921 xla_ae_sources_pkg.GetSystemSourceChar(
6922    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6923  , p_source_type_code      => 'Y'
6924  , p_source_application_id =>  602
6925 ),'
6926 ') =  'PO_PA_INV_CANCELLED') AND 
6927 NVL(p_source_13,'
6928 ') =  'B_REQ' AND 
6929 NVL(p_source_65,'
6930 ') =  'N'
6931  THEN 
6932 
6933    --
6934    XLA_AE_LINES_PKG.SetNewLine;
6935 
6936    p_balance_type_code          := l_balance_type_code;
6937    -- set the flag so later we will know whether the gain loss line needs to be created
6938    
6939    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6940      p_actual_flag :='A';
6941    END IF;
6942 
6943    --
6944    -- bulk performance
6945    --
6946    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6947                                       p_header_num   => 0); -- 4262811
6948    --
6949    -- set accounting line options
6950    --
6951    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6952            p_natural_side_code          => 'D'
6953          , p_gain_or_loss_flag          => 'N'
6954          , p_gl_transfer_mode_code      => 'S'
6955          , p_acct_entry_type_code       => 'E'
6956          , p_switch_side_flag           => 'N'
6957          , p_merge_duplicate_code       => 'N'
6958          );
6959    --
6960    l_acc_rev_natural_side_code := 'C';  -- 4262811
6961    -- 
6962    --
6963    -- set accounting line type info
6964    --
6965    xla_ae_lines_pkg.SetAcctLineType
6966       (p_component_type             => l_component_type
6967       ,p_event_type_code            => l_event_type_code
6968       ,p_line_definition_owner_code => l_line_definition_owner_code
6969       ,p_line_definition_code       => l_line_definition_code
6970       ,p_accounting_line_code       => l_component_code
6971       ,p_accounting_line_type_code  => l_component_type_code
6972       ,p_accounting_line_appl_id    => l_component_appl_id
6973       ,p_amb_context_code           => l_amb_context_code
6974       ,p_entity_code                => l_entity_code
6975       ,p_event_class_code           => l_event_class_code);
6976    --
6977    -- set accounting class
6978    --
6979    xla_ae_lines_pkg.SetAcctClass(
6980            p_accounting_class_code  => 'REQUISITION'
6981          , p_ae_header_id           => l_ae_header_id
6982          );
6983 
6984    --
6985    -- set rounding class
6986    --
6987    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6988                       'REQUISITION';
6989 
6990    --
6991    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6992    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6993    --
6994    -- bulk performance
6995    --
6996    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6997 
6998    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6999       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7000 
7001    -- 4955764
7002    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7003       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7004 
7005    -- 4458381 Public Sector Enh
7006    
7007    --
7008    -- set accounting attributes for the line type
7009    --
7010    l_entered_amt_idx := 23;
7011    l_accted_amt_idx  := 25;
7012    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7013    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7014    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
7015    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
7016    l_rec_acct_attrs.array_num_value(2)  := 
7017 xla_ae_sources_pkg.GetSystemSourceNum(
7018    p_source_code           => 'XLA_EVENT_APPL_ID'
7019  , p_source_type_code      => 'Y'
7020  , p_source_application_id =>  602
7021 );
7022    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
7023    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
7024    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
7025    l_rec_acct_attrs.array_char_value(4)  := 
7026 xla_ae_sources_pkg.GetSystemSourceChar(
7027    p_source_code           => 'XLA_ENTITY_CODE'
7028  , p_source_type_code      => 'Y'
7029  , p_source_application_id =>  602
7030 );
7031    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
7032    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
7033    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
7034    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
7035    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
7036    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
7037    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7038    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
7039    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
7040    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
7041    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
7042    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
7043    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7044    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
7045    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
7046    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
7047    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
7048    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
7049    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
7050    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
7051    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
7052    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
7053    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
7054    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
7055    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
7056    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
7057    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
7058    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
7059    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
7060    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
7061    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
7062    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
7063    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
7064    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
7065    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
7066    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
7067    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
7068    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
7069    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
7070    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
7071    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
7072    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
7073    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
7074    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
7075    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
7076    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
7077    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
7078    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
7079    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
7080    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_29);
7081    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
7082    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
7083    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
7084    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
7085 
7086    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7087    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7088 
7089    ---------------------------------------------------------------------------------------------------------------
7090    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7091    ---------------------------------------------------------------------------------------------------------------
7092    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7093 
7094    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7095    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7096 
7097    IF xla_accounting_cache_pkg.GetValueChar
7098          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7099          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7100    AND l_bflow_method_code = 'PRIOR_ENTRY'
7101 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7102    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7103          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7104        )
7105    THEN
7106          xla_ae_lines_pkg.BflowUpgEntry
7107            (p_business_method_code    => l_bflow_method_code
7108            ,p_business_class_code     => l_bflow_class_code
7109            ,p_balance_type            => l_balance_type_code);
7110    ELSE
7111       NULL;
7112 XLA_AE_LINES_PKG.business_flow_validation(
7113                                 p_business_method_code     => l_bflow_method_code
7114                                ,p_business_class_code      => l_bflow_class_code
7115                                ,p_inherit_description_flag => l_inherit_desc_flag);
7116    END IF;
7117 
7118    --
7119    -- call analytical criteria
7120    --
7121    -- Inherited Analytical Criteria for business flow method of Prior Entry.
7122    --
7123    -- call description
7124    --
7125    -- No description or it is inherited.
7126    --
7127    -- call ADRs
7128    -- Bug 4922099
7129    --
7130    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7131         (NVL(l_actual_upg_option, 'N') = 'O') OR
7132         (NVL(l_enc_upg_option, 'N') = 'O')
7133       )
7134    THEN
7135    NULL;
7136    --
7137    --
7138    
7139    --
7140    --
7141    END IF;
7142    --
7143    -- Bug 4922099
7144    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7145           (NVL(l_enc_upg_option, 'N') = 'O')
7146         ) AND
7147         (l_bflow_method_code = 'PRIOR_ENTRY')
7148       )
7149    THEN
7150       IF
7151       --
7152       1 = 1
7153       --
7154       THEN
7155       xla_accounting_err_pkg.build_message
7156                                     (p_appli_s_name            => 'XLA'
7157                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7158                                     ,p_token_1                 => 'LINE_NUMBER'
7159                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7160                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7161                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7162                                                                              l_component_type
7163                                                                             ,l_component_code
7164                                                                             ,l_component_type_code
7165                                                                             ,l_component_appl_id
7166                                                                             ,l_amb_context_code
7167                                                                             ,l_entity_code
7168                                                                             ,l_event_class_code
7169                                                                            )
7170                                     ,p_token_3                 => 'OWNER'
7171                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7172                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7173                                                                           ,p_lookup_code    => l_component_type_code
7174                                                                          )
7175                                     ,p_token_4                 => 'PRODUCT_NAME'
7176                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7177                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7178                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7179                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7180                                     ,p_ae_header_id            =>  NULL
7181                                        );
7182 
7183         IF (C_LEVEL_ERROR>= g_log_level) THEN
7184                  trace
7185                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7186                       ,p_level    => C_LEVEL_ERROR
7187                       ,p_module   => l_log_module);
7188         END IF;
7189       END IF;
7190    END IF;
7191    --
7192    --
7193    ------------------------------------------------------------------------------------------------
7194    -- 4219869 Business Flow
7195    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7196    -- Prior Entry.  Currently, the following code is always generated.
7197    ------------------------------------------------------------------------------------------------
7198    -- No ValidateCurrentLine for business flow method of Prior Entry
7199 
7200    ------------------------------------------------------------------------------------
7201    -- 4219869 Business Flow
7202    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7203    ------------------------------------------------------------------------------------
7204    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7205 
7206    ----------------------------------------------------------------------------------
7207    -- 4219869 Business Flow
7208    -- Update journal entry status -- Need to generate this within IF <condition>
7209    ----------------------------------------------------------------------------------
7210    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7211          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7212          ,p_balance_type_code => l_balance_type_code
7213          );
7214 
7215    -------------------------------------------------------------------------------------------
7216    -- 4262811 - Generate the Accrual Reversal lines
7217    -------------------------------------------------------------------------------------------
7218    BEGIN
7219       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7220                               (g_array_event(p_event_id).array_value_num('header_index'));
7221       IF l_acc_rev_flag IS NULL THEN
7222          l_acc_rev_flag := 'N';
7223       END IF;
7224    EXCEPTION
7225       WHEN OTHERS THEN
7226          l_acc_rev_flag := 'N';
7227    END;
7228    --
7229    IF (l_acc_rev_flag = 'Y') THEN
7230 
7231        -- 4645092  ------------------------------------------------------------------------------
7232        -- To allow MPA report to determine if it should generate report process
7233        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7234        ------------------------------------------------------------------------------------------
7235 
7236        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7237        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7238 
7239        --
7240        -- Update the line information that should be overwritten
7241        --
7242        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7243                                          p_header_num   => 1);
7244        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7245 
7246        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7247 
7248        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7249           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7250        END IF;
7251 
7252       --
7253       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7254       --
7255       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7256           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7257       ELSE
7258           ---------------------------------------------------------------------------------------------------
7259           -- 4262811a Switch Sign
7260           ---------------------------------------------------------------------------------------------------
7261           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7262           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7263                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7264           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7265                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7266           -- 5132302
7267           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7268                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7269 
7270       END IF;
7271 
7272       -- 4955764
7273       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7274       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7275 
7276 
7277       XLA_AE_LINES_PKG.ValidateCurrentLine;
7278       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7279 
7280       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7281                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7282                ,p_balance_type_code => l_balance_type_code);
7283 
7284    END IF;
7285 
7286    -----------------------------------------------------------------------------------------
7287    -- 4262811 Multiperiod Accounting
7288    -----------------------------------------------------------------------------------------
7289      -- No MPA option is assigned.
7290 
7291 
7292 END IF;
7293 END IF;
7294 --
7295 
7296 --
7297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7298    trace
7299       (p_msg      => 'END of AcctLineType_18'
7300       ,p_level    => C_LEVEL_PROCEDURE
7301       ,p_module   => l_log_module);
7302 END IF;
7303 --
7304 EXCEPTION
7305   WHEN xla_exceptions_pkg.application_exception THEN
7306       RAISE;
7307   WHEN OTHERS THEN
7308        xla_exceptions_pkg.raise_message
7309            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_18');
7310 END AcctLineType_18;
7311 --
7312 
7313 ---------------------------------------
7314 --
7315 -- PRIVATE FUNCTION
7316 --         AcctLineType_19
7317 --
7318 ---------------------------------------
7319 PROCEDURE AcctLineType_19 (
7320   p_application_id        IN NUMBER
7321  ,p_event_id              IN NUMBER
7322  ,p_calculate_acctd_flag  IN VARCHAR2
7323  ,p_calculate_g_l_flag    IN VARCHAR2
7324  ,p_actual_flag           IN OUT VARCHAR2
7325  ,p_balance_type_code     OUT VARCHAR2
7326  ,p_gain_or_loss_ref      OUT VARCHAR2
7327  
7328 --Budget Account
7329  , p_source_11            IN NUMBER
7330 --Main Or Backing Code
7331  , p_source_13            IN VARCHAR2
7332 --Accounting Reversal Flag
7333  , p_source_16            IN VARCHAR2
7334 --PO Distribution Identifier
7335  , p_source_29            IN NUMBER
7336 --Entered Amount
7337  , p_source_33            IN NUMBER
7338 --Currency Code
7339  , p_source_34            IN VARCHAR2
7340 --Accounted Amount
7341  , p_source_35            IN NUMBER
7342 --Allocated to Main Document Distribution Type
7343  , p_source_49            IN VARCHAR2
7344 --Allocated to Main Document Distribution Identifier
7345  , p_source_51            IN NUMBER
7346 --Applied To Application Identifier
7347  , p_source_53            IN NUMBER
7348 --Applied To Distribution Link Type
7349  , p_source_54            IN VARCHAR2
7350 --Applied To Entity Code
7351  , p_source_55            IN VARCHAR2
7352 --Applied To Distribution Identifier 1
7353  , p_source_56            IN NUMBER
7354 --Applied To Header Identifier 1
7355  , p_source_57            IN NUMBER
7356 --Distribution Link Type
7357  , p_source_58            IN VARCHAR2
7358 --PO Encumbrance Upgrade Option
7359  , p_source_59            IN VARCHAR2
7360 --JFMIP Reference
7361  , p_source_60            IN VARCHAR2
7362 --PO Upgrade Encumbrance Type Identifier
7363  , p_source_61            IN NUMBER
7364 --PO Release Identifier
7365  , p_source_66            IN NUMBER
7366 )
7367 IS
7368 
7369 l_component_type              VARCHAR2(80);
7370 l_component_code              VARCHAR2(30);
7371 l_component_type_code         VARCHAR2(1);
7372 l_component_appl_id           INTEGER;
7373 l_amb_context_code            VARCHAR2(30);
7374 l_entity_code                 VARCHAR2(30);
7375 l_event_class_code            VARCHAR2(30);
7376 l_ae_header_id                NUMBER;
7377 l_event_type_code             VARCHAR2(30);
7378 l_line_definition_code        VARCHAR2(30);
7379 l_line_definition_owner_code  VARCHAR2(1);
7380 --
7381 -- adr variables
7382 l_segment                     VARCHAR2(30);
7383 l_ccid                        NUMBER;
7384 l_adr_transaction_coa_id      NUMBER;
7385 l_adr_accounting_coa_id       NUMBER;
7386 l_adr_flexfield_segment_code  VARCHAR2(30);
7387 l_adr_flex_value_set_id       NUMBER;
7388 l_adr_value_type_code         VARCHAR2(30);
7389 l_adr_value_combination_id    NUMBER;
7390 l_adr_value_segment_code      VARCHAR2(30);
7391 
7392 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7393 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7394 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7395 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7396 
7397 -- 4262811 Variables ------------------------------------------------------------------------------------------
7398 l_entered_amt_idx             NUMBER;
7399 l_accted_amt_idx              NUMBER;
7400 l_acc_rev_flag                VARCHAR2(1);
7401 l_accrual_line_num            NUMBER;
7402 l_tmp_amt                     NUMBER;
7403 l_acc_rev_natural_side_code   VARCHAR2(1);
7404 
7405 l_num_entries                 NUMBER;
7406 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7407 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7408 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7409 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7410 l_recog_line_1                NUMBER;
7411 l_recog_line_2                NUMBER;
7412 
7413 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7414 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7415 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7416 
7417 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7418 
7419 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7420 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7421 
7422 ---------------------------------------------------------------------------------------------------------------
7423 
7424 
7425 --
7426 -- bulk performance
7427 --
7428 l_balance_type_code           VARCHAR2(1);
7429 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7430 l_log_module                  VARCHAR2(240);
7431 
7432 --
7433 -- Upgrade strategy
7434 --
7435 l_actual_upg_option           VARCHAR2(1);
7436 l_enc_upg_option           VARCHAR2(1);
7437 
7438 --
7439 BEGIN
7440 --
7441 IF g_log_enabled THEN
7442       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
7443 END IF;
7444 --
7445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7446 
7447       trace
7448          (p_msg      => 'BEGIN of AcctLineType_19'
7449          ,p_level    => C_LEVEL_PROCEDURE
7450          ,p_module   => l_log_module);
7451 
7452 END IF;
7453 --
7454 l_component_type             := 'AMB_JLT';
7455 l_component_code             := 'REINSTATE_REQ_ENC_FROM_REL_CR';
7456 l_component_type_code        := 'S';
7457 l_component_appl_id          :=  201;
7458 l_amb_context_code           := 'DEFAULT';
7459 l_entity_code                := 'RELEASE';
7460 l_event_class_code           := 'RELEASE';
7461 l_event_type_code            := 'RELEASE_ALL';
7462 l_line_definition_owner_code := 'S';
7463 l_line_definition_code       := 'RELEASE_ENC_ALL';
7464 --
7465 l_balance_type_code          := 'E';
7466 l_segment                     := NULL;
7467 l_ccid                        := NULL;
7468 l_adr_transaction_coa_id      := NULL;
7469 l_adr_accounting_coa_id       := NULL;
7470 l_adr_flexfield_segment_code  := NULL;
7471 l_adr_flex_value_set_id       := NULL;
7472 l_adr_value_type_code         := NULL;
7473 l_adr_value_combination_id    := NULL;
7474 l_adr_value_segment_code      := NULL;
7475 
7476 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
7477 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
7478 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
7479 l_budgetary_control_flag     := 'Y';
7480 
7481 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7482 l_bflow_applied_to_amt       := NULL; -- 5132302
7483 l_entered_amt_idx            := NULL;          -- 4262811
7484 l_accted_amt_idx             := NULL;          -- 4262811
7485 l_acc_rev_flag               := NULL;          -- 4262811
7486 l_accrual_line_num           := NULL;          -- 4262811
7487 l_tmp_amt                    := NULL;          -- 4262811
7488 --
7489  
7490 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7491     l_balance_type_code <> 'B' THEN
7492 IF (NVL(
7493 xla_ae_sources_pkg.GetSystemSourceChar(
7494    p_source_code           => 'XLA_EVENT_TYPE_CODE'
7495  , p_source_type_code      => 'Y'
7496  , p_source_application_id =>  602
7497 ),'
7498 ') =  'RELEASE_CANCELLED' OR 
7499 NVL(
7500 xla_ae_sources_pkg.GetSystemSourceChar(
7501    p_source_code           => 'XLA_EVENT_TYPE_CODE'
7502  , p_source_type_code      => 'Y'
7503  , p_source_application_id =>  602
7504 ),'
7505 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
7506 NVL(p_source_13,'
7507 ') =  'B_REQ'
7508  THEN 
7509 
7510    --
7511    XLA_AE_LINES_PKG.SetNewLine;
7512 
7513    p_balance_type_code          := l_balance_type_code;
7514    -- set the flag so later we will know whether the gain loss line needs to be created
7515    
7516    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7517      p_actual_flag :='A';
7518    END IF;
7519 
7520    --
7521    -- bulk performance
7522    --
7523    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7524                                       p_header_num   => 0); -- 4262811
7525    --
7526    -- set accounting line options
7527    --
7528    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7529            p_natural_side_code          => 'C'
7530          , p_gain_or_loss_flag          => 'N'
7531          , p_gl_transfer_mode_code      => 'S'
7532          , p_acct_entry_type_code       => 'E'
7533          , p_switch_side_flag           => 'N'
7534          , p_merge_duplicate_code       => 'N'
7535          );
7536    --
7537    l_acc_rev_natural_side_code := 'D';  -- 4262811
7538    -- 
7539    --
7540    -- set accounting line type info
7541    --
7542    xla_ae_lines_pkg.SetAcctLineType
7543       (p_component_type             => l_component_type
7544       ,p_event_type_code            => l_event_type_code
7545       ,p_line_definition_owner_code => l_line_definition_owner_code
7546       ,p_line_definition_code       => l_line_definition_code
7547       ,p_accounting_line_code       => l_component_code
7548       ,p_accounting_line_type_code  => l_component_type_code
7549       ,p_accounting_line_appl_id    => l_component_appl_id
7550       ,p_amb_context_code           => l_amb_context_code
7551       ,p_entity_code                => l_entity_code
7552       ,p_event_class_code           => l_event_class_code);
7553    --
7554    -- set accounting class
7555    --
7556    xla_ae_lines_pkg.SetAcctClass(
7557            p_accounting_class_code  => 'PURCHASE_ORDER'
7558          , p_ae_header_id           => l_ae_header_id
7559          );
7560 
7561    --
7562    -- set rounding class
7563    --
7564    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7565                       'PURCHASE_ORDER';
7566 
7567    --
7568    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7569    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7570    --
7571    -- bulk performance
7572    --
7573    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7574 
7575    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7576       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7577 
7578    -- 4955764
7579    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7580       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7581 
7582    -- 4458381 Public Sector Enh
7583    
7584    --
7585    -- set accounting attributes for the line type
7586    --
7587    l_entered_amt_idx := 23;
7588    l_accted_amt_idx  := 25;
7589    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7590    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7591    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
7592    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
7593    l_rec_acct_attrs.array_num_value(2)  := 
7594 xla_ae_sources_pkg.GetSystemSourceNum(
7595    p_source_code           => 'XLA_EVENT_APPL_ID'
7596  , p_source_type_code      => 'Y'
7597  , p_source_application_id =>  602
7598 );
7599    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
7600    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
7601    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
7602    l_rec_acct_attrs.array_char_value(4)  := 
7603 xla_ae_sources_pkg.GetSystemSourceChar(
7604    p_source_code           => 'XLA_ENTITY_CODE'
7605  , p_source_type_code      => 'Y'
7606  , p_source_application_id =>  602
7607 );
7608    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
7609    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
7610    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
7611    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
7612    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
7613    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
7614    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7615    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
7616    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
7617    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
7618    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
7619    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
7620    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7621    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
7622    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
7623    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
7624    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
7625    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
7626    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
7627    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
7628    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
7629    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
7630    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
7631    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
7632    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
7633    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
7634    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
7635    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
7636    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
7637    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
7638    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
7639    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
7640    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
7641    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
7642    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
7643    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
7644    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
7645    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
7646    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
7647    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
7648    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
7649    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
7650    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
7651    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
7652    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
7653    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
7654    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
7655    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
7656    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
7657    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
7658    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
7659    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
7660    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
7661    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
7662 
7663    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7664    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7665 
7666    ---------------------------------------------------------------------------------------------------------------
7667    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7668    ---------------------------------------------------------------------------------------------------------------
7669    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7670 
7671    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7672    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7673 
7674    IF xla_accounting_cache_pkg.GetValueChar
7675          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7676          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7677    AND l_bflow_method_code = 'PRIOR_ENTRY'
7678 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7679    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7680          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7681        )
7682    THEN
7683          xla_ae_lines_pkg.BflowUpgEntry
7684            (p_business_method_code    => l_bflow_method_code
7685            ,p_business_class_code     => l_bflow_class_code
7686            ,p_balance_type            => l_balance_type_code);
7687    ELSE
7688       NULL;
7689 XLA_AE_LINES_PKG.business_flow_validation(
7690                                 p_business_method_code     => l_bflow_method_code
7691                                ,p_business_class_code      => l_bflow_class_code
7692                                ,p_inherit_description_flag => l_inherit_desc_flag);
7693    END IF;
7694 
7695    --
7696    -- call analytical criteria
7697    --
7698    -- Inherited Analytical Criteria for business flow method of Prior Entry.
7699    --
7700    -- call description
7701    --
7702    -- No description or it is inherited.
7703    --
7704    -- call ADRs
7705    -- Bug 4922099
7706    --
7707    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7708         (NVL(l_actual_upg_option, 'N') = 'O') OR
7709         (NVL(l_enc_upg_option, 'N') = 'O')
7710       )
7711    THEN
7712    NULL;
7713    --
7714    --
7715    
7716    --
7717    --
7718    END IF;
7719    --
7720    -- Bug 4922099
7721    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7722           (NVL(l_enc_upg_option, 'N') = 'O')
7723         ) AND
7724         (l_bflow_method_code = 'PRIOR_ENTRY')
7725       )
7726    THEN
7727       IF
7728       --
7729       1 = 1
7730       --
7731       THEN
7732       xla_accounting_err_pkg.build_message
7733                                     (p_appli_s_name            => 'XLA'
7734                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7735                                     ,p_token_1                 => 'LINE_NUMBER'
7736                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7737                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7738                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7739                                                                              l_component_type
7740                                                                             ,l_component_code
7741                                                                             ,l_component_type_code
7742                                                                             ,l_component_appl_id
7743                                                                             ,l_amb_context_code
7744                                                                             ,l_entity_code
7745                                                                             ,l_event_class_code
7746                                                                            )
7747                                     ,p_token_3                 => 'OWNER'
7748                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7749                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7750                                                                           ,p_lookup_code    => l_component_type_code
7751                                                                          )
7752                                     ,p_token_4                 => 'PRODUCT_NAME'
7753                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7754                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7755                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7756                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7757                                     ,p_ae_header_id            =>  NULL
7758                                        );
7759 
7760         IF (C_LEVEL_ERROR>= g_log_level) THEN
7761                  trace
7762                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7763                       ,p_level    => C_LEVEL_ERROR
7764                       ,p_module   => l_log_module);
7765         END IF;
7766       END IF;
7767    END IF;
7768    --
7769    --
7770    ------------------------------------------------------------------------------------------------
7771    -- 4219869 Business Flow
7772    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7773    -- Prior Entry.  Currently, the following code is always generated.
7774    ------------------------------------------------------------------------------------------------
7775    -- No ValidateCurrentLine for business flow method of Prior Entry
7776 
7777    ------------------------------------------------------------------------------------
7778    -- 4219869 Business Flow
7779    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7780    ------------------------------------------------------------------------------------
7781    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7782 
7783    ----------------------------------------------------------------------------------
7784    -- 4219869 Business Flow
7785    -- Update journal entry status -- Need to generate this within IF <condition>
7786    ----------------------------------------------------------------------------------
7787    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7788          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7789          ,p_balance_type_code => l_balance_type_code
7790          );
7791 
7792    -------------------------------------------------------------------------------------------
7793    -- 4262811 - Generate the Accrual Reversal lines
7794    -------------------------------------------------------------------------------------------
7795    BEGIN
7796       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7797                               (g_array_event(p_event_id).array_value_num('header_index'));
7798       IF l_acc_rev_flag IS NULL THEN
7799          l_acc_rev_flag := 'N';
7800       END IF;
7801    EXCEPTION
7802       WHEN OTHERS THEN
7803          l_acc_rev_flag := 'N';
7804    END;
7805    --
7806    IF (l_acc_rev_flag = 'Y') THEN
7807 
7808        -- 4645092  ------------------------------------------------------------------------------
7809        -- To allow MPA report to determine if it should generate report process
7810        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7811        ------------------------------------------------------------------------------------------
7812 
7813        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7814        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7815 
7816        --
7817        -- Update the line information that should be overwritten
7818        --
7819        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7820                                          p_header_num   => 1);
7821        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7822 
7823        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7824 
7825        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7826           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7827        END IF;
7828 
7829       --
7830       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7831       --
7832       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7833           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7834       ELSE
7835           ---------------------------------------------------------------------------------------------------
7836           -- 4262811a Switch Sign
7837           ---------------------------------------------------------------------------------------------------
7838           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7839           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7840                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7841           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7842                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7843           -- 5132302
7844           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7845                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7846 
7847       END IF;
7848 
7849       -- 4955764
7850       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7851       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7852 
7853 
7854       XLA_AE_LINES_PKG.ValidateCurrentLine;
7855       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7856 
7857       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7858                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7859                ,p_balance_type_code => l_balance_type_code);
7860 
7861    END IF;
7862 
7863    -----------------------------------------------------------------------------------------
7864    -- 4262811 Multiperiod Accounting
7865    -----------------------------------------------------------------------------------------
7866      -- No MPA option is assigned.
7867 
7868 
7869 END IF;
7870 END IF;
7871 --
7872 
7873 --
7874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7875    trace
7876       (p_msg      => 'END of AcctLineType_19'
7877       ,p_level    => C_LEVEL_PROCEDURE
7878       ,p_module   => l_log_module);
7879 END IF;
7880 --
7881 EXCEPTION
7882   WHEN xla_exceptions_pkg.application_exception THEN
7883       RAISE;
7884   WHEN OTHERS THEN
7885        xla_exceptions_pkg.raise_message
7886            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_19');
7887 END AcctLineType_19;
7888 --
7889 
7890 ---------------------------------------
7891 --
7892 -- PRIVATE FUNCTION
7893 --         AcctLineType_20
7894 --
7895 ---------------------------------------
7896 PROCEDURE AcctLineType_20 (
7897   p_application_id        IN NUMBER
7898  ,p_event_id              IN NUMBER
7899  ,p_calculate_acctd_flag  IN VARCHAR2
7900  ,p_calculate_g_l_flag    IN VARCHAR2
7901  ,p_actual_flag           IN OUT VARCHAR2
7902  ,p_balance_type_code     OUT VARCHAR2
7903  ,p_gain_or_loss_ref      OUT VARCHAR2
7904  
7905 --Budget Account
7906  , p_source_11            IN NUMBER
7907 --Main Or Backing Code
7908  , p_source_13            IN VARCHAR2
7909 --Accounting Reversal Flag
7910  , p_source_16            IN VARCHAR2
7911 --PO Distribution Identifier
7912  , p_source_29            IN NUMBER
7913 --Entered Amount
7914  , p_source_33            IN NUMBER
7915 --Currency Code
7916  , p_source_34            IN VARCHAR2
7917 --Accounted Amount
7918  , p_source_35            IN NUMBER
7919 --Allocated to Main Document Distribution Type
7920  , p_source_49            IN VARCHAR2
7921 --Allocated to Main Document Distribution Identifier
7922  , p_source_51            IN NUMBER
7923 --Applied To Application Identifier
7924  , p_source_53            IN NUMBER
7925 --Applied To Distribution Link Type
7926  , p_source_54            IN VARCHAR2
7927 --Applied To Entity Code
7928  , p_source_55            IN VARCHAR2
7929 --Applied To Distribution Identifier 1
7930  , p_source_56            IN NUMBER
7931 --Applied To Header Identifier 1
7932  , p_source_57            IN NUMBER
7933 --Distribution Link Type
7934  , p_source_58            IN VARCHAR2
7935 --PO Encumbrance Upgrade Option
7936  , p_source_59            IN VARCHAR2
7937 --JFMIP Reference
7938  , p_source_60            IN VARCHAR2
7939 --PO Upgrade Encumbrance Type Identifier
7940  , p_source_61            IN NUMBER
7941 --PO Release Identifier
7942  , p_source_66            IN NUMBER
7943 )
7944 IS
7945 
7946 l_component_type              VARCHAR2(80);
7947 l_component_code              VARCHAR2(30);
7948 l_component_type_code         VARCHAR2(1);
7949 l_component_appl_id           INTEGER;
7950 l_amb_context_code            VARCHAR2(30);
7951 l_entity_code                 VARCHAR2(30);
7952 l_event_class_code            VARCHAR2(30);
7953 l_ae_header_id                NUMBER;
7954 l_event_type_code             VARCHAR2(30);
7955 l_line_definition_code        VARCHAR2(30);
7956 l_line_definition_owner_code  VARCHAR2(1);
7957 --
7958 -- adr variables
7959 l_segment                     VARCHAR2(30);
7960 l_ccid                        NUMBER;
7961 l_adr_transaction_coa_id      NUMBER;
7962 l_adr_accounting_coa_id       NUMBER;
7963 l_adr_flexfield_segment_code  VARCHAR2(30);
7964 l_adr_flex_value_set_id       NUMBER;
7965 l_adr_value_type_code         VARCHAR2(30);
7966 l_adr_value_combination_id    NUMBER;
7967 l_adr_value_segment_code      VARCHAR2(30);
7968 
7969 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7970 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7971 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7972 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7973 
7974 -- 4262811 Variables ------------------------------------------------------------------------------------------
7975 l_entered_amt_idx             NUMBER;
7976 l_accted_amt_idx              NUMBER;
7977 l_acc_rev_flag                VARCHAR2(1);
7978 l_accrual_line_num            NUMBER;
7979 l_tmp_amt                     NUMBER;
7980 l_acc_rev_natural_side_code   VARCHAR2(1);
7981 
7982 l_num_entries                 NUMBER;
7983 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7984 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7985 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7986 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7987 l_recog_line_1                NUMBER;
7988 l_recog_line_2                NUMBER;
7989 
7990 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7991 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7992 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7993 
7994 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7995 
7996 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7997 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7998 
7999 ---------------------------------------------------------------------------------------------------------------
8000 
8001 
8002 --
8003 -- bulk performance
8004 --
8005 l_balance_type_code           VARCHAR2(1);
8006 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8007 l_log_module                  VARCHAR2(240);
8008 
8009 --
8010 -- Upgrade strategy
8011 --
8012 l_actual_upg_option           VARCHAR2(1);
8013 l_enc_upg_option           VARCHAR2(1);
8014 
8015 --
8016 BEGIN
8017 --
8018 IF g_log_enabled THEN
8019       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
8020 END IF;
8021 --
8022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8023 
8024       trace
8025          (p_msg      => 'BEGIN of AcctLineType_20'
8026          ,p_level    => C_LEVEL_PROCEDURE
8027          ,p_module   => l_log_module);
8028 
8029 END IF;
8030 --
8031 l_component_type             := 'AMB_JLT';
8032 l_component_code             := 'REINSTATE_REQ_ENC_FROM_REL_DR';
8033 l_component_type_code        := 'S';
8034 l_component_appl_id          :=  201;
8035 l_amb_context_code           := 'DEFAULT';
8036 l_entity_code                := 'RELEASE';
8037 l_event_class_code           := 'RELEASE';
8038 l_event_type_code            := 'RELEASE_ALL';
8039 l_line_definition_owner_code := 'S';
8040 l_line_definition_code       := 'RELEASE_ENC_ALL';
8041 --
8042 l_balance_type_code          := 'E';
8043 l_segment                     := NULL;
8044 l_ccid                        := NULL;
8045 l_adr_transaction_coa_id      := NULL;
8046 l_adr_accounting_coa_id       := NULL;
8047 l_adr_flexfield_segment_code  := NULL;
8048 l_adr_flex_value_set_id       := NULL;
8049 l_adr_value_type_code         := NULL;
8050 l_adr_value_combination_id    := NULL;
8051 l_adr_value_segment_code      := NULL;
8052 
8053 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
8054 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
8055 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
8056 l_budgetary_control_flag     := 'Y';
8057 
8058 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8059 l_bflow_applied_to_amt       := NULL; -- 5132302
8060 l_entered_amt_idx            := NULL;          -- 4262811
8061 l_accted_amt_idx             := NULL;          -- 4262811
8062 l_acc_rev_flag               := NULL;          -- 4262811
8063 l_accrual_line_num           := NULL;          -- 4262811
8064 l_tmp_amt                    := NULL;          -- 4262811
8065 --
8066  
8067 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8068     l_balance_type_code <> 'B' THEN
8069 IF (NVL(
8070 xla_ae_sources_pkg.GetSystemSourceChar(
8071    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8072  , p_source_type_code      => 'Y'
8073  , p_source_application_id =>  602
8074 ),'
8075 ') =  'RELEASE_REJECTED' OR 
8076 NVL(
8077 xla_ae_sources_pkg.GetSystemSourceChar(
8078    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8079  , p_source_type_code      => 'Y'
8080  , p_source_application_id =>  602
8081 ),'
8082 ') =  'RELEASE_UNRESERVED' OR 
8083 NVL(
8084 xla_ae_sources_pkg.GetSystemSourceChar(
8085    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8086  , p_source_type_code      => 'Y'
8087  , p_source_application_id =>  602
8088 ),'
8089 ') =  'RELEASE_INV_CANCELLED') AND 
8090 NVL(p_source_13,'
8091 ') =  'B_REQ'
8092  THEN 
8093 
8094    --
8095    XLA_AE_LINES_PKG.SetNewLine;
8096 
8097    p_balance_type_code          := l_balance_type_code;
8098    -- set the flag so later we will know whether the gain loss line needs to be created
8099    
8100    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8101      p_actual_flag :='A';
8102    END IF;
8103 
8104    --
8105    -- bulk performance
8106    --
8107    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8108                                       p_header_num   => 0); -- 4262811
8109    --
8110    -- set accounting line options
8111    --
8112    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8113            p_natural_side_code          => 'D'
8114          , p_gain_or_loss_flag          => 'N'
8115          , p_gl_transfer_mode_code      => 'S'
8116          , p_acct_entry_type_code       => 'E'
8117          , p_switch_side_flag           => 'N'
8118          , p_merge_duplicate_code       => 'N'
8119          );
8120    --
8121    l_acc_rev_natural_side_code := 'C';  -- 4262811
8122    -- 
8123    --
8124    -- set accounting line type info
8125    --
8126    xla_ae_lines_pkg.SetAcctLineType
8127       (p_component_type             => l_component_type
8128       ,p_event_type_code            => l_event_type_code
8129       ,p_line_definition_owner_code => l_line_definition_owner_code
8130       ,p_line_definition_code       => l_line_definition_code
8131       ,p_accounting_line_code       => l_component_code
8132       ,p_accounting_line_type_code  => l_component_type_code
8133       ,p_accounting_line_appl_id    => l_component_appl_id
8134       ,p_amb_context_code           => l_amb_context_code
8135       ,p_entity_code                => l_entity_code
8136       ,p_event_class_code           => l_event_class_code);
8137    --
8138    -- set accounting class
8139    --
8140    xla_ae_lines_pkg.SetAcctClass(
8141            p_accounting_class_code  => 'PURCHASE_ORDER'
8142          , p_ae_header_id           => l_ae_header_id
8143          );
8144 
8145    --
8146    -- set rounding class
8147    --
8148    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8149                       'PURCHASE_ORDER';
8150 
8151    --
8152    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8153    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8154    --
8155    -- bulk performance
8156    --
8157    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8158 
8159    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8160       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8161 
8162    -- 4955764
8163    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8164       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8165 
8166    -- 4458381 Public Sector Enh
8167    
8168    --
8169    -- set accounting attributes for the line type
8170    --
8171    l_entered_amt_idx := 23;
8172    l_accted_amt_idx  := 25;
8173    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8174    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8175    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
8176    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
8177    l_rec_acct_attrs.array_num_value(2)  := 
8178 xla_ae_sources_pkg.GetSystemSourceNum(
8179    p_source_code           => 'XLA_EVENT_APPL_ID'
8180  , p_source_type_code      => 'Y'
8181  , p_source_application_id =>  602
8182 );
8183    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
8184    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
8185    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
8186    l_rec_acct_attrs.array_char_value(4)  := 
8187 xla_ae_sources_pkg.GetSystemSourceChar(
8188    p_source_code           => 'XLA_ENTITY_CODE'
8189  , p_source_type_code      => 'Y'
8190  , p_source_application_id =>  602
8191 );
8192    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
8193    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
8194    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
8195    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
8196    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
8197    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
8198    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8199    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
8200    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
8201    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
8202    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
8203    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
8204    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8205    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
8206    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
8207    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
8208    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
8209    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
8210    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
8211    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
8212    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
8213    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
8214    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
8215    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
8216    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
8217    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
8218    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
8219    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
8220    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
8221    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
8222    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
8223    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
8224    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
8225    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
8226    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
8227    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
8228    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
8229    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
8230    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
8231    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
8232    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
8233    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
8234    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
8235    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
8236    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
8237    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
8238    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
8239    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
8240    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
8241    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
8242    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
8243    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
8244    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
8245    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
8246 
8247    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8248    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8249 
8250    ---------------------------------------------------------------------------------------------------------------
8251    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8252    ---------------------------------------------------------------------------------------------------------------
8253    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8254 
8255    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8256    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8257 
8258    IF xla_accounting_cache_pkg.GetValueChar
8259          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8260          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8261    AND l_bflow_method_code = 'PRIOR_ENTRY'
8262 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8263    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8264          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8265        )
8266    THEN
8267          xla_ae_lines_pkg.BflowUpgEntry
8268            (p_business_method_code    => l_bflow_method_code
8269            ,p_business_class_code     => l_bflow_class_code
8270            ,p_balance_type            => l_balance_type_code);
8271    ELSE
8272       NULL;
8273 XLA_AE_LINES_PKG.business_flow_validation(
8274                                 p_business_method_code     => l_bflow_method_code
8275                                ,p_business_class_code      => l_bflow_class_code
8276                                ,p_inherit_description_flag => l_inherit_desc_flag);
8277    END IF;
8278 
8279    --
8280    -- call analytical criteria
8281    --
8282    -- Inherited Analytical Criteria for business flow method of Prior Entry.
8283    --
8284    -- call description
8285    --
8286    -- No description or it is inherited.
8287    --
8288    -- call ADRs
8289    -- Bug 4922099
8290    --
8291    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8292         (NVL(l_actual_upg_option, 'N') = 'O') OR
8293         (NVL(l_enc_upg_option, 'N') = 'O')
8294       )
8295    THEN
8296    NULL;
8297    --
8298    --
8299    
8300    --
8301    --
8302    END IF;
8303    --
8304    -- Bug 4922099
8305    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8306           (NVL(l_enc_upg_option, 'N') = 'O')
8307         ) AND
8308         (l_bflow_method_code = 'PRIOR_ENTRY')
8309       )
8310    THEN
8311       IF
8312       --
8313       1 = 1
8314       --
8315       THEN
8316       xla_accounting_err_pkg.build_message
8317                                     (p_appli_s_name            => 'XLA'
8318                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8319                                     ,p_token_1                 => 'LINE_NUMBER'
8320                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8321                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8322                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8323                                                                              l_component_type
8324                                                                             ,l_component_code
8325                                                                             ,l_component_type_code
8326                                                                             ,l_component_appl_id
8327                                                                             ,l_amb_context_code
8328                                                                             ,l_entity_code
8329                                                                             ,l_event_class_code
8330                                                                            )
8331                                     ,p_token_3                 => 'OWNER'
8332                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8333                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8334                                                                           ,p_lookup_code    => l_component_type_code
8335                                                                          )
8336                                     ,p_token_4                 => 'PRODUCT_NAME'
8337                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8338                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8339                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8340                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8341                                     ,p_ae_header_id            =>  NULL
8342                                        );
8343 
8344         IF (C_LEVEL_ERROR>= g_log_level) THEN
8345                  trace
8346                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8347                       ,p_level    => C_LEVEL_ERROR
8348                       ,p_module   => l_log_module);
8349         END IF;
8350       END IF;
8351    END IF;
8352    --
8353    --
8354    ------------------------------------------------------------------------------------------------
8355    -- 4219869 Business Flow
8356    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8357    -- Prior Entry.  Currently, the following code is always generated.
8358    ------------------------------------------------------------------------------------------------
8359    -- No ValidateCurrentLine for business flow method of Prior Entry
8360 
8361    ------------------------------------------------------------------------------------
8362    -- 4219869 Business Flow
8363    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8364    ------------------------------------------------------------------------------------
8365    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8366 
8367    ----------------------------------------------------------------------------------
8368    -- 4219869 Business Flow
8369    -- Update journal entry status -- Need to generate this within IF <condition>
8370    ----------------------------------------------------------------------------------
8371    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8372          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8373          ,p_balance_type_code => l_balance_type_code
8374          );
8375 
8376    -------------------------------------------------------------------------------------------
8377    -- 4262811 - Generate the Accrual Reversal lines
8378    -------------------------------------------------------------------------------------------
8379    BEGIN
8380       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8381                               (g_array_event(p_event_id).array_value_num('header_index'));
8382       IF l_acc_rev_flag IS NULL THEN
8383          l_acc_rev_flag := 'N';
8384       END IF;
8385    EXCEPTION
8386       WHEN OTHERS THEN
8387          l_acc_rev_flag := 'N';
8388    END;
8389    --
8390    IF (l_acc_rev_flag = 'Y') THEN
8391 
8392        -- 4645092  ------------------------------------------------------------------------------
8393        -- To allow MPA report to determine if it should generate report process
8394        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8395        ------------------------------------------------------------------------------------------
8396 
8397        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8398        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8399 
8400        --
8401        -- Update the line information that should be overwritten
8402        --
8403        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8404                                          p_header_num   => 1);
8405        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8406 
8407        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8408 
8409        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8410           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8411        END IF;
8412 
8413       --
8414       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8415       --
8416       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8417           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8418       ELSE
8419           ---------------------------------------------------------------------------------------------------
8420           -- 4262811a Switch Sign
8421           ---------------------------------------------------------------------------------------------------
8422           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8423           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8424                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8425           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8426                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8427           -- 5132302
8428           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8429                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8430 
8431       END IF;
8432 
8433       -- 4955764
8434       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8435       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8436 
8437 
8438       XLA_AE_LINES_PKG.ValidateCurrentLine;
8439       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8440 
8441       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8442                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8443                ,p_balance_type_code => l_balance_type_code);
8444 
8445    END IF;
8446 
8447    -----------------------------------------------------------------------------------------
8448    -- 4262811 Multiperiod Accounting
8449    -----------------------------------------------------------------------------------------
8450      -- No MPA option is assigned.
8451 
8452 
8453 END IF;
8454 END IF;
8455 --
8456 
8457 --
8458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8459    trace
8460       (p_msg      => 'END of AcctLineType_20'
8461       ,p_level    => C_LEVEL_PROCEDURE
8462       ,p_module   => l_log_module);
8463 END IF;
8464 --
8465 EXCEPTION
8466   WHEN xla_exceptions_pkg.application_exception THEN
8467       RAISE;
8468   WHEN OTHERS THEN
8469        xla_exceptions_pkg.raise_message
8470            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_20');
8471 END AcctLineType_20;
8472 --
8473 
8474 ---------------------------------------
8475 --
8476 -- PRIVATE FUNCTION
8477 --         AcctLineType_21
8478 --
8479 ---------------------------------------
8480 PROCEDURE AcctLineType_21 (
8481   p_application_id        IN NUMBER
8482  ,p_event_id              IN NUMBER
8483  ,p_calculate_acctd_flag  IN VARCHAR2
8484  ,p_calculate_g_l_flag    IN VARCHAR2
8485  ,p_actual_flag           IN OUT VARCHAR2
8486  ,p_balance_type_code     OUT VARCHAR2
8487  ,p_gain_or_loss_ref      OUT VARCHAR2
8488  
8489 --Journal entry Line Description
8490  , p_source_7            IN VARCHAR2
8491 --Budget Account
8492  , p_source_11            IN NUMBER
8493 --Main Or Backing Code
8494  , p_source_13            IN VARCHAR2
8495 --Accounting Reversal Flag
8496  , p_source_16            IN VARCHAR2
8497 --PO Distribution Identifier
8498  , p_source_29            IN NUMBER
8499 --Entered Amount
8500  , p_source_33            IN NUMBER
8501 --Currency Code
8502  , p_source_34            IN VARCHAR2
8503 --Accounted Amount
8504  , p_source_35            IN NUMBER
8505 --Allocated to Main Document Distribution Identifier
8506  , p_source_51            IN NUMBER
8507 --PO Header Identifier
8508  , p_source_52            IN NUMBER
8509 --Applied To Application Identifier
8510  , p_source_53            IN NUMBER
8511 --Applied To Distribution Link Type
8512  , p_source_54            IN VARCHAR2
8513 --Applied To Entity Code
8514  , p_source_55            IN VARCHAR2
8515 --Applied To Distribution Identifier 1
8516  , p_source_56            IN NUMBER
8517 --Applied To Header Identifier 1
8518  , p_source_57            IN NUMBER
8519 --Distribution Link Type
8520  , p_source_58            IN VARCHAR2
8521 --PO Encumbrance Upgrade Option
8522  , p_source_59            IN VARCHAR2
8523 --JFMIP Reference
8524  , p_source_60            IN VARCHAR2
8525 --PO Upgrade Encumbrance Type Identifier
8526  , p_source_61            IN NUMBER
8527 --Currency Conversion Date
8528  , p_source_62            IN DATE
8529 --Currency Conversion Rate
8530  , p_source_63            IN NUMBER
8531 --Currency Conversion Type
8532  , p_source_64            IN VARCHAR2
8533 --Backing Requisition Prevent Encumbrance Changed Flag
8534  , p_source_65            IN VARCHAR2
8535 )
8536 IS
8537 
8538 l_component_type              VARCHAR2(80);
8539 l_component_code              VARCHAR2(30);
8540 l_component_type_code         VARCHAR2(1);
8541 l_component_appl_id           INTEGER;
8542 l_amb_context_code            VARCHAR2(30);
8543 l_entity_code                 VARCHAR2(30);
8544 l_event_class_code            VARCHAR2(30);
8545 l_ae_header_id                NUMBER;
8546 l_event_type_code             VARCHAR2(30);
8547 l_line_definition_code        VARCHAR2(30);
8548 l_line_definition_owner_code  VARCHAR2(1);
8549 --
8550 -- adr variables
8551 l_segment                     VARCHAR2(30);
8552 l_ccid                        NUMBER;
8553 l_adr_transaction_coa_id      NUMBER;
8554 l_adr_accounting_coa_id       NUMBER;
8555 l_adr_flexfield_segment_code  VARCHAR2(30);
8556 l_adr_flex_value_set_id       NUMBER;
8557 l_adr_value_type_code         VARCHAR2(30);
8558 l_adr_value_combination_id    NUMBER;
8559 l_adr_value_segment_code      VARCHAR2(30);
8560 
8561 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8562 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8563 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8564 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8565 
8566 -- 4262811 Variables ------------------------------------------------------------------------------------------
8567 l_entered_amt_idx             NUMBER;
8568 l_accted_amt_idx              NUMBER;
8569 l_acc_rev_flag                VARCHAR2(1);
8570 l_accrual_line_num            NUMBER;
8571 l_tmp_amt                     NUMBER;
8572 l_acc_rev_natural_side_code   VARCHAR2(1);
8573 
8574 l_num_entries                 NUMBER;
8575 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8576 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8577 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8578 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8579 l_recog_line_1                NUMBER;
8580 l_recog_line_2                NUMBER;
8581 
8582 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8583 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8584 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8585 
8586 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8587 
8588 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8589 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8590 
8591 ---------------------------------------------------------------------------------------------------------------
8592 
8593 
8594 --
8595 -- bulk performance
8596 --
8597 l_balance_type_code           VARCHAR2(1);
8598 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8599 l_log_module                  VARCHAR2(240);
8600 
8601 --
8602 -- Upgrade strategy
8603 --
8604 l_actual_upg_option           VARCHAR2(1);
8605 l_enc_upg_option           VARCHAR2(1);
8606 
8607 --
8608 BEGIN
8609 --
8610 IF g_log_enabled THEN
8611       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
8612 END IF;
8613 --
8614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8615 
8616       trace
8617          (p_msg      => 'BEGIN of AcctLineType_21'
8618          ,p_level    => C_LEVEL_PROCEDURE
8619          ,p_module   => l_log_module);
8620 
8621 END IF;
8622 --
8623 l_component_type             := 'AMB_JLT';
8624 l_component_code             := 'REINSTATE_UNENC_REQ_ENC_PO_DR';
8625 l_component_type_code        := 'S';
8626 l_component_appl_id          :=  201;
8627 l_amb_context_code           := 'DEFAULT';
8628 l_entity_code                := 'PURCHASE_ORDER';
8629 l_event_class_code           := 'PO_PA';
8630 l_event_type_code            := 'PO_PA_ALL';
8631 l_line_definition_owner_code := 'S';
8632 l_line_definition_code       := 'PO_PA_ENC_ALL';
8633 --
8634 l_balance_type_code          := 'E';
8635 l_segment                     := NULL;
8636 l_ccid                        := NULL;
8637 l_adr_transaction_coa_id      := NULL;
8638 l_adr_accounting_coa_id       := NULL;
8639 l_adr_flexfield_segment_code  := NULL;
8640 l_adr_flex_value_set_id       := NULL;
8641 l_adr_value_type_code         := NULL;
8642 l_adr_value_combination_id    := NULL;
8643 l_adr_value_segment_code      := NULL;
8644 
8645 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8646 l_bflow_class_code           := '';    -- 4219869 Business Flow
8647 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8648 l_budgetary_control_flag     := 'Y';
8649 
8650 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8651 l_bflow_applied_to_amt       := NULL; -- 5132302
8652 l_entered_amt_idx            := NULL;          -- 4262811
8653 l_accted_amt_idx             := NULL;          -- 4262811
8654 l_acc_rev_flag               := NULL;          -- 4262811
8655 l_accrual_line_num           := NULL;          -- 4262811
8656 l_tmp_amt                    := NULL;          -- 4262811
8657 --
8658  
8659 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8660     l_balance_type_code <> 'B' THEN
8661 IF (NVL(
8662 xla_ae_sources_pkg.GetSystemSourceChar(
8663    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8664  , p_source_type_code      => 'Y'
8665  , p_source_application_id =>  602
8666 ),'
8667 ') =  'PO_PA_UNRESERVED' OR 
8668 NVL(
8669 xla_ae_sources_pkg.GetSystemSourceChar(
8670    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8671  , p_source_type_code      => 'Y'
8672  , p_source_application_id =>  602
8673 ),'
8674 ') =  'PO_PA_REJECTED' OR 
8675 NVL(
8676 xla_ae_sources_pkg.GetSystemSourceChar(
8677    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8678  , p_source_type_code      => 'Y'
8679  , p_source_application_id =>  602
8680 ),'
8681 ') =  'PO_PA_INV_CANCELLED') AND 
8682 NVL(p_source_13,'
8683 ') =  'B_REQ' AND 
8684 NVL(p_source_65,'
8685 ') =  'Y'
8686  THEN 
8687 
8688    --
8689    XLA_AE_LINES_PKG.SetNewLine;
8690 
8691    p_balance_type_code          := l_balance_type_code;
8692    -- set the flag so later we will know whether the gain loss line needs to be created
8693    
8694    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8695      p_actual_flag :='A';
8696    END IF;
8697 
8698    --
8699    -- bulk performance
8700    --
8701    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8702                                       p_header_num   => 0); -- 4262811
8703    --
8704    -- set accounting line options
8705    --
8706    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8707            p_natural_side_code          => 'D'
8708          , p_gain_or_loss_flag          => 'N'
8709          , p_gl_transfer_mode_code      => 'S'
8710          , p_acct_entry_type_code       => 'E'
8711          , p_switch_side_flag           => 'N'
8712          , p_merge_duplicate_code       => 'N'
8713          );
8714    --
8715    l_acc_rev_natural_side_code := 'C';  -- 4262811
8716    -- 
8717    --
8718    -- set accounting line type info
8719    --
8720    xla_ae_lines_pkg.SetAcctLineType
8721       (p_component_type             => l_component_type
8722       ,p_event_type_code            => l_event_type_code
8723       ,p_line_definition_owner_code => l_line_definition_owner_code
8724       ,p_line_definition_code       => l_line_definition_code
8725       ,p_accounting_line_code       => l_component_code
8726       ,p_accounting_line_type_code  => l_component_type_code
8727       ,p_accounting_line_appl_id    => l_component_appl_id
8728       ,p_amb_context_code           => l_amb_context_code
8729       ,p_entity_code                => l_entity_code
8730       ,p_event_class_code           => l_event_class_code);
8731    --
8732    -- set accounting class
8733    --
8734    xla_ae_lines_pkg.SetAcctClass(
8735            p_accounting_class_code  => 'REQUISITION'
8736          , p_ae_header_id           => l_ae_header_id
8737          );
8738 
8739    --
8740    -- set rounding class
8741    --
8742    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8743                       'REQUISITION';
8744 
8745    --
8746    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8747    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8748    --
8749    -- bulk performance
8750    --
8751    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8752 
8753    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8754       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8755 
8756    -- 4955764
8757    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8758       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8759 
8760    -- 4458381 Public Sector Enh
8761       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
8762    --
8763    -- set accounting attributes for the line type
8764    --
8765    l_entered_amt_idx := 23;
8766    l_accted_amt_idx  := 28;
8767    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8768    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8769    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
8770    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
8771    l_rec_acct_attrs.array_num_value(2)  := 
8772 xla_ae_sources_pkg.GetSystemSourceNum(
8773    p_source_code           => 'XLA_EVENT_APPL_ID'
8774  , p_source_type_code      => 'Y'
8775  , p_source_application_id =>  602
8776 );
8777    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
8778    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
8779    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
8780    l_rec_acct_attrs.array_char_value(4)  := 
8781 xla_ae_sources_pkg.GetSystemSourceChar(
8782    p_source_code           => 'XLA_ENTITY_CODE'
8783  , p_source_type_code      => 'Y'
8784  , p_source_application_id =>  602
8785 );
8786    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
8787    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
8788    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
8789    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
8790    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
8791    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
8792    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8793    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
8794    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
8795    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
8796    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
8797    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
8798    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8799    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
8800    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
8801    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
8802    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
8803    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
8804    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
8805    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
8806    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
8807    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
8808    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
8809    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
8810    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
8811    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
8812    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
8813    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
8814    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
8815    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
8816    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
8817    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
8818    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
8819    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
8820    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
8821    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
8822    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
8823    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
8824    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
8825    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
8826    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
8827    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
8828    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
8829    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
8830    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
8831    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
8832    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
8833    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
8834    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
8835    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
8836    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
8837    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
8838    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
8839    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
8840    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
8841    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_29);
8842    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
8843    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
8844    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
8845    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
8846 
8847    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8848    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8849 
8850    ---------------------------------------------------------------------------------------------------------------
8851    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8852    ---------------------------------------------------------------------------------------------------------------
8853    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8854 
8855    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8856    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8857 
8858    IF xla_accounting_cache_pkg.GetValueChar
8859          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8860          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8861    AND l_bflow_method_code = 'PRIOR_ENTRY'
8862 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8863    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8864          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8865        )
8866    THEN
8867          xla_ae_lines_pkg.BflowUpgEntry
8868            (p_business_method_code    => l_bflow_method_code
8869            ,p_business_class_code     => l_bflow_class_code
8870            ,p_balance_type            => l_balance_type_code);
8871    ELSE
8872       NULL;
8873 -- No business flow processing for business flow method of NONE.
8874    END IF;
8875 
8876    --
8877    -- call analytical criteria
8878    --
8879    
8880    --
8881    -- call description
8882    --
8883    
8884 xla_ae_lines_pkg.SetLineDescription(
8885    p_ae_header_id => l_ae_header_id
8886   ,p_description  => Description_3 (
8887      p_application_id         => p_application_id
8888    , p_ae_header_id           => l_ae_header_id 
8889 , p_source_7 => p_source_7
8890    )
8891 );
8892 
8893 
8894    --
8895    -- call ADRs
8896    -- Bug 4922099
8897    --
8898    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8899         (NVL(l_actual_upg_option, 'N') = 'O') OR
8900         (NVL(l_enc_upg_option, 'N') = 'O')
8901       )
8902    THEN
8903    NULL;
8904    --
8905    --
8906    
8907   l_ccid := AcctDerRule_8(
8908            p_application_id           => p_application_id
8909          , p_ae_header_id             => l_ae_header_id 
8910 , p_source_11 => p_source_11
8911          , x_transaction_coa_id       => l_adr_transaction_coa_id
8912          , x_accounting_coa_id        => l_adr_accounting_coa_id
8913          , x_value_type_code          => l_adr_value_type_code
8914          , p_side                     => 'NA'
8915    );
8916 
8917    xla_ae_lines_pkg.set_ccid(
8918     p_code_combination_id          => l_ccid
8919   , p_value_type_code              => l_adr_value_type_code
8920   , p_transaction_coa_id           => l_adr_transaction_coa_id
8921   , p_accounting_coa_id            => l_adr_accounting_coa_id
8922   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
8923   , p_adr_type_code                => 'S'
8924   , p_component_type               => l_component_type
8925   , p_component_code               => l_component_code
8926   , p_component_type_code          => l_component_type_code
8927   , p_component_appl_id            => l_component_appl_id
8928   , p_amb_context_code             => l_amb_context_code
8929   , p_side                         => 'NA'
8930   );
8931 
8932 
8933    --
8934    --
8935    END IF;
8936    --
8937    -- Bug 4922099
8938    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8939           (NVL(l_enc_upg_option, 'N') = 'O')
8940         ) AND
8941         (l_bflow_method_code = 'PRIOR_ENTRY')
8942       )
8943    THEN
8944       IF
8945       --
8946       1 = 2
8947       --
8948       THEN
8949       xla_accounting_err_pkg.build_message
8950                                     (p_appli_s_name            => 'XLA'
8951                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8952                                     ,p_token_1                 => 'LINE_NUMBER'
8953                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8954                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8955                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8956                                                                              l_component_type
8957                                                                             ,l_component_code
8958                                                                             ,l_component_type_code
8959                                                                             ,l_component_appl_id
8960                                                                             ,l_amb_context_code
8961                                                                             ,l_entity_code
8962                                                                             ,l_event_class_code
8963                                                                            )
8964                                     ,p_token_3                 => 'OWNER'
8965                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8966                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8967                                                                           ,p_lookup_code    => l_component_type_code
8968                                                                          )
8969                                     ,p_token_4                 => 'PRODUCT_NAME'
8970                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8971                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8972                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8973                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8974                                     ,p_ae_header_id            =>  NULL
8975                                        );
8976 
8977         IF (C_LEVEL_ERROR>= g_log_level) THEN
8978                  trace
8979                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8980                       ,p_level    => C_LEVEL_ERROR
8981                       ,p_module   => l_log_module);
8982         END IF;
8983       END IF;
8984    END IF;
8985    --
8986    --
8987    ------------------------------------------------------------------------------------------------
8988    -- 4219869 Business Flow
8989    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8990    -- Prior Entry.  Currently, the following code is always generated.
8991    ------------------------------------------------------------------------------------------------
8992    XLA_AE_LINES_PKG.ValidateCurrentLine;
8993 
8994    ------------------------------------------------------------------------------------
8995    -- 4219869 Business Flow
8996    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8997    ------------------------------------------------------------------------------------
8998    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8999 
9000    ----------------------------------------------------------------------------------
9001    -- 4219869 Business Flow
9002    -- Update journal entry status -- Need to generate this within IF <condition>
9003    ----------------------------------------------------------------------------------
9004    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9005          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9006          ,p_balance_type_code => l_balance_type_code
9007          );
9008 
9009    -------------------------------------------------------------------------------------------
9010    -- 4262811 - Generate the Accrual Reversal lines
9011    -------------------------------------------------------------------------------------------
9012    BEGIN
9013       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9014                               (g_array_event(p_event_id).array_value_num('header_index'));
9015       IF l_acc_rev_flag IS NULL THEN
9016          l_acc_rev_flag := 'N';
9017       END IF;
9018    EXCEPTION
9019       WHEN OTHERS THEN
9020          l_acc_rev_flag := 'N';
9021    END;
9022    --
9023    IF (l_acc_rev_flag = 'Y') THEN
9024 
9025        -- 4645092  ------------------------------------------------------------------------------
9026        -- To allow MPA report to determine if it should generate report process
9027        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9028        ------------------------------------------------------------------------------------------
9029 
9030        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9031        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9032 
9033        --
9034        -- Update the line information that should be overwritten
9035        --
9036        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9037                                          p_header_num   => 1);
9038        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9039 
9040        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9041 
9042        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9043           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9044        END IF;
9045 
9046       --
9047       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9048       --
9049       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9050           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9051       ELSE
9052           ---------------------------------------------------------------------------------------------------
9053           -- 4262811a Switch Sign
9054           ---------------------------------------------------------------------------------------------------
9055           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9056           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9057                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9058           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9059                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9060           -- 5132302
9061           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9062                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9063 
9064       END IF;
9065 
9066       -- 4955764
9067       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9068       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9069 
9070 
9071       XLA_AE_LINES_PKG.ValidateCurrentLine;
9072       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9073 
9074       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9075                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9076                ,p_balance_type_code => l_balance_type_code);
9077 
9078    END IF;
9079 
9080    -----------------------------------------------------------------------------------------
9081    -- 4262811 Multiperiod Accounting
9082    -----------------------------------------------------------------------------------------
9083      -- No MPA option is assigned.
9084 
9085 
9086 END IF;
9087 END IF;
9088 --
9089 
9090 --
9091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9092    trace
9093       (p_msg      => 'END of AcctLineType_21'
9094       ,p_level    => C_LEVEL_PROCEDURE
9095       ,p_module   => l_log_module);
9096 END IF;
9097 --
9098 EXCEPTION
9099   WHEN xla_exceptions_pkg.application_exception THEN
9100       RAISE;
9101   WHEN OTHERS THEN
9102        xla_exceptions_pkg.raise_message
9103            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_21');
9104 END AcctLineType_21;
9105 --
9106 
9107 ---------------------------------------
9108 --
9109 -- PRIVATE FUNCTION
9110 --         AcctLineType_22
9111 --
9112 ---------------------------------------
9113 PROCEDURE AcctLineType_22 (
9114   p_application_id        IN NUMBER
9115  ,p_event_id              IN NUMBER
9116  ,p_calculate_acctd_flag  IN VARCHAR2
9117  ,p_calculate_g_l_flag    IN VARCHAR2
9118  ,p_actual_flag           IN OUT VARCHAR2
9119  ,p_balance_type_code     OUT VARCHAR2
9120  ,p_gain_or_loss_ref      OUT VARCHAR2
9121  
9122 --Project Name
9123  , p_source_3            IN VARCHAR2
9124 --Task Name
9125  , p_source_4            IN VARCHAR2
9126 --Project Expenditure Organization Identifier
9127  , p_source_5            IN NUMBER
9128 --Expenditure Type
9129  , p_source_6            IN VARCHAR2
9130 --Document Type
9131  , p_source_9            IN VARCHAR2
9132 --Main Or Backing Code
9133  , p_source_13            IN VARCHAR2
9134 --Burden Record Identifier
9135  , p_source_14            IN VARCHAR2
9136  , p_source_14_meaning    IN VARCHAR2
9137 --Burden Amount Display Method
9138  , p_source_15            IN VARCHAR2
9139 --Accounting Reversal Flag
9140  , p_source_16            IN VARCHAR2
9141 --Allocated to Application Identifier
9142  , p_source_17            IN NUMBER
9143 --Allocated to Distribution Type
9144  , p_source_18            IN VARCHAR2
9145 --Allocated to Entity Code
9146  , p_source_19            IN VARCHAR2
9147 --Allocated to First Distribution Identifier
9148  , p_source_20            IN NUMBER
9149 --Allocated to First System Transaction Identifier
9150  , p_source_21            IN NUMBER
9151 --Allocated to Second Distribution Identifier
9152  , p_source_22            IN VARCHAR2
9153 --Purchase Order Burden Applied to Application Identifier
9154  , p_source_23            IN NUMBER
9155 --PO Distribution Type
9156  , p_source_24            IN VARCHAR2
9157 --Purchase Order Burden Applied to Entity Code
9158  , p_source_25            IN VARCHAR2
9159 --Purchase Order Burden Applied to First Distribution Identifier
9160  , p_source_26            IN NUMBER
9161 --Purchase Order Burden Applied to First System Transaction Identifier
9162  , p_source_27            IN NUMBER
9163 --Purchase Order Burden Applied to Second Distribution Identifier
9164  , p_source_28            IN VARCHAR2
9165 --PO Distribution Identifier
9166  , p_source_29            IN NUMBER
9167 --Line Type Name
9168  , p_source_30            IN VARCHAR2
9169 --Encumbrance Upgrade Credit Accounting Class
9170  , p_source_31            IN VARCHAR2
9171 --Encumbrance Upgrade Credit Account
9172  , p_source_32            IN NUMBER
9173 --Entered Amount
9174  , p_source_33            IN NUMBER
9175 --Currency Code
9176  , p_source_34            IN VARCHAR2
9177 --Accounted Amount
9178  , p_source_35            IN NUMBER
9179 --Encumbrance Upgrade Debit Accounting Class
9180  , p_source_36            IN VARCHAR2
9181 --Encumbrance Upgrade Debit Account
9182  , p_source_37            IN NUMBER
9183 --Use Encumbrances Upgrade Attributes Flag
9184  , p_source_38            IN VARCHAR2
9185 --Encumbrance Upgrade Credit Encumbrance Type
9186  , p_source_39            IN NUMBER
9187 --Encumbrance Upgrade Debit Encumbrance Type
9188  , p_source_40            IN NUMBER
9189 )
9190 IS
9191 
9192 l_component_type              VARCHAR2(80);
9193 l_component_code              VARCHAR2(30);
9194 l_component_type_code         VARCHAR2(1);
9195 l_component_appl_id           INTEGER;
9196 l_amb_context_code            VARCHAR2(30);
9197 l_entity_code                 VARCHAR2(30);
9198 l_event_class_code            VARCHAR2(30);
9199 l_ae_header_id                NUMBER;
9200 l_event_type_code             VARCHAR2(30);
9201 l_line_definition_code        VARCHAR2(30);
9202 l_line_definition_owner_code  VARCHAR2(1);
9203 --
9204 -- adr variables
9205 l_segment                     VARCHAR2(30);
9206 l_ccid                        NUMBER;
9207 l_adr_transaction_coa_id      NUMBER;
9208 l_adr_accounting_coa_id       NUMBER;
9209 l_adr_flexfield_segment_code  VARCHAR2(30);
9210 l_adr_flex_value_set_id       NUMBER;
9211 l_adr_value_type_code         VARCHAR2(30);
9212 l_adr_value_combination_id    NUMBER;
9213 l_adr_value_segment_code      VARCHAR2(30);
9214 
9215 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9216 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9217 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9218 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9219 
9220 -- 4262811 Variables ------------------------------------------------------------------------------------------
9221 l_entered_amt_idx             NUMBER;
9222 l_accted_amt_idx              NUMBER;
9223 l_acc_rev_flag                VARCHAR2(1);
9224 l_accrual_line_num            NUMBER;
9225 l_tmp_amt                     NUMBER;
9226 l_acc_rev_natural_side_code   VARCHAR2(1);
9227 
9228 l_num_entries                 NUMBER;
9229 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9230 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9231 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9232 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9233 l_recog_line_1                NUMBER;
9234 l_recog_line_2                NUMBER;
9235 
9236 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9237 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9238 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9239 
9240 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9241 
9242 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9243 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9244 
9245 ---------------------------------------------------------------------------------------------------------------
9246 
9247 
9248 --
9249 -- bulk performance
9250 --
9251 l_balance_type_code           VARCHAR2(1);
9252 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9253 l_log_module                  VARCHAR2(240);
9254 
9255 --
9256 -- Upgrade strategy
9257 --
9258 l_actual_upg_option           VARCHAR2(1);
9259 l_enc_upg_option           VARCHAR2(1);
9260 
9261 --
9262 BEGIN
9263 --
9264 IF g_log_enabled THEN
9265       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
9266 END IF;
9267 --
9268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9269 
9270       trace
9271          (p_msg      => 'BEGIN of AcctLineType_22'
9272          ,p_level    => C_LEVEL_PROCEDURE
9273          ,p_module   => l_log_module);
9274 
9275 END IF;
9276 --
9277 l_component_type             := 'AMB_JLT';
9278 l_component_code             := 'REINST_PO_BURDENED_ENCFORRELCR';
9279 l_component_type_code        := 'S';
9280 l_component_appl_id          :=  201;
9281 l_amb_context_code           := 'DEFAULT';
9282 l_entity_code                := 'RELEASE';
9283 l_event_class_code           := 'RELEASE_BURDEN';
9284 l_event_type_code            := 'RELEASE_BURDEN_ALL';
9285 l_line_definition_owner_code := 'S';
9286 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
9287 --
9288 l_balance_type_code          := 'E';
9289 l_segment                     := NULL;
9290 l_ccid                        := NULL;
9291 l_adr_transaction_coa_id      := NULL;
9292 l_adr_accounting_coa_id       := NULL;
9293 l_adr_flexfield_segment_code  := NULL;
9294 l_adr_flex_value_set_id       := NULL;
9295 l_adr_value_type_code         := NULL;
9296 l_adr_value_combination_id    := NULL;
9297 l_adr_value_segment_code      := NULL;
9298 
9299 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
9300 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
9301 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9302 l_budgetary_control_flag     := 'Y';
9303 
9304 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9305 l_bflow_applied_to_amt       := NULL; -- 5132302
9306 l_entered_amt_idx            := NULL;          -- 4262811
9307 l_accted_amt_idx             := NULL;          -- 4262811
9308 l_acc_rev_flag               := NULL;          -- 4262811
9309 l_accrual_line_num           := NULL;          -- 4262811
9310 l_tmp_amt                    := NULL;          -- 4262811
9311 --
9312  
9313 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9314     l_balance_type_code <> 'B' THEN
9315 IF (NVL(
9316 xla_ae_sources_pkg.GetSystemSourceChar(
9317    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9318  , p_source_type_code      => 'Y'
9319  , p_source_application_id =>  602
9320 ),'
9321 ') =  'REL_BURDEN_CANCELLED' OR 
9322 NVL(
9323 xla_ae_sources_pkg.GetSystemSourceChar(
9324    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9325  , p_source_type_code      => 'Y'
9326  , p_source_application_id =>  602
9327 ),'
9328 ') =  'REL_BURDEN_CR_MEMO_CANCELLED') AND 
9329 (NVL(p_source_13,'
9330 ') =  'B_PO' OR 
9331 NVL(p_source_13,'
9332 ') =  'B_PA') AND 
9333 (NVL(p_source_14,'
9334 ') =  'N' OR 
9335 NVL(p_source_14,'
9336 ') =  'O') AND 
9337 NVL(p_source_9,'
9338 ') =  'PO' AND 
9339 NVL(p_source_15,'
9340 ') =  'S'
9341  THEN 
9342 
9343    --
9344    XLA_AE_LINES_PKG.SetNewLine;
9345 
9346    p_balance_type_code          := l_balance_type_code;
9347    -- set the flag so later we will know whether the gain loss line needs to be created
9348    
9349    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9350      p_actual_flag :='A';
9351    END IF;
9352 
9353    --
9354    -- bulk performance
9355    --
9356    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9357                                       p_header_num   => 0); -- 4262811
9358    --
9359    -- set accounting line options
9360    --
9361    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9362            p_natural_side_code          => 'C'
9363          , p_gain_or_loss_flag          => 'N'
9364          , p_gl_transfer_mode_code      => 'S'
9365          , p_acct_entry_type_code       => 'E'
9366          , p_switch_side_flag           => 'N'
9367          , p_merge_duplicate_code       => 'N'
9368          );
9369    --
9370    l_acc_rev_natural_side_code := 'D';  -- 4262811
9371    -- 
9372    --
9373    -- set accounting line type info
9374    --
9375    xla_ae_lines_pkg.SetAcctLineType
9376       (p_component_type             => l_component_type
9377       ,p_event_type_code            => l_event_type_code
9378       ,p_line_definition_owner_code => l_line_definition_owner_code
9379       ,p_line_definition_code       => l_line_definition_code
9380       ,p_accounting_line_code       => l_component_code
9381       ,p_accounting_line_type_code  => l_component_type_code
9382       ,p_accounting_line_appl_id    => l_component_appl_id
9383       ,p_amb_context_code           => l_amb_context_code
9384       ,p_entity_code                => l_entity_code
9385       ,p_event_class_code           => l_event_class_code);
9386    --
9387    -- set accounting class
9388    --
9389    xla_ae_lines_pkg.SetAcctClass(
9390            p_accounting_class_code  => 'PO_PA_BURDENED'
9391          , p_ae_header_id           => l_ae_header_id
9392          );
9393 
9394    --
9395    -- set rounding class
9396    --
9397    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9398                       'PO_PA_BURDENED';
9399 
9400    --
9401    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9402    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9403    --
9404    -- bulk performance
9405    --
9406    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9407 
9408    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9409       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9410 
9411    -- 4955764
9412    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9413       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9414 
9415    -- 4458381 Public Sector Enh
9416    
9417    --
9418    -- set accounting attributes for the line type
9419    --
9420    l_entered_amt_idx := 28;
9421    l_accted_amt_idx  := 30;
9422    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9423    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9424    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
9425    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
9426    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
9427    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
9428    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
9429    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
9430    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
9431    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
9432    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
9433    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
9434    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
9435    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
9436    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
9437    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
9438    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
9439    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9440    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
9441    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
9442    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
9443    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
9444    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
9445    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9446    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
9447    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
9448    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
9449    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
9450    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
9451    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
9452    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
9453    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
9454    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
9455    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
9456    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
9457    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
9458    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
9459    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
9460    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
9461    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
9462    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
9463    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
9464    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
9465    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
9466    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
9467    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
9468    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
9469    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
9470    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
9471    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
9472    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
9473    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
9474    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
9475    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
9476    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
9477    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
9478    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
9479    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
9480    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
9481    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
9482    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
9483    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
9484    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
9485    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
9486    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
9487    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
9488    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
9489    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
9490    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
9491    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
9492    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
9493 
9494    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9495    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9496 
9497    ---------------------------------------------------------------------------------------------------------------
9498    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9499    ---------------------------------------------------------------------------------------------------------------
9500    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9501 
9502    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9503    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9504 
9505    IF xla_accounting_cache_pkg.GetValueChar
9506          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9507          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9508    AND l_bflow_method_code = 'PRIOR_ENTRY'
9509 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9510    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9511          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9512        )
9513    THEN
9514          xla_ae_lines_pkg.BflowUpgEntry
9515            (p_business_method_code    => l_bflow_method_code
9516            ,p_business_class_code     => l_bflow_class_code
9517            ,p_balance_type            => l_balance_type_code);
9518    ELSE
9519       NULL;
9520 XLA_AE_LINES_PKG.business_flow_validation(
9521                                 p_business_method_code     => l_bflow_method_code
9522                                ,p_business_class_code      => l_bflow_class_code
9523                                ,p_inherit_description_flag => l_inherit_desc_flag);
9524    END IF;
9525 
9526    --
9527    -- call analytical criteria
9528    --
9529    -- Inherited Analytical Criteria for business flow method of Prior Entry.
9530    --
9531    -- call description
9532    --
9533    
9534 xla_ae_lines_pkg.SetLineDescription(
9535    p_ae_header_id => l_ae_header_id
9536   ,p_description  => Description_2 (
9537      p_application_id         => p_application_id
9538    , p_ae_header_id           => l_ae_header_id 
9539 , p_source_3 => p_source_3
9540 , p_source_4 => p_source_4
9541 , p_source_5 => p_source_5
9542 , p_source_6 => p_source_6
9543    )
9544 );
9545 
9546 
9547    --
9548    -- call ADRs
9549    -- Bug 4922099
9550    --
9551    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9552         (NVL(l_actual_upg_option, 'N') = 'O') OR
9553         (NVL(l_enc_upg_option, 'N') = 'O')
9554       )
9555    THEN
9556    NULL;
9557    --
9558    --
9559    
9560    --
9561    --
9562    END IF;
9563    --
9564    -- Bug 4922099
9565    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9566           (NVL(l_enc_upg_option, 'N') = 'O')
9567         ) AND
9568         (l_bflow_method_code = 'PRIOR_ENTRY')
9569       )
9570    THEN
9571       IF
9572       --
9573       1 = 1
9574       --
9575       THEN
9576       xla_accounting_err_pkg.build_message
9577                                     (p_appli_s_name            => 'XLA'
9578                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9579                                     ,p_token_1                 => 'LINE_NUMBER'
9580                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9581                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9582                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9583                                                                              l_component_type
9584                                                                             ,l_component_code
9585                                                                             ,l_component_type_code
9586                                                                             ,l_component_appl_id
9587                                                                             ,l_amb_context_code
9588                                                                             ,l_entity_code
9589                                                                             ,l_event_class_code
9590                                                                            )
9591                                     ,p_token_3                 => 'OWNER'
9592                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9593                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9594                                                                           ,p_lookup_code    => l_component_type_code
9595                                                                          )
9596                                     ,p_token_4                 => 'PRODUCT_NAME'
9597                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9598                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9599                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9600                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9601                                     ,p_ae_header_id            =>  NULL
9602                                        );
9603 
9604         IF (C_LEVEL_ERROR>= g_log_level) THEN
9605                  trace
9606                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9607                       ,p_level    => C_LEVEL_ERROR
9608                       ,p_module   => l_log_module);
9609         END IF;
9610       END IF;
9611    END IF;
9612    --
9613    --
9614    ------------------------------------------------------------------------------------------------
9615    -- 4219869 Business Flow
9616    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9617    -- Prior Entry.  Currently, the following code is always generated.
9618    ------------------------------------------------------------------------------------------------
9619    -- No ValidateCurrentLine for business flow method of Prior Entry
9620 
9621    ------------------------------------------------------------------------------------
9622    -- 4219869 Business Flow
9623    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9624    ------------------------------------------------------------------------------------
9625    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9626 
9627    ----------------------------------------------------------------------------------
9628    -- 4219869 Business Flow
9629    -- Update journal entry status -- Need to generate this within IF <condition>
9630    ----------------------------------------------------------------------------------
9631    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9632          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9633          ,p_balance_type_code => l_balance_type_code
9634          );
9635 
9636    -------------------------------------------------------------------------------------------
9637    -- 4262811 - Generate the Accrual Reversal lines
9638    -------------------------------------------------------------------------------------------
9639    BEGIN
9640       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9641                               (g_array_event(p_event_id).array_value_num('header_index'));
9642       IF l_acc_rev_flag IS NULL THEN
9643          l_acc_rev_flag := 'N';
9644       END IF;
9645    EXCEPTION
9646       WHEN OTHERS THEN
9647          l_acc_rev_flag := 'N';
9648    END;
9649    --
9650    IF (l_acc_rev_flag = 'Y') THEN
9651 
9652        -- 4645092  ------------------------------------------------------------------------------
9653        -- To allow MPA report to determine if it should generate report process
9654        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9655        ------------------------------------------------------------------------------------------
9656 
9657        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9658        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9659 
9660        --
9661        -- Update the line information that should be overwritten
9662        --
9663        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9664                                          p_header_num   => 1);
9665        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9666 
9667        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9668 
9669        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9670           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9671        END IF;
9672 
9673       --
9674       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9675       --
9676       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9677           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9678       ELSE
9679           ---------------------------------------------------------------------------------------------------
9680           -- 4262811a Switch Sign
9681           ---------------------------------------------------------------------------------------------------
9682           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9683           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9684                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9685           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9686                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9687           -- 5132302
9688           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9689                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9690 
9691       END IF;
9692 
9693       -- 4955764
9694       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9695       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9696 
9697 
9698       XLA_AE_LINES_PKG.ValidateCurrentLine;
9699       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9700 
9701       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9702                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9703                ,p_balance_type_code => l_balance_type_code);
9704 
9705    END IF;
9706 
9707    -----------------------------------------------------------------------------------------
9708    -- 4262811 Multiperiod Accounting
9709    -----------------------------------------------------------------------------------------
9710      -- No MPA option is assigned.
9711 
9712 
9713 END IF;
9714 END IF;
9715 --
9716 
9717 --
9718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9719    trace
9720       (p_msg      => 'END of AcctLineType_22'
9721       ,p_level    => C_LEVEL_PROCEDURE
9722       ,p_module   => l_log_module);
9723 END IF;
9724 --
9725 EXCEPTION
9726   WHEN xla_exceptions_pkg.application_exception THEN
9727       RAISE;
9728   WHEN OTHERS THEN
9729        xla_exceptions_pkg.raise_message
9730            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_22');
9731 END AcctLineType_22;
9732 --
9733 
9734 ---------------------------------------
9735 --
9736 -- PRIVATE FUNCTION
9737 --         AcctLineType_23
9738 --
9739 ---------------------------------------
9740 PROCEDURE AcctLineType_23 (
9741   p_application_id        IN NUMBER
9742  ,p_event_id              IN NUMBER
9743  ,p_calculate_acctd_flag  IN VARCHAR2
9744  ,p_calculate_g_l_flag    IN VARCHAR2
9745  ,p_actual_flag           IN OUT VARCHAR2
9746  ,p_balance_type_code     OUT VARCHAR2
9747  ,p_gain_or_loss_ref      OUT VARCHAR2
9748  
9749 --Project Name
9750  , p_source_3            IN VARCHAR2
9751 --Task Name
9752  , p_source_4            IN VARCHAR2
9753 --Project Expenditure Organization Identifier
9754  , p_source_5            IN NUMBER
9755 --Expenditure Type
9756  , p_source_6            IN VARCHAR2
9757 --Document Type
9758  , p_source_9            IN VARCHAR2
9759 --Main Or Backing Code
9760  , p_source_13            IN VARCHAR2
9761 --Burden Record Identifier
9762  , p_source_14            IN VARCHAR2
9763  , p_source_14_meaning    IN VARCHAR2
9764 --Burden Amount Display Method
9765  , p_source_15            IN VARCHAR2
9766 --Accounting Reversal Flag
9767  , p_source_16            IN VARCHAR2
9768 --Allocated to Application Identifier
9769  , p_source_17            IN NUMBER
9770 --Allocated to Distribution Type
9771  , p_source_18            IN VARCHAR2
9772 --Allocated to Entity Code
9773  , p_source_19            IN VARCHAR2
9774 --Allocated to First Distribution Identifier
9775  , p_source_20            IN NUMBER
9776 --Allocated to First System Transaction Identifier
9777  , p_source_21            IN NUMBER
9778 --Allocated to Second Distribution Identifier
9779  , p_source_22            IN VARCHAR2
9780 --Purchase Order Burden Applied to Application Identifier
9781  , p_source_23            IN NUMBER
9782 --PO Distribution Type
9783  , p_source_24            IN VARCHAR2
9784 --Purchase Order Burden Applied to Entity Code
9785  , p_source_25            IN VARCHAR2
9786 --Purchase Order Burden Applied to First Distribution Identifier
9787  , p_source_26            IN NUMBER
9788 --Purchase Order Burden Applied to First System Transaction Identifier
9789  , p_source_27            IN NUMBER
9790 --Purchase Order Burden Applied to Second Distribution Identifier
9791  , p_source_28            IN VARCHAR2
9792 --PO Distribution Identifier
9793  , p_source_29            IN NUMBER
9794 --Line Type Name
9795  , p_source_30            IN VARCHAR2
9796 --Encumbrance Upgrade Credit Accounting Class
9797  , p_source_31            IN VARCHAR2
9798 --Encumbrance Upgrade Credit Account
9799  , p_source_32            IN NUMBER
9800 --Entered Amount
9801  , p_source_33            IN NUMBER
9802 --Currency Code
9803  , p_source_34            IN VARCHAR2
9804 --Accounted Amount
9805  , p_source_35            IN NUMBER
9806 --Encumbrance Upgrade Debit Accounting Class
9807  , p_source_36            IN VARCHAR2
9808 --Encumbrance Upgrade Debit Account
9809  , p_source_37            IN NUMBER
9810 --Use Encumbrances Upgrade Attributes Flag
9811  , p_source_38            IN VARCHAR2
9812 --Encumbrance Upgrade Credit Encumbrance Type
9813  , p_source_39            IN NUMBER
9814 --Encumbrance Upgrade Debit Encumbrance Type
9815  , p_source_40            IN NUMBER
9816 )
9817 IS
9818 
9819 l_component_type              VARCHAR2(80);
9820 l_component_code              VARCHAR2(30);
9821 l_component_type_code         VARCHAR2(1);
9822 l_component_appl_id           INTEGER;
9823 l_amb_context_code            VARCHAR2(30);
9824 l_entity_code                 VARCHAR2(30);
9825 l_event_class_code            VARCHAR2(30);
9826 l_ae_header_id                NUMBER;
9827 l_event_type_code             VARCHAR2(30);
9828 l_line_definition_code        VARCHAR2(30);
9829 l_line_definition_owner_code  VARCHAR2(1);
9830 --
9831 -- adr variables
9832 l_segment                     VARCHAR2(30);
9833 l_ccid                        NUMBER;
9834 l_adr_transaction_coa_id      NUMBER;
9835 l_adr_accounting_coa_id       NUMBER;
9836 l_adr_flexfield_segment_code  VARCHAR2(30);
9837 l_adr_flex_value_set_id       NUMBER;
9838 l_adr_value_type_code         VARCHAR2(30);
9839 l_adr_value_combination_id    NUMBER;
9840 l_adr_value_segment_code      VARCHAR2(30);
9841 
9842 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9843 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9844 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9845 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9846 
9847 -- 4262811 Variables ------------------------------------------------------------------------------------------
9848 l_entered_amt_idx             NUMBER;
9849 l_accted_amt_idx              NUMBER;
9850 l_acc_rev_flag                VARCHAR2(1);
9851 l_accrual_line_num            NUMBER;
9852 l_tmp_amt                     NUMBER;
9853 l_acc_rev_natural_side_code   VARCHAR2(1);
9854 
9855 l_num_entries                 NUMBER;
9856 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9857 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9858 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9859 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9860 l_recog_line_1                NUMBER;
9861 l_recog_line_2                NUMBER;
9862 
9863 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9864 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9865 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9866 
9867 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9868 
9869 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9870 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9871 
9872 ---------------------------------------------------------------------------------------------------------------
9873 
9874 
9875 --
9876 -- bulk performance
9877 --
9878 l_balance_type_code           VARCHAR2(1);
9879 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9880 l_log_module                  VARCHAR2(240);
9881 
9882 --
9883 -- Upgrade strategy
9884 --
9885 l_actual_upg_option           VARCHAR2(1);
9886 l_enc_upg_option           VARCHAR2(1);
9887 
9888 --
9889 BEGIN
9890 --
9891 IF g_log_enabled THEN
9892       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
9893 END IF;
9894 --
9895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9896 
9897       trace
9898          (p_msg      => 'BEGIN of AcctLineType_23'
9899          ,p_level    => C_LEVEL_PROCEDURE
9900          ,p_module   => l_log_module);
9901 
9902 END IF;
9903 --
9904 l_component_type             := 'AMB_JLT';
9905 l_component_code             := 'REINST_PO_BURDENED_ENCFORRELDR';
9906 l_component_type_code        := 'S';
9907 l_component_appl_id          :=  201;
9908 l_amb_context_code           := 'DEFAULT';
9909 l_entity_code                := 'RELEASE';
9910 l_event_class_code           := 'RELEASE_BURDEN';
9911 l_event_type_code            := 'RELEASE_BURDEN_ALL';
9912 l_line_definition_owner_code := 'S';
9913 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
9914 --
9915 l_balance_type_code          := 'E';
9916 l_segment                     := NULL;
9917 l_ccid                        := NULL;
9918 l_adr_transaction_coa_id      := NULL;
9919 l_adr_accounting_coa_id       := NULL;
9920 l_adr_flexfield_segment_code  := NULL;
9921 l_adr_flex_value_set_id       := NULL;
9922 l_adr_value_type_code         := NULL;
9923 l_adr_value_combination_id    := NULL;
9924 l_adr_value_segment_code      := NULL;
9925 
9926 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
9927 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
9928 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9929 l_budgetary_control_flag     := 'Y';
9930 
9931 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9932 l_bflow_applied_to_amt       := NULL; -- 5132302
9933 l_entered_amt_idx            := NULL;          -- 4262811
9934 l_accted_amt_idx             := NULL;          -- 4262811
9935 l_acc_rev_flag               := NULL;          -- 4262811
9936 l_accrual_line_num           := NULL;          -- 4262811
9937 l_tmp_amt                    := NULL;          -- 4262811
9938 --
9939  
9940 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9941     l_balance_type_code <> 'B' THEN
9942 IF (NVL(
9943 xla_ae_sources_pkg.GetSystemSourceChar(
9944    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9945  , p_source_type_code      => 'Y'
9946  , p_source_application_id =>  602
9947 ),'
9948 ') =  'REL_BURDEN_UNRESERVED' OR 
9949 NVL(
9950 xla_ae_sources_pkg.GetSystemSourceChar(
9951    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9952  , p_source_type_code      => 'Y'
9953  , p_source_application_id =>  602
9954 ),'
9955 ') =  'REL_BURDEN_INV_CANCELLED' OR 
9956 NVL(
9957 xla_ae_sources_pkg.GetSystemSourceChar(
9958    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9959  , p_source_type_code      => 'Y'
9960  , p_source_application_id =>  602
9961 ),'
9962 ') =  'REL_BURDEN_REJECTED') AND 
9963 (NVL(p_source_13,'
9964 ') =  'B_PO' OR 
9965 NVL(p_source_13,'
9966 ') =  'B_PA') AND 
9967 (NVL(p_source_14,'
9968 ') =  'N' OR 
9969 NVL(p_source_14,'
9970 ') =  'O') AND 
9971 NVL(p_source_9,'
9972 ') =  'PO' AND 
9973 NVL(p_source_15,'
9974 ') =  'S'
9975  THEN 
9976 
9977    --
9978    XLA_AE_LINES_PKG.SetNewLine;
9979 
9980    p_balance_type_code          := l_balance_type_code;
9981    -- set the flag so later we will know whether the gain loss line needs to be created
9982    
9983    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9984      p_actual_flag :='A';
9985    END IF;
9986 
9987    --
9988    -- bulk performance
9989    --
9990    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9991                                       p_header_num   => 0); -- 4262811
9992    --
9993    -- set accounting line options
9994    --
9995    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9996            p_natural_side_code          => 'D'
9997          , p_gain_or_loss_flag          => 'N'
9998          , p_gl_transfer_mode_code      => 'S'
9999          , p_acct_entry_type_code       => 'E'
10000          , p_switch_side_flag           => 'N'
10001          , p_merge_duplicate_code       => 'N'
10002          );
10003    --
10004    l_acc_rev_natural_side_code := 'C';  -- 4262811
10005    -- 
10006    --
10007    -- set accounting line type info
10008    --
10009    xla_ae_lines_pkg.SetAcctLineType
10010       (p_component_type             => l_component_type
10011       ,p_event_type_code            => l_event_type_code
10012       ,p_line_definition_owner_code => l_line_definition_owner_code
10013       ,p_line_definition_code       => l_line_definition_code
10014       ,p_accounting_line_code       => l_component_code
10015       ,p_accounting_line_type_code  => l_component_type_code
10016       ,p_accounting_line_appl_id    => l_component_appl_id
10017       ,p_amb_context_code           => l_amb_context_code
10018       ,p_entity_code                => l_entity_code
10019       ,p_event_class_code           => l_event_class_code);
10020    --
10021    -- set accounting class
10022    --
10023    xla_ae_lines_pkg.SetAcctClass(
10024            p_accounting_class_code  => 'PO_PA_BURDENED'
10025          , p_ae_header_id           => l_ae_header_id
10026          );
10027 
10028    --
10029    -- set rounding class
10030    --
10031    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10032                       'PO_PA_BURDENED';
10033 
10034    --
10035    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10036    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10037    --
10038    -- bulk performance
10039    --
10040    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10041 
10042    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10043       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10044 
10045    -- 4955764
10046    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10047       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10048 
10049    -- 4458381 Public Sector Enh
10050    
10051    --
10052    -- set accounting attributes for the line type
10053    --
10054    l_entered_amt_idx := 28;
10055    l_accted_amt_idx  := 30;
10056    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10057    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
10058    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
10059    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
10060    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
10061    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
10062    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
10063    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
10064    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
10065    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
10066    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
10067    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
10068    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
10069    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
10070    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
10071    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
10072    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
10073    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10074    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
10075    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
10076    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
10077    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
10078    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
10079    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10080    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
10081    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
10082    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
10083    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
10084    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
10085    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
10086    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
10087    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
10088    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
10089    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
10090    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
10091    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
10092    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
10093    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
10094    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
10095    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
10096    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
10097    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
10098    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
10099    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
10100    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
10101    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
10102    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
10103    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
10104    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
10105    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
10106    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
10107    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
10108    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
10109    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
10110    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
10111    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
10112    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
10113    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
10114    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
10115    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
10116    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
10117    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
10118    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
10119    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
10120    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
10121    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
10122    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
10123    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
10124    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
10125    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
10126    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
10127 
10128    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10129    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10130 
10131    ---------------------------------------------------------------------------------------------------------------
10132    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10133    ---------------------------------------------------------------------------------------------------------------
10134    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10135 
10136    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10137    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10138 
10139    IF xla_accounting_cache_pkg.GetValueChar
10140          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10141          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10142    AND l_bflow_method_code = 'PRIOR_ENTRY'
10143 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10144    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10145          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10146        )
10147    THEN
10148          xla_ae_lines_pkg.BflowUpgEntry
10149            (p_business_method_code    => l_bflow_method_code
10150            ,p_business_class_code     => l_bflow_class_code
10151            ,p_balance_type            => l_balance_type_code);
10152    ELSE
10153       NULL;
10154 XLA_AE_LINES_PKG.business_flow_validation(
10155                                 p_business_method_code     => l_bflow_method_code
10156                                ,p_business_class_code      => l_bflow_class_code
10157                                ,p_inherit_description_flag => l_inherit_desc_flag);
10158    END IF;
10159 
10160    --
10161    -- call analytical criteria
10162    --
10163    -- Inherited Analytical Criteria for business flow method of Prior Entry.
10164    --
10165    -- call description
10166    --
10167    
10168 xla_ae_lines_pkg.SetLineDescription(
10169    p_ae_header_id => l_ae_header_id
10170   ,p_description  => Description_2 (
10171      p_application_id         => p_application_id
10172    , p_ae_header_id           => l_ae_header_id 
10173 , p_source_3 => p_source_3
10174 , p_source_4 => p_source_4
10175 , p_source_5 => p_source_5
10176 , p_source_6 => p_source_6
10177    )
10178 );
10179 
10180 
10181    --
10182    -- call ADRs
10183    -- Bug 4922099
10184    --
10185    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10186         (NVL(l_actual_upg_option, 'N') = 'O') OR
10187         (NVL(l_enc_upg_option, 'N') = 'O')
10188       )
10189    THEN
10190    NULL;
10191    --
10192    --
10193    
10194    --
10195    --
10196    END IF;
10197    --
10198    -- Bug 4922099
10199    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10200           (NVL(l_enc_upg_option, 'N') = 'O')
10201         ) AND
10202         (l_bflow_method_code = 'PRIOR_ENTRY')
10203       )
10204    THEN
10205       IF
10206       --
10207       1 = 1
10208       --
10209       THEN
10210       xla_accounting_err_pkg.build_message
10211                                     (p_appli_s_name            => 'XLA'
10212                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10213                                     ,p_token_1                 => 'LINE_NUMBER'
10214                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10215                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10216                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10217                                                                              l_component_type
10218                                                                             ,l_component_code
10219                                                                             ,l_component_type_code
10220                                                                             ,l_component_appl_id
10221                                                                             ,l_amb_context_code
10222                                                                             ,l_entity_code
10223                                                                             ,l_event_class_code
10224                                                                            )
10225                                     ,p_token_3                 => 'OWNER'
10226                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10227                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10228                                                                           ,p_lookup_code    => l_component_type_code
10229                                                                          )
10230                                     ,p_token_4                 => 'PRODUCT_NAME'
10231                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10232                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10233                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10234                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10235                                     ,p_ae_header_id            =>  NULL
10236                                        );
10237 
10238         IF (C_LEVEL_ERROR>= g_log_level) THEN
10239                  trace
10240                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10241                       ,p_level    => C_LEVEL_ERROR
10242                       ,p_module   => l_log_module);
10243         END IF;
10244       END IF;
10245    END IF;
10246    --
10247    --
10248    ------------------------------------------------------------------------------------------------
10249    -- 4219869 Business Flow
10250    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10251    -- Prior Entry.  Currently, the following code is always generated.
10252    ------------------------------------------------------------------------------------------------
10253    -- No ValidateCurrentLine for business flow method of Prior Entry
10254 
10255    ------------------------------------------------------------------------------------
10256    -- 4219869 Business Flow
10257    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10258    ------------------------------------------------------------------------------------
10259    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10260 
10261    ----------------------------------------------------------------------------------
10262    -- 4219869 Business Flow
10263    -- Update journal entry status -- Need to generate this within IF <condition>
10264    ----------------------------------------------------------------------------------
10265    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10266          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10267          ,p_balance_type_code => l_balance_type_code
10268          );
10269 
10270    -------------------------------------------------------------------------------------------
10271    -- 4262811 - Generate the Accrual Reversal lines
10272    -------------------------------------------------------------------------------------------
10273    BEGIN
10274       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10275                               (g_array_event(p_event_id).array_value_num('header_index'));
10276       IF l_acc_rev_flag IS NULL THEN
10277          l_acc_rev_flag := 'N';
10278       END IF;
10279    EXCEPTION
10280       WHEN OTHERS THEN
10281          l_acc_rev_flag := 'N';
10282    END;
10283    --
10284    IF (l_acc_rev_flag = 'Y') THEN
10285 
10286        -- 4645092  ------------------------------------------------------------------------------
10287        -- To allow MPA report to determine if it should generate report process
10288        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10289        ------------------------------------------------------------------------------------------
10290 
10291        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10292        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10293 
10294        --
10295        -- Update the line information that should be overwritten
10296        --
10297        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10298                                          p_header_num   => 1);
10299        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10300 
10301        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10302 
10303        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10304           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10305        END IF;
10306 
10307       --
10308       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10309       --
10310       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10311           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10312       ELSE
10313           ---------------------------------------------------------------------------------------------------
10314           -- 4262811a Switch Sign
10315           ---------------------------------------------------------------------------------------------------
10316           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10317           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10318                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10319           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10320                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10321           -- 5132302
10322           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10323                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10324 
10325       END IF;
10326 
10327       -- 4955764
10328       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10329       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10330 
10331 
10332       XLA_AE_LINES_PKG.ValidateCurrentLine;
10333       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10334 
10335       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10336                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10337                ,p_balance_type_code => l_balance_type_code);
10338 
10339    END IF;
10340 
10341    -----------------------------------------------------------------------------------------
10342    -- 4262811 Multiperiod Accounting
10343    -----------------------------------------------------------------------------------------
10344      -- No MPA option is assigned.
10345 
10346 
10347 END IF;
10348 END IF;
10349 --
10350 
10351 --
10352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10353    trace
10354       (p_msg      => 'END of AcctLineType_23'
10355       ,p_level    => C_LEVEL_PROCEDURE
10356       ,p_module   => l_log_module);
10357 END IF;
10358 --
10359 EXCEPTION
10360   WHEN xla_exceptions_pkg.application_exception THEN
10361       RAISE;
10362   WHEN OTHERS THEN
10363        xla_exceptions_pkg.raise_message
10364            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_23');
10365 END AcctLineType_23;
10366 --
10367 
10368 ---------------------------------------
10369 --
10370 -- PRIVATE FUNCTION
10371 --         AcctLineType_24
10372 --
10373 ---------------------------------------
10374 PROCEDURE AcctLineType_24 (
10375   p_application_id        IN NUMBER
10376  ,p_event_id              IN NUMBER
10377  ,p_calculate_acctd_flag  IN VARCHAR2
10378  ,p_calculate_g_l_flag    IN VARCHAR2
10379  ,p_actual_flag           IN OUT VARCHAR2
10380  ,p_balance_type_code     OUT VARCHAR2
10381  ,p_gain_or_loss_ref      OUT VARCHAR2
10382  
10383 --Project Name
10384  , p_source_3            IN VARCHAR2
10385 --Task Name
10386  , p_source_4            IN VARCHAR2
10387 --Project Expenditure Organization Identifier
10388  , p_source_5            IN NUMBER
10389 --Expenditure Type
10390  , p_source_6            IN VARCHAR2
10391 --Document Type
10392  , p_source_9            IN VARCHAR2
10393 --Main Or Backing Code
10394  , p_source_13            IN VARCHAR2
10395 --Burden Record Identifier
10396  , p_source_14            IN VARCHAR2
10397  , p_source_14_meaning    IN VARCHAR2
10398 --Burden Amount Display Method
10399  , p_source_15            IN VARCHAR2
10400 --Accounting Reversal Flag
10401  , p_source_16            IN VARCHAR2
10402 --Allocated to Application Identifier
10403  , p_source_17            IN NUMBER
10404 --Allocated to Distribution Type
10405  , p_source_18            IN VARCHAR2
10406 --Allocated to Entity Code
10407  , p_source_19            IN VARCHAR2
10408 --Allocated to First Distribution Identifier
10409  , p_source_20            IN NUMBER
10410 --Allocated to First System Transaction Identifier
10411  , p_source_21            IN NUMBER
10412 --Allocated to Second Distribution Identifier
10413  , p_source_22            IN VARCHAR2
10414 --Purchase Order Burden Applied to Application Identifier
10415  , p_source_23            IN NUMBER
10416 --PO Distribution Type
10417  , p_source_24            IN VARCHAR2
10418 --Purchase Order Burden Applied to Entity Code
10419  , p_source_25            IN VARCHAR2
10420 --Purchase Order Burden Applied to First Distribution Identifier
10421  , p_source_26            IN NUMBER
10422 --Purchase Order Burden Applied to First System Transaction Identifier
10423  , p_source_27            IN NUMBER
10424 --Purchase Order Burden Applied to Second Distribution Identifier
10425  , p_source_28            IN VARCHAR2
10426 --PO Distribution Identifier
10427  , p_source_29            IN NUMBER
10428 --Line Type Name
10429  , p_source_30            IN VARCHAR2
10430 --Encumbrance Upgrade Credit Accounting Class
10431  , p_source_31            IN VARCHAR2
10432 --Encumbrance Upgrade Credit Account
10433  , p_source_32            IN NUMBER
10434 --Entered Amount
10435  , p_source_33            IN NUMBER
10436 --Currency Code
10437  , p_source_34            IN VARCHAR2
10438 --Accounted Amount
10439  , p_source_35            IN NUMBER
10440 --Encumbrance Upgrade Debit Accounting Class
10441  , p_source_36            IN VARCHAR2
10442 --Encumbrance Upgrade Debit Account
10443  , p_source_37            IN NUMBER
10444 --Use Encumbrances Upgrade Attributes Flag
10445  , p_source_38            IN VARCHAR2
10446 --Encumbrance Upgrade Credit Encumbrance Type
10447  , p_source_39            IN NUMBER
10448 --Encumbrance Upgrade Debit Encumbrance Type
10449  , p_source_40            IN NUMBER
10450 )
10451 IS
10452 
10453 l_component_type              VARCHAR2(80);
10454 l_component_code              VARCHAR2(30);
10455 l_component_type_code         VARCHAR2(1);
10456 l_component_appl_id           INTEGER;
10457 l_amb_context_code            VARCHAR2(30);
10458 l_entity_code                 VARCHAR2(30);
10459 l_event_class_code            VARCHAR2(30);
10460 l_ae_header_id                NUMBER;
10461 l_event_type_code             VARCHAR2(30);
10462 l_line_definition_code        VARCHAR2(30);
10463 l_line_definition_owner_code  VARCHAR2(1);
10464 --
10465 -- adr variables
10466 l_segment                     VARCHAR2(30);
10467 l_ccid                        NUMBER;
10468 l_adr_transaction_coa_id      NUMBER;
10469 l_adr_accounting_coa_id       NUMBER;
10470 l_adr_flexfield_segment_code  VARCHAR2(30);
10471 l_adr_flex_value_set_id       NUMBER;
10472 l_adr_value_type_code         VARCHAR2(30);
10473 l_adr_value_combination_id    NUMBER;
10474 l_adr_value_segment_code      VARCHAR2(30);
10475 
10476 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10477 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10478 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10479 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10480 
10481 -- 4262811 Variables ------------------------------------------------------------------------------------------
10482 l_entered_amt_idx             NUMBER;
10483 l_accted_amt_idx              NUMBER;
10484 l_acc_rev_flag                VARCHAR2(1);
10485 l_accrual_line_num            NUMBER;
10486 l_tmp_amt                     NUMBER;
10487 l_acc_rev_natural_side_code   VARCHAR2(1);
10488 
10489 l_num_entries                 NUMBER;
10490 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10491 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10492 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10493 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10494 l_recog_line_1                NUMBER;
10495 l_recog_line_2                NUMBER;
10496 
10497 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10498 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10499 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10500 
10501 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10502 
10503 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10504 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10505 
10506 ---------------------------------------------------------------------------------------------------------------
10507 
10508 
10509 --
10510 -- bulk performance
10511 --
10512 l_balance_type_code           VARCHAR2(1);
10513 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10514 l_log_module                  VARCHAR2(240);
10515 
10516 --
10517 -- Upgrade strategy
10518 --
10519 l_actual_upg_option           VARCHAR2(1);
10520 l_enc_upg_option           VARCHAR2(1);
10521 
10522 --
10523 BEGIN
10524 --
10525 IF g_log_enabled THEN
10526       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
10527 END IF;
10528 --
10529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10530 
10531       trace
10532          (p_msg      => 'BEGIN of AcctLineType_24'
10533          ,p_level    => C_LEVEL_PROCEDURE
10534          ,p_module   => l_log_module);
10535 
10536 END IF;
10537 --
10538 l_component_type             := 'AMB_JLT';
10539 l_component_code             := 'REINST_PO_BURDEN_ENCFORRELCR';
10540 l_component_type_code        := 'S';
10541 l_component_appl_id          :=  201;
10542 l_amb_context_code           := 'DEFAULT';
10543 l_entity_code                := 'RELEASE';
10544 l_event_class_code           := 'RELEASE_BURDEN';
10545 l_event_type_code            := 'RELEASE_BURDEN_ALL';
10546 l_line_definition_owner_code := 'S';
10547 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
10548 --
10549 l_balance_type_code          := 'E';
10550 l_segment                     := NULL;
10551 l_ccid                        := NULL;
10552 l_adr_transaction_coa_id      := NULL;
10553 l_adr_accounting_coa_id       := NULL;
10554 l_adr_flexfield_segment_code  := NULL;
10555 l_adr_flex_value_set_id       := NULL;
10556 l_adr_value_type_code         := NULL;
10557 l_adr_value_combination_id    := NULL;
10558 l_adr_value_segment_code      := NULL;
10559 
10560 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
10561 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
10562 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10563 l_budgetary_control_flag     := 'Y';
10564 
10565 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10566 l_bflow_applied_to_amt       := NULL; -- 5132302
10567 l_entered_amt_idx            := NULL;          -- 4262811
10568 l_accted_amt_idx             := NULL;          -- 4262811
10569 l_acc_rev_flag               := NULL;          -- 4262811
10570 l_accrual_line_num           := NULL;          -- 4262811
10571 l_tmp_amt                    := NULL;          -- 4262811
10572 --
10573  
10574 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10575     l_balance_type_code <> 'B' THEN
10576 IF (NVL(
10577 xla_ae_sources_pkg.GetSystemSourceChar(
10578    p_source_code           => 'XLA_EVENT_TYPE_CODE'
10579  , p_source_type_code      => 'Y'
10580  , p_source_application_id =>  602
10581 ),'
10582 ') =  'REL_BURDEN_CANCELLED' OR 
10583 NVL(
10584 xla_ae_sources_pkg.GetSystemSourceChar(
10585    p_source_code           => 'XLA_EVENT_TYPE_CODE'
10586  , p_source_type_code      => 'Y'
10587  , p_source_application_id =>  602
10588 ),'
10589 ') =  'REL_BURDEN_CR_MEMO_CANCELLED') AND 
10590 (NVL(p_source_13,'
10591 ') =  'B_PO' OR 
10592 NVL(p_source_13,'
10593 ') =  'B_PA') AND 
10594 NVL(p_source_14,'
10595 ') =  'O' AND 
10596 NVL(p_source_9,'
10597 ') =  'PO' AND 
10598 NVL(p_source_15,'
10599 ') =  'D'
10600  THEN 
10601 
10602    --
10603    XLA_AE_LINES_PKG.SetNewLine;
10604 
10605    p_balance_type_code          := l_balance_type_code;
10606    -- set the flag so later we will know whether the gain loss line needs to be created
10607    
10608    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10609      p_actual_flag :='A';
10610    END IF;
10611 
10612    --
10613    -- bulk performance
10614    --
10615    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10616                                       p_header_num   => 0); -- 4262811
10617    --
10618    -- set accounting line options
10619    --
10620    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10621            p_natural_side_code          => 'C'
10622          , p_gain_or_loss_flag          => 'N'
10623          , p_gl_transfer_mode_code      => 'S'
10624          , p_acct_entry_type_code       => 'E'
10625          , p_switch_side_flag           => 'N'
10626          , p_merge_duplicate_code       => 'N'
10627          );
10628    --
10629    l_acc_rev_natural_side_code := 'D';  -- 4262811
10630    -- 
10631    --
10632    -- set accounting line type info
10633    --
10634    xla_ae_lines_pkg.SetAcctLineType
10635       (p_component_type             => l_component_type
10636       ,p_event_type_code            => l_event_type_code
10637       ,p_line_definition_owner_code => l_line_definition_owner_code
10638       ,p_line_definition_code       => l_line_definition_code
10639       ,p_accounting_line_code       => l_component_code
10640       ,p_accounting_line_type_code  => l_component_type_code
10641       ,p_accounting_line_appl_id    => l_component_appl_id
10642       ,p_amb_context_code           => l_amb_context_code
10643       ,p_entity_code                => l_entity_code
10644       ,p_event_class_code           => l_event_class_code);
10645    --
10646    -- set accounting class
10647    --
10648    xla_ae_lines_pkg.SetAcctClass(
10649            p_accounting_class_code  => 'PO_PA_BURDEN'
10650          , p_ae_header_id           => l_ae_header_id
10651          );
10652 
10653    --
10654    -- set rounding class
10655    --
10656    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10657                       'PO_PA_BURDEN';
10658 
10659    --
10660    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10661    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10662    --
10663    -- bulk performance
10664    --
10665    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10666 
10667    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10668       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10669 
10670    -- 4955764
10671    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10672       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10673 
10674    -- 4458381 Public Sector Enh
10675    
10676    --
10677    -- set accounting attributes for the line type
10678    --
10679    l_entered_amt_idx := 28;
10680    l_accted_amt_idx  := 30;
10681    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10682    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
10683    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
10684    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
10685    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
10686    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
10687    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
10688    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
10689    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
10690    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
10691    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
10692    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
10693    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
10694    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
10695    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
10696    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
10697    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
10698    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10699    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
10700    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
10701    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
10702    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
10703    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
10704    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10705    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
10706    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
10707    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
10708    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
10709    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
10710    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
10711    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
10712    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
10713    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
10714    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
10715    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
10716    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
10717    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
10718    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
10719    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
10720    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
10721    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
10722    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
10723    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
10724    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
10725    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
10726    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
10727    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
10728    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
10729    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
10730    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
10731    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
10732    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
10733    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
10734    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
10735    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
10736    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
10737    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
10738    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
10739    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
10740    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
10741    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
10742    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
10743    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
10744    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
10745    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
10746    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
10747    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
10748    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
10749    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
10750    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
10751    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
10752 
10753    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10754    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10755 
10756    ---------------------------------------------------------------------------------------------------------------
10757    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10758    ---------------------------------------------------------------------------------------------------------------
10759    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10760 
10761    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10762    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10763 
10764    IF xla_accounting_cache_pkg.GetValueChar
10765          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10766          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10767    AND l_bflow_method_code = 'PRIOR_ENTRY'
10768 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10769    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10770          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10771        )
10772    THEN
10773          xla_ae_lines_pkg.BflowUpgEntry
10774            (p_business_method_code    => l_bflow_method_code
10775            ,p_business_class_code     => l_bflow_class_code
10776            ,p_balance_type            => l_balance_type_code);
10777    ELSE
10778       NULL;
10779 XLA_AE_LINES_PKG.business_flow_validation(
10780                                 p_business_method_code     => l_bflow_method_code
10781                                ,p_business_class_code      => l_bflow_class_code
10782                                ,p_inherit_description_flag => l_inherit_desc_flag);
10783    END IF;
10784 
10785    --
10786    -- call analytical criteria
10787    --
10788    -- Inherited Analytical Criteria for business flow method of Prior Entry.
10789    --
10790    -- call description
10791    --
10792    
10793 xla_ae_lines_pkg.SetLineDescription(
10794    p_ae_header_id => l_ae_header_id
10795   ,p_description  => Description_2 (
10796      p_application_id         => p_application_id
10797    , p_ae_header_id           => l_ae_header_id 
10798 , p_source_3 => p_source_3
10799 , p_source_4 => p_source_4
10800 , p_source_5 => p_source_5
10801 , p_source_6 => p_source_6
10802    )
10803 );
10804 
10805 
10806    --
10807    -- call ADRs
10808    -- Bug 4922099
10809    --
10810    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10811         (NVL(l_actual_upg_option, 'N') = 'O') OR
10812         (NVL(l_enc_upg_option, 'N') = 'O')
10813       )
10814    THEN
10815    NULL;
10816    --
10817    --
10818    
10819    --
10820    --
10821    END IF;
10822    --
10823    -- Bug 4922099
10824    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10825           (NVL(l_enc_upg_option, 'N') = 'O')
10826         ) AND
10827         (l_bflow_method_code = 'PRIOR_ENTRY')
10828       )
10829    THEN
10830       IF
10831       --
10832       1 = 1
10833       --
10834       THEN
10835       xla_accounting_err_pkg.build_message
10836                                     (p_appli_s_name            => 'XLA'
10837                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10838                                     ,p_token_1                 => 'LINE_NUMBER'
10839                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10840                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10841                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10842                                                                              l_component_type
10843                                                                             ,l_component_code
10844                                                                             ,l_component_type_code
10845                                                                             ,l_component_appl_id
10846                                                                             ,l_amb_context_code
10847                                                                             ,l_entity_code
10848                                                                             ,l_event_class_code
10849                                                                            )
10850                                     ,p_token_3                 => 'OWNER'
10851                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10852                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10853                                                                           ,p_lookup_code    => l_component_type_code
10854                                                                          )
10855                                     ,p_token_4                 => 'PRODUCT_NAME'
10856                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10857                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10858                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10859                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10860                                     ,p_ae_header_id            =>  NULL
10861                                        );
10862 
10863         IF (C_LEVEL_ERROR>= g_log_level) THEN
10864                  trace
10865                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10866                       ,p_level    => C_LEVEL_ERROR
10867                       ,p_module   => l_log_module);
10868         END IF;
10869       END IF;
10870    END IF;
10871    --
10872    --
10873    ------------------------------------------------------------------------------------------------
10874    -- 4219869 Business Flow
10875    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10876    -- Prior Entry.  Currently, the following code is always generated.
10877    ------------------------------------------------------------------------------------------------
10878    -- No ValidateCurrentLine for business flow method of Prior Entry
10879 
10880    ------------------------------------------------------------------------------------
10881    -- 4219869 Business Flow
10882    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10883    ------------------------------------------------------------------------------------
10884    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10885 
10886    ----------------------------------------------------------------------------------
10887    -- 4219869 Business Flow
10888    -- Update journal entry status -- Need to generate this within IF <condition>
10889    ----------------------------------------------------------------------------------
10890    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10891          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10892          ,p_balance_type_code => l_balance_type_code
10893          );
10894 
10895    -------------------------------------------------------------------------------------------
10896    -- 4262811 - Generate the Accrual Reversal lines
10897    -------------------------------------------------------------------------------------------
10898    BEGIN
10899       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10900                               (g_array_event(p_event_id).array_value_num('header_index'));
10901       IF l_acc_rev_flag IS NULL THEN
10902          l_acc_rev_flag := 'N';
10903       END IF;
10904    EXCEPTION
10905       WHEN OTHERS THEN
10906          l_acc_rev_flag := 'N';
10907    END;
10908    --
10909    IF (l_acc_rev_flag = 'Y') THEN
10910 
10911        -- 4645092  ------------------------------------------------------------------------------
10912        -- To allow MPA report to determine if it should generate report process
10913        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10914        ------------------------------------------------------------------------------------------
10915 
10916        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10917        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10918 
10919        --
10920        -- Update the line information that should be overwritten
10921        --
10922        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10923                                          p_header_num   => 1);
10924        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10925 
10926        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10927 
10928        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10929           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10930        END IF;
10931 
10932       --
10933       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10934       --
10935       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10936           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10937       ELSE
10938           ---------------------------------------------------------------------------------------------------
10939           -- 4262811a Switch Sign
10940           ---------------------------------------------------------------------------------------------------
10941           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10942           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10943                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10944           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10945                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10946           -- 5132302
10947           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10948                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10949 
10950       END IF;
10951 
10952       -- 4955764
10953       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10954       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10955 
10956 
10957       XLA_AE_LINES_PKG.ValidateCurrentLine;
10958       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10959 
10960       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10961                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10962                ,p_balance_type_code => l_balance_type_code);
10963 
10964    END IF;
10965 
10966    -----------------------------------------------------------------------------------------
10967    -- 4262811 Multiperiod Accounting
10968    -----------------------------------------------------------------------------------------
10969      -- No MPA option is assigned.
10970 
10971 
10972 END IF;
10973 END IF;
10974 --
10975 
10976 --
10977 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10978    trace
10979       (p_msg      => 'END of AcctLineType_24'
10980       ,p_level    => C_LEVEL_PROCEDURE
10981       ,p_module   => l_log_module);
10982 END IF;
10983 --
10984 EXCEPTION
10985   WHEN xla_exceptions_pkg.application_exception THEN
10986       RAISE;
10987   WHEN OTHERS THEN
10988        xla_exceptions_pkg.raise_message
10989            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_24');
10990 END AcctLineType_24;
10991 --
10992 
10993 ---------------------------------------
10994 --
10995 -- PRIVATE FUNCTION
10996 --         AcctLineType_25
10997 --
10998 ---------------------------------------
10999 PROCEDURE AcctLineType_25 (
11000   p_application_id        IN NUMBER
11001  ,p_event_id              IN NUMBER
11002  ,p_calculate_acctd_flag  IN VARCHAR2
11003  ,p_calculate_g_l_flag    IN VARCHAR2
11004  ,p_actual_flag           IN OUT VARCHAR2
11005  ,p_balance_type_code     OUT VARCHAR2
11006  ,p_gain_or_loss_ref      OUT VARCHAR2
11007  
11008 --Project Name
11009  , p_source_3            IN VARCHAR2
11010 --Task Name
11011  , p_source_4            IN VARCHAR2
11012 --Project Expenditure Organization Identifier
11013  , p_source_5            IN NUMBER
11014 --Expenditure Type
11015  , p_source_6            IN VARCHAR2
11016 --Document Type
11017  , p_source_9            IN VARCHAR2
11018 --Main Or Backing Code
11019  , p_source_13            IN VARCHAR2
11020 --Burden Record Identifier
11021  , p_source_14            IN VARCHAR2
11022  , p_source_14_meaning    IN VARCHAR2
11023 --Burden Amount Display Method
11024  , p_source_15            IN VARCHAR2
11025 --Accounting Reversal Flag
11026  , p_source_16            IN VARCHAR2
11027 --Allocated to Application Identifier
11028  , p_source_17            IN NUMBER
11029 --Allocated to Distribution Type
11030  , p_source_18            IN VARCHAR2
11031 --Allocated to Entity Code
11032  , p_source_19            IN VARCHAR2
11033 --Allocated to First Distribution Identifier
11034  , p_source_20            IN NUMBER
11035 --Allocated to First System Transaction Identifier
11036  , p_source_21            IN NUMBER
11037 --Allocated to Second Distribution Identifier
11038  , p_source_22            IN VARCHAR2
11039 --Purchase Order Burden Applied to Application Identifier
11040  , p_source_23            IN NUMBER
11041 --PO Distribution Type
11042  , p_source_24            IN VARCHAR2
11043 --Purchase Order Burden Applied to Entity Code
11044  , p_source_25            IN VARCHAR2
11045 --Purchase Order Burden Applied to First Distribution Identifier
11046  , p_source_26            IN NUMBER
11047 --Purchase Order Burden Applied to First System Transaction Identifier
11048  , p_source_27            IN NUMBER
11049 --Purchase Order Burden Applied to Second Distribution Identifier
11050  , p_source_28            IN VARCHAR2
11051 --PO Distribution Identifier
11052  , p_source_29            IN NUMBER
11053 --Line Type Name
11054  , p_source_30            IN VARCHAR2
11055 --Encumbrance Upgrade Credit Accounting Class
11056  , p_source_31            IN VARCHAR2
11057 --Encumbrance Upgrade Credit Account
11058  , p_source_32            IN NUMBER
11059 --Entered Amount
11060  , p_source_33            IN NUMBER
11061 --Currency Code
11062  , p_source_34            IN VARCHAR2
11063 --Accounted Amount
11064  , p_source_35            IN NUMBER
11065 --Encumbrance Upgrade Debit Accounting Class
11066  , p_source_36            IN VARCHAR2
11067 --Encumbrance Upgrade Debit Account
11068  , p_source_37            IN NUMBER
11069 --Use Encumbrances Upgrade Attributes Flag
11070  , p_source_38            IN VARCHAR2
11071 --Encumbrance Upgrade Credit Encumbrance Type
11072  , p_source_39            IN NUMBER
11073 --Encumbrance Upgrade Debit Encumbrance Type
11074  , p_source_40            IN NUMBER
11075 )
11076 IS
11077 
11078 l_component_type              VARCHAR2(80);
11079 l_component_code              VARCHAR2(30);
11080 l_component_type_code         VARCHAR2(1);
11081 l_component_appl_id           INTEGER;
11082 l_amb_context_code            VARCHAR2(30);
11083 l_entity_code                 VARCHAR2(30);
11084 l_event_class_code            VARCHAR2(30);
11085 l_ae_header_id                NUMBER;
11086 l_event_type_code             VARCHAR2(30);
11087 l_line_definition_code        VARCHAR2(30);
11088 l_line_definition_owner_code  VARCHAR2(1);
11089 --
11090 -- adr variables
11091 l_segment                     VARCHAR2(30);
11092 l_ccid                        NUMBER;
11093 l_adr_transaction_coa_id      NUMBER;
11094 l_adr_accounting_coa_id       NUMBER;
11095 l_adr_flexfield_segment_code  VARCHAR2(30);
11096 l_adr_flex_value_set_id       NUMBER;
11097 l_adr_value_type_code         VARCHAR2(30);
11098 l_adr_value_combination_id    NUMBER;
11099 l_adr_value_segment_code      VARCHAR2(30);
11100 
11101 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11102 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11103 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11104 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11105 
11106 -- 4262811 Variables ------------------------------------------------------------------------------------------
11107 l_entered_amt_idx             NUMBER;
11108 l_accted_amt_idx              NUMBER;
11109 l_acc_rev_flag                VARCHAR2(1);
11110 l_accrual_line_num            NUMBER;
11111 l_tmp_amt                     NUMBER;
11112 l_acc_rev_natural_side_code   VARCHAR2(1);
11113 
11114 l_num_entries                 NUMBER;
11115 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11116 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11117 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11118 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11119 l_recog_line_1                NUMBER;
11120 l_recog_line_2                NUMBER;
11121 
11122 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11123 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11124 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11125 
11126 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11127 
11128 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11129 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11130 
11131 ---------------------------------------------------------------------------------------------------------------
11132 
11133 
11134 --
11135 -- bulk performance
11136 --
11137 l_balance_type_code           VARCHAR2(1);
11138 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11139 l_log_module                  VARCHAR2(240);
11140 
11141 --
11142 -- Upgrade strategy
11143 --
11144 l_actual_upg_option           VARCHAR2(1);
11145 l_enc_upg_option           VARCHAR2(1);
11146 
11147 --
11148 BEGIN
11149 --
11150 IF g_log_enabled THEN
11151       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
11152 END IF;
11153 --
11154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11155 
11156       trace
11157          (p_msg      => 'BEGIN of AcctLineType_25'
11158          ,p_level    => C_LEVEL_PROCEDURE
11159          ,p_module   => l_log_module);
11160 
11161 END IF;
11162 --
11163 l_component_type             := 'AMB_JLT';
11164 l_component_code             := 'REINST_PO_BURDEN_ENCFORRELDR';
11165 l_component_type_code        := 'S';
11166 l_component_appl_id          :=  201;
11167 l_amb_context_code           := 'DEFAULT';
11168 l_entity_code                := 'RELEASE';
11169 l_event_class_code           := 'RELEASE_BURDEN';
11170 l_event_type_code            := 'RELEASE_BURDEN_ALL';
11171 l_line_definition_owner_code := 'S';
11172 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
11173 --
11174 l_balance_type_code          := 'E';
11175 l_segment                     := NULL;
11176 l_ccid                        := NULL;
11177 l_adr_transaction_coa_id      := NULL;
11178 l_adr_accounting_coa_id       := NULL;
11179 l_adr_flexfield_segment_code  := NULL;
11180 l_adr_flex_value_set_id       := NULL;
11181 l_adr_value_type_code         := NULL;
11182 l_adr_value_combination_id    := NULL;
11183 l_adr_value_segment_code      := NULL;
11184 
11185 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
11186 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
11187 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11188 l_budgetary_control_flag     := 'Y';
11189 
11190 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11191 l_bflow_applied_to_amt       := NULL; -- 5132302
11192 l_entered_amt_idx            := NULL;          -- 4262811
11193 l_accted_amt_idx             := NULL;          -- 4262811
11194 l_acc_rev_flag               := NULL;          -- 4262811
11195 l_accrual_line_num           := NULL;          -- 4262811
11196 l_tmp_amt                    := NULL;          -- 4262811
11197 --
11198  
11199 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11200     l_balance_type_code <> 'B' THEN
11201 IF (NVL(
11202 xla_ae_sources_pkg.GetSystemSourceChar(
11203    p_source_code           => 'XLA_EVENT_TYPE_CODE'
11204  , p_source_type_code      => 'Y'
11205  , p_source_application_id =>  602
11206 ),'
11207 ') =  'REL_BURDEN_UNRESERVED' OR 
11208 NVL(
11209 xla_ae_sources_pkg.GetSystemSourceChar(
11210    p_source_code           => 'XLA_EVENT_TYPE_CODE'
11211  , p_source_type_code      => 'Y'
11212  , p_source_application_id =>  602
11213 ),'
11214 ') =  'REL_BURDEN_INV_CANCELLED' OR 
11215 NVL(
11216 xla_ae_sources_pkg.GetSystemSourceChar(
11217    p_source_code           => 'XLA_EVENT_TYPE_CODE'
11218  , p_source_type_code      => 'Y'
11219  , p_source_application_id =>  602
11220 ),'
11221 ') =  'REL_BURDEN_REJECTED') AND 
11222 (NVL(p_source_13,'
11223 ') =  'B_PO' OR 
11224 NVL(p_source_13,'
11225 ') =  'B_PA') AND 
11226 NVL(p_source_14,'
11227 ') =  'O' AND 
11228 NVL(p_source_9,'
11229 ') =  'PO' AND 
11230 NVL(p_source_15,'
11231 ') =  'D'
11232  THEN 
11233 
11234    --
11235    XLA_AE_LINES_PKG.SetNewLine;
11236 
11237    p_balance_type_code          := l_balance_type_code;
11238    -- set the flag so later we will know whether the gain loss line needs to be created
11239    
11240    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11241      p_actual_flag :='A';
11242    END IF;
11243 
11244    --
11245    -- bulk performance
11246    --
11247    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11248                                       p_header_num   => 0); -- 4262811
11249    --
11250    -- set accounting line options
11251    --
11252    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11253            p_natural_side_code          => 'D'
11254          , p_gain_or_loss_flag          => 'N'
11255          , p_gl_transfer_mode_code      => 'S'
11256          , p_acct_entry_type_code       => 'E'
11257          , p_switch_side_flag           => 'N'
11258          , p_merge_duplicate_code       => 'N'
11259          );
11260    --
11261    l_acc_rev_natural_side_code := 'C';  -- 4262811
11262    -- 
11263    --
11264    -- set accounting line type info
11265    --
11266    xla_ae_lines_pkg.SetAcctLineType
11267       (p_component_type             => l_component_type
11268       ,p_event_type_code            => l_event_type_code
11269       ,p_line_definition_owner_code => l_line_definition_owner_code
11270       ,p_line_definition_code       => l_line_definition_code
11271       ,p_accounting_line_code       => l_component_code
11272       ,p_accounting_line_type_code  => l_component_type_code
11273       ,p_accounting_line_appl_id    => l_component_appl_id
11274       ,p_amb_context_code           => l_amb_context_code
11275       ,p_entity_code                => l_entity_code
11276       ,p_event_class_code           => l_event_class_code);
11277    --
11278    -- set accounting class
11279    --
11280    xla_ae_lines_pkg.SetAcctClass(
11281            p_accounting_class_code  => 'PO_PA_BURDEN'
11282          , p_ae_header_id           => l_ae_header_id
11283          );
11284 
11285    --
11286    -- set rounding class
11287    --
11288    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11289                       'PO_PA_BURDEN';
11290 
11291    --
11292    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11293    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11294    --
11295    -- bulk performance
11296    --
11297    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11298 
11299    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11300       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11301 
11302    -- 4955764
11303    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11304       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11305 
11306    -- 4458381 Public Sector Enh
11307    
11308    --
11309    -- set accounting attributes for the line type
11310    --
11311    l_entered_amt_idx := 28;
11312    l_accted_amt_idx  := 30;
11313    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11314    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
11315    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
11316    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
11317    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
11318    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
11319    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
11320    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
11321    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
11322    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
11323    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
11324    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
11325    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
11326    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
11327    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
11328    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
11329    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
11330    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11331    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
11332    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
11333    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
11334    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
11335    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
11336    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11337    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
11338    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
11339    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
11340    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
11341    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
11342    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
11343    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
11344    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
11345    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
11346    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
11347    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
11348    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
11349    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
11350    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
11351    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
11352    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
11353    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
11354    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
11355    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
11356    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
11357    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
11358    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
11359    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
11360    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
11361    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
11362    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
11363    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
11364    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
11365    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
11366    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
11367    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
11368    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
11369    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
11370    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
11371    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
11372    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
11373    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
11374    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
11375    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
11376    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
11377    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
11378    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
11379    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
11380    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
11381    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
11382    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
11383    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
11384 
11385    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11386    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11387 
11388    ---------------------------------------------------------------------------------------------------------------
11389    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11390    ---------------------------------------------------------------------------------------------------------------
11391    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11392 
11393    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11394    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11395 
11396    IF xla_accounting_cache_pkg.GetValueChar
11397          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11398          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11399    AND l_bflow_method_code = 'PRIOR_ENTRY'
11400 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11401    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11402          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11403        )
11404    THEN
11405          xla_ae_lines_pkg.BflowUpgEntry
11406            (p_business_method_code    => l_bflow_method_code
11407            ,p_business_class_code     => l_bflow_class_code
11408            ,p_balance_type            => l_balance_type_code);
11409    ELSE
11410       NULL;
11411 XLA_AE_LINES_PKG.business_flow_validation(
11412                                 p_business_method_code     => l_bflow_method_code
11413                                ,p_business_class_code      => l_bflow_class_code
11414                                ,p_inherit_description_flag => l_inherit_desc_flag);
11415    END IF;
11416 
11417    --
11418    -- call analytical criteria
11419    --
11420    -- Inherited Analytical Criteria for business flow method of Prior Entry.
11421    --
11422    -- call description
11423    --
11424    
11425 xla_ae_lines_pkg.SetLineDescription(
11426    p_ae_header_id => l_ae_header_id
11427   ,p_description  => Description_2 (
11428      p_application_id         => p_application_id
11429    , p_ae_header_id           => l_ae_header_id 
11430 , p_source_3 => p_source_3
11431 , p_source_4 => p_source_4
11432 , p_source_5 => p_source_5
11433 , p_source_6 => p_source_6
11434    )
11435 );
11436 
11437 
11438    --
11439    -- call ADRs
11440    -- Bug 4922099
11441    --
11442    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11443         (NVL(l_actual_upg_option, 'N') = 'O') OR
11444         (NVL(l_enc_upg_option, 'N') = 'O')
11445       )
11446    THEN
11447    NULL;
11448    --
11449    --
11450    
11451    --
11452    --
11453    END IF;
11454    --
11455    -- Bug 4922099
11456    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11457           (NVL(l_enc_upg_option, 'N') = 'O')
11458         ) AND
11459         (l_bflow_method_code = 'PRIOR_ENTRY')
11460       )
11461    THEN
11462       IF
11463       --
11464       1 = 1
11465       --
11466       THEN
11467       xla_accounting_err_pkg.build_message
11468                                     (p_appli_s_name            => 'XLA'
11469                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11470                                     ,p_token_1                 => 'LINE_NUMBER'
11471                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11472                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11473                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11474                                                                              l_component_type
11475                                                                             ,l_component_code
11476                                                                             ,l_component_type_code
11477                                                                             ,l_component_appl_id
11478                                                                             ,l_amb_context_code
11479                                                                             ,l_entity_code
11480                                                                             ,l_event_class_code
11481                                                                            )
11482                                     ,p_token_3                 => 'OWNER'
11483                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11484                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11485                                                                           ,p_lookup_code    => l_component_type_code
11486                                                                          )
11487                                     ,p_token_4                 => 'PRODUCT_NAME'
11488                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11489                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11490                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11491                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11492                                     ,p_ae_header_id            =>  NULL
11493                                        );
11494 
11495         IF (C_LEVEL_ERROR>= g_log_level) THEN
11496                  trace
11497                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11498                       ,p_level    => C_LEVEL_ERROR
11499                       ,p_module   => l_log_module);
11500         END IF;
11501       END IF;
11502    END IF;
11503    --
11504    --
11505    ------------------------------------------------------------------------------------------------
11506    -- 4219869 Business Flow
11507    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11508    -- Prior Entry.  Currently, the following code is always generated.
11509    ------------------------------------------------------------------------------------------------
11510    -- No ValidateCurrentLine for business flow method of Prior Entry
11511 
11512    ------------------------------------------------------------------------------------
11513    -- 4219869 Business Flow
11514    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11515    ------------------------------------------------------------------------------------
11516    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11517 
11518    ----------------------------------------------------------------------------------
11519    -- 4219869 Business Flow
11520    -- Update journal entry status -- Need to generate this within IF <condition>
11521    ----------------------------------------------------------------------------------
11522    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11523          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11524          ,p_balance_type_code => l_balance_type_code
11525          );
11526 
11527    -------------------------------------------------------------------------------------------
11528    -- 4262811 - Generate the Accrual Reversal lines
11529    -------------------------------------------------------------------------------------------
11530    BEGIN
11531       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11532                               (g_array_event(p_event_id).array_value_num('header_index'));
11533       IF l_acc_rev_flag IS NULL THEN
11534          l_acc_rev_flag := 'N';
11535       END IF;
11536    EXCEPTION
11537       WHEN OTHERS THEN
11538          l_acc_rev_flag := 'N';
11539    END;
11540    --
11541    IF (l_acc_rev_flag = 'Y') THEN
11542 
11543        -- 4645092  ------------------------------------------------------------------------------
11544        -- To allow MPA report to determine if it should generate report process
11545        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11546        ------------------------------------------------------------------------------------------
11547 
11548        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11549        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11550 
11551        --
11552        -- Update the line information that should be overwritten
11553        --
11554        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11555                                          p_header_num   => 1);
11556        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11557 
11558        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11559 
11560        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11561           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11562        END IF;
11563 
11564       --
11565       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11566       --
11567       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11568           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11569       ELSE
11570           ---------------------------------------------------------------------------------------------------
11571           -- 4262811a Switch Sign
11572           ---------------------------------------------------------------------------------------------------
11573           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11574           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11575                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11576           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11577                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11578           -- 5132302
11579           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11580                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11581 
11582       END IF;
11583 
11584       -- 4955764
11585       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11586       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11587 
11588 
11589       XLA_AE_LINES_PKG.ValidateCurrentLine;
11590       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11591 
11592       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11593                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11594                ,p_balance_type_code => l_balance_type_code);
11595 
11596    END IF;
11597 
11598    -----------------------------------------------------------------------------------------
11599    -- 4262811 Multiperiod Accounting
11600    -----------------------------------------------------------------------------------------
11601      -- No MPA option is assigned.
11602 
11603 
11604 END IF;
11605 END IF;
11606 --
11607 
11608 --
11609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11610    trace
11611       (p_msg      => 'END of AcctLineType_25'
11612       ,p_level    => C_LEVEL_PROCEDURE
11613       ,p_module   => l_log_module);
11614 END IF;
11615 --
11616 EXCEPTION
11617   WHEN xla_exceptions_pkg.application_exception THEN
11618       RAISE;
11619   WHEN OTHERS THEN
11620        xla_exceptions_pkg.raise_message
11621            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_25');
11622 END AcctLineType_25;
11623 --
11624 
11625 ---------------------------------------
11626 --
11627 -- PRIVATE FUNCTION
11628 --         AcctLineType_26
11629 --
11630 ---------------------------------------
11631 PROCEDURE AcctLineType_26 (
11632   p_application_id        IN NUMBER
11633  ,p_event_id              IN NUMBER
11634  ,p_calculate_acctd_flag  IN VARCHAR2
11635  ,p_calculate_g_l_flag    IN VARCHAR2
11636  ,p_actual_flag           IN OUT VARCHAR2
11637  ,p_balance_type_code     OUT VARCHAR2
11638  ,p_gain_or_loss_ref      OUT VARCHAR2
11639  
11640 --Budget Account
11641  , p_source_11            IN NUMBER
11642 --Main Or Backing Code
11643  , p_source_13            IN VARCHAR2
11644 --Accounting Reversal Flag
11645  , p_source_16            IN VARCHAR2
11646 --PO Distribution Identifier
11647  , p_source_29            IN NUMBER
11648 --Entered Amount
11649  , p_source_33            IN NUMBER
11650 --Currency Code
11651  , p_source_34            IN VARCHAR2
11652 --Accounted Amount
11653  , p_source_35            IN NUMBER
11654 --Allocated to Main Document Distribution Type
11655  , p_source_49            IN VARCHAR2
11656 --Allocated to Main Document Distribution Identifier
11657  , p_source_51            IN NUMBER
11658 --Applied To Application Identifier
11659  , p_source_53            IN NUMBER
11660 --Applied To Distribution Link Type
11661  , p_source_54            IN VARCHAR2
11662 --Applied To Entity Code
11663  , p_source_55            IN VARCHAR2
11664 --Applied To Distribution Identifier 1
11665  , p_source_56            IN NUMBER
11666 --Applied To Header Identifier 1
11667  , p_source_57            IN NUMBER
11668 --Distribution Link Type
11669  , p_source_58            IN VARCHAR2
11670 --PO Encumbrance Upgrade Option
11671  , p_source_59            IN VARCHAR2
11672 --JFMIP Reference
11673  , p_source_60            IN VARCHAR2
11674 --PO Upgrade Encumbrance Type Identifier
11675  , p_source_61            IN NUMBER
11676 --PO Release Identifier
11677  , p_source_66            IN NUMBER
11678 )
11679 IS
11680 
11681 l_component_type              VARCHAR2(80);
11682 l_component_code              VARCHAR2(30);
11683 l_component_type_code         VARCHAR2(1);
11684 l_component_appl_id           INTEGER;
11685 l_amb_context_code            VARCHAR2(30);
11686 l_entity_code                 VARCHAR2(30);
11687 l_event_class_code            VARCHAR2(30);
11688 l_ae_header_id                NUMBER;
11689 l_event_type_code             VARCHAR2(30);
11690 l_line_definition_code        VARCHAR2(30);
11691 l_line_definition_owner_code  VARCHAR2(1);
11692 --
11693 -- adr variables
11694 l_segment                     VARCHAR2(30);
11695 l_ccid                        NUMBER;
11696 l_adr_transaction_coa_id      NUMBER;
11697 l_adr_accounting_coa_id       NUMBER;
11698 l_adr_flexfield_segment_code  VARCHAR2(30);
11699 l_adr_flex_value_set_id       NUMBER;
11700 l_adr_value_type_code         VARCHAR2(30);
11701 l_adr_value_combination_id    NUMBER;
11702 l_adr_value_segment_code      VARCHAR2(30);
11703 
11704 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11705 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11706 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11707 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11708 
11709 -- 4262811 Variables ------------------------------------------------------------------------------------------
11710 l_entered_amt_idx             NUMBER;
11711 l_accted_amt_idx              NUMBER;
11712 l_acc_rev_flag                VARCHAR2(1);
11713 l_accrual_line_num            NUMBER;
11714 l_tmp_amt                     NUMBER;
11715 l_acc_rev_natural_side_code   VARCHAR2(1);
11716 
11717 l_num_entries                 NUMBER;
11718 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11719 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11720 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11721 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11722 l_recog_line_1                NUMBER;
11723 l_recog_line_2                NUMBER;
11724 
11725 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11726 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11727 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11728 
11729 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11730 
11731 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11732 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11733 
11734 ---------------------------------------------------------------------------------------------------------------
11735 
11736 
11737 --
11738 -- bulk performance
11739 --
11740 l_balance_type_code           VARCHAR2(1);
11741 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11742 l_log_module                  VARCHAR2(240);
11743 
11744 --
11745 -- Upgrade strategy
11746 --
11747 l_actual_upg_option           VARCHAR2(1);
11748 l_enc_upg_option           VARCHAR2(1);
11749 
11750 --
11751 BEGIN
11752 --
11753 IF g_log_enabled THEN
11754       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
11755 END IF;
11756 --
11757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11758 
11759       trace
11760          (p_msg      => 'BEGIN of AcctLineType_26'
11761          ,p_level    => C_LEVEL_PROCEDURE
11762          ,p_module   => l_log_module);
11763 
11764 END IF;
11765 --
11766 l_component_type             := 'AMB_JLT';
11767 l_component_code             := 'REINST_PO_PA_ENC_FROM_REL_CR';
11768 l_component_type_code        := 'S';
11769 l_component_appl_id          :=  201;
11770 l_amb_context_code           := 'DEFAULT';
11771 l_entity_code                := 'RELEASE';
11772 l_event_class_code           := 'RELEASE';
11773 l_event_type_code            := 'RELEASE_ALL';
11774 l_line_definition_owner_code := 'S';
11775 l_line_definition_code       := 'RELEASE_ENC_ALL';
11776 --
11777 l_balance_type_code          := 'E';
11778 l_segment                     := NULL;
11779 l_ccid                        := NULL;
11780 l_adr_transaction_coa_id      := NULL;
11781 l_adr_accounting_coa_id       := NULL;
11782 l_adr_flexfield_segment_code  := NULL;
11783 l_adr_flex_value_set_id       := NULL;
11784 l_adr_value_type_code         := NULL;
11785 l_adr_value_combination_id    := NULL;
11786 l_adr_value_segment_code      := NULL;
11787 
11788 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
11789 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
11790 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
11791 l_budgetary_control_flag     := 'Y';
11792 
11793 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11794 l_bflow_applied_to_amt       := NULL; -- 5132302
11795 l_entered_amt_idx            := NULL;          -- 4262811
11796 l_accted_amt_idx             := NULL;          -- 4262811
11797 l_acc_rev_flag               := NULL;          -- 4262811
11798 l_accrual_line_num           := NULL;          -- 4262811
11799 l_tmp_amt                    := NULL;          -- 4262811
11800 --
11801  
11802 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11803     l_balance_type_code <> 'B' THEN
11804 IF (NVL(
11805 xla_ae_sources_pkg.GetSystemSourceChar(
11806    p_source_code           => 'XLA_EVENT_TYPE_CODE'
11807  , p_source_type_code      => 'Y'
11808  , p_source_application_id =>  602
11809 ),'
11810 ') =  'RELEASE_CANCELLED' OR 
11811 NVL(
11812 xla_ae_sources_pkg.GetSystemSourceChar(
11813    p_source_code           => 'XLA_EVENT_TYPE_CODE'
11814  , p_source_type_code      => 'Y'
11815  , p_source_application_id =>  602
11816 ),'
11817 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
11818 (NVL(p_source_13,'
11819 ') =  'B_PO' OR 
11820 NVL(p_source_13,'
11821 ') =  'B_PA')
11822  THEN 
11823 
11824    --
11825    XLA_AE_LINES_PKG.SetNewLine;
11826 
11827    p_balance_type_code          := l_balance_type_code;
11828    -- set the flag so later we will know whether the gain loss line needs to be created
11829    
11830    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11831      p_actual_flag :='A';
11832    END IF;
11833 
11834    --
11835    -- bulk performance
11836    --
11837    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11838                                       p_header_num   => 0); -- 4262811
11839    --
11840    -- set accounting line options
11841    --
11842    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11843            p_natural_side_code          => 'C'
11844          , p_gain_or_loss_flag          => 'N'
11845          , p_gl_transfer_mode_code      => 'S'
11846          , p_acct_entry_type_code       => 'E'
11847          , p_switch_side_flag           => 'N'
11848          , p_merge_duplicate_code       => 'N'
11849          );
11850    --
11851    l_acc_rev_natural_side_code := 'D';  -- 4262811
11852    -- 
11853    --
11854    -- set accounting line type info
11855    --
11856    xla_ae_lines_pkg.SetAcctLineType
11857       (p_component_type             => l_component_type
11858       ,p_event_type_code            => l_event_type_code
11859       ,p_line_definition_owner_code => l_line_definition_owner_code
11860       ,p_line_definition_code       => l_line_definition_code
11861       ,p_accounting_line_code       => l_component_code
11862       ,p_accounting_line_type_code  => l_component_type_code
11863       ,p_accounting_line_appl_id    => l_component_appl_id
11864       ,p_amb_context_code           => l_amb_context_code
11865       ,p_entity_code                => l_entity_code
11866       ,p_event_class_code           => l_event_class_code);
11867    --
11868    -- set accounting class
11869    --
11870    xla_ae_lines_pkg.SetAcctClass(
11871            p_accounting_class_code  => 'PURCHASE_ORDER'
11872          , p_ae_header_id           => l_ae_header_id
11873          );
11874 
11875    --
11876    -- set rounding class
11877    --
11878    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11879                       'PURCHASE_ORDER';
11880 
11881    --
11882    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11883    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11884    --
11885    -- bulk performance
11886    --
11887    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11888 
11889    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11890       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11891 
11892    -- 4955764
11893    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11894       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11895 
11896    -- 4458381 Public Sector Enh
11897    
11898    --
11899    -- set accounting attributes for the line type
11900    --
11901    l_entered_amt_idx := 23;
11902    l_accted_amt_idx  := 25;
11903    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11904    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
11905    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
11906    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
11907    l_rec_acct_attrs.array_num_value(2)  := 
11908 xla_ae_sources_pkg.GetSystemSourceNum(
11909    p_source_code           => 'XLA_EVENT_APPL_ID'
11910  , p_source_type_code      => 'Y'
11911  , p_source_application_id =>  602
11912 );
11913    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
11914    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
11915    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
11916    l_rec_acct_attrs.array_char_value(4)  := 
11917 xla_ae_sources_pkg.GetSystemSourceChar(
11918    p_source_code           => 'XLA_ENTITY_CODE'
11919  , p_source_type_code      => 'Y'
11920  , p_source_application_id =>  602
11921 );
11922    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
11923    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
11924    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
11925    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
11926    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
11927    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
11928    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11929    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
11930    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
11931    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
11932    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
11933    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
11934    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11935    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
11936    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
11937    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
11938    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
11939    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
11940    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
11941    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
11942    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
11943    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
11944    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
11945    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
11946    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
11947    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
11948    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
11949    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
11950    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
11951    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
11952    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
11953    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
11954    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
11955    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
11956    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
11957    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
11958    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
11959    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
11960    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
11961    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
11962    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
11963    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
11964    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
11965    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
11966    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
11967    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
11968    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
11969    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
11970    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
11971    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
11972    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
11973    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
11974    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
11975    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
11976 
11977    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11978    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11979 
11980    ---------------------------------------------------------------------------------------------------------------
11981    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11982    ---------------------------------------------------------------------------------------------------------------
11983    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11984 
11985    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11986    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11987 
11988    IF xla_accounting_cache_pkg.GetValueChar
11989          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11990          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11991    AND l_bflow_method_code = 'PRIOR_ENTRY'
11992 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11993    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11994          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11995        )
11996    THEN
11997          xla_ae_lines_pkg.BflowUpgEntry
11998            (p_business_method_code    => l_bflow_method_code
11999            ,p_business_class_code     => l_bflow_class_code
12000            ,p_balance_type            => l_balance_type_code);
12001    ELSE
12002       NULL;
12003 XLA_AE_LINES_PKG.business_flow_validation(
12004                                 p_business_method_code     => l_bflow_method_code
12005                                ,p_business_class_code      => l_bflow_class_code
12006                                ,p_inherit_description_flag => l_inherit_desc_flag);
12007    END IF;
12008 
12009    --
12010    -- call analytical criteria
12011    --
12012    -- Inherited Analytical Criteria for business flow method of Prior Entry.
12013    --
12014    -- call description
12015    --
12016    -- No description or it is inherited.
12017    --
12018    -- call ADRs
12019    -- Bug 4922099
12020    --
12021    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12022         (NVL(l_actual_upg_option, 'N') = 'O') OR
12023         (NVL(l_enc_upg_option, 'N') = 'O')
12024       )
12025    THEN
12026    NULL;
12027    --
12028    --
12029    
12030    --
12031    --
12032    END IF;
12033    --
12034    -- Bug 4922099
12035    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12036           (NVL(l_enc_upg_option, 'N') = 'O')
12037         ) AND
12038         (l_bflow_method_code = 'PRIOR_ENTRY')
12039       )
12040    THEN
12041       IF
12042       --
12043       1 = 1
12044       --
12045       THEN
12046       xla_accounting_err_pkg.build_message
12047                                     (p_appli_s_name            => 'XLA'
12048                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12049                                     ,p_token_1                 => 'LINE_NUMBER'
12050                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12051                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12052                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12053                                                                              l_component_type
12054                                                                             ,l_component_code
12055                                                                             ,l_component_type_code
12056                                                                             ,l_component_appl_id
12057                                                                             ,l_amb_context_code
12058                                                                             ,l_entity_code
12059                                                                             ,l_event_class_code
12060                                                                            )
12061                                     ,p_token_3                 => 'OWNER'
12062                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12063                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12064                                                                           ,p_lookup_code    => l_component_type_code
12065                                                                          )
12066                                     ,p_token_4                 => 'PRODUCT_NAME'
12067                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12068                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12069                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12070                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12071                                     ,p_ae_header_id            =>  NULL
12072                                        );
12073 
12074         IF (C_LEVEL_ERROR>= g_log_level) THEN
12075                  trace
12076                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12077                       ,p_level    => C_LEVEL_ERROR
12078                       ,p_module   => l_log_module);
12079         END IF;
12080       END IF;
12081    END IF;
12082    --
12083    --
12084    ------------------------------------------------------------------------------------------------
12085    -- 4219869 Business Flow
12086    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12087    -- Prior Entry.  Currently, the following code is always generated.
12088    ------------------------------------------------------------------------------------------------
12089    -- No ValidateCurrentLine for business flow method of Prior Entry
12090 
12091    ------------------------------------------------------------------------------------
12092    -- 4219869 Business Flow
12093    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12094    ------------------------------------------------------------------------------------
12095    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12096 
12097    ----------------------------------------------------------------------------------
12098    -- 4219869 Business Flow
12099    -- Update journal entry status -- Need to generate this within IF <condition>
12100    ----------------------------------------------------------------------------------
12101    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12102          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12103          ,p_balance_type_code => l_balance_type_code
12104          );
12105 
12106    -------------------------------------------------------------------------------------------
12107    -- 4262811 - Generate the Accrual Reversal lines
12108    -------------------------------------------------------------------------------------------
12109    BEGIN
12110       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12111                               (g_array_event(p_event_id).array_value_num('header_index'));
12112       IF l_acc_rev_flag IS NULL THEN
12113          l_acc_rev_flag := 'N';
12114       END IF;
12115    EXCEPTION
12116       WHEN OTHERS THEN
12117          l_acc_rev_flag := 'N';
12118    END;
12119    --
12120    IF (l_acc_rev_flag = 'Y') THEN
12121 
12122        -- 4645092  ------------------------------------------------------------------------------
12123        -- To allow MPA report to determine if it should generate report process
12124        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12125        ------------------------------------------------------------------------------------------
12126 
12127        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12128        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12129 
12130        --
12131        -- Update the line information that should be overwritten
12132        --
12133        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12134                                          p_header_num   => 1);
12135        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12136 
12137        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12138 
12139        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12140           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12141        END IF;
12142 
12143       --
12144       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12145       --
12146       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12147           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12148       ELSE
12149           ---------------------------------------------------------------------------------------------------
12150           -- 4262811a Switch Sign
12151           ---------------------------------------------------------------------------------------------------
12152           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12153           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12154                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12155           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12156                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12157           -- 5132302
12158           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12159                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12160 
12161       END IF;
12162 
12163       -- 4955764
12164       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12165       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12166 
12167 
12168       XLA_AE_LINES_PKG.ValidateCurrentLine;
12169       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12170 
12171       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12172                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12173                ,p_balance_type_code => l_balance_type_code);
12174 
12175    END IF;
12176 
12177    -----------------------------------------------------------------------------------------
12178    -- 4262811 Multiperiod Accounting
12179    -----------------------------------------------------------------------------------------
12180      -- No MPA option is assigned.
12181 
12182 
12183 END IF;
12184 END IF;
12185 --
12186 
12187 --
12188 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12189    trace
12190       (p_msg      => 'END of AcctLineType_26'
12191       ,p_level    => C_LEVEL_PROCEDURE
12192       ,p_module   => l_log_module);
12193 END IF;
12194 --
12195 EXCEPTION
12196   WHEN xla_exceptions_pkg.application_exception THEN
12197       RAISE;
12198   WHEN OTHERS THEN
12199        xla_exceptions_pkg.raise_message
12200            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_26');
12201 END AcctLineType_26;
12202 --
12203 
12204 ---------------------------------------
12205 --
12206 -- PRIVATE FUNCTION
12207 --         AcctLineType_27
12208 --
12209 ---------------------------------------
12210 PROCEDURE AcctLineType_27 (
12211   p_application_id        IN NUMBER
12212  ,p_event_id              IN NUMBER
12213  ,p_calculate_acctd_flag  IN VARCHAR2
12214  ,p_calculate_g_l_flag    IN VARCHAR2
12215  ,p_actual_flag           IN OUT VARCHAR2
12216  ,p_balance_type_code     OUT VARCHAR2
12217  ,p_gain_or_loss_ref      OUT VARCHAR2
12218  
12219 --Budget Account
12220  , p_source_11            IN NUMBER
12221 --Main Or Backing Code
12222  , p_source_13            IN VARCHAR2
12223 --Accounting Reversal Flag
12224  , p_source_16            IN VARCHAR2
12225 --PO Distribution Identifier
12226  , p_source_29            IN NUMBER
12227 --Entered Amount
12228  , p_source_33            IN NUMBER
12229 --Currency Code
12230  , p_source_34            IN VARCHAR2
12231 --Accounted Amount
12232  , p_source_35            IN NUMBER
12233 --Allocated to Main Document Distribution Type
12234  , p_source_49            IN VARCHAR2
12235 --Allocated to Main Document Distribution Identifier
12236  , p_source_51            IN NUMBER
12237 --Applied To Application Identifier
12238  , p_source_53            IN NUMBER
12239 --Applied To Distribution Link Type
12240  , p_source_54            IN VARCHAR2
12241 --Applied To Entity Code
12242  , p_source_55            IN VARCHAR2
12243 --Applied To Distribution Identifier 1
12244  , p_source_56            IN NUMBER
12245 --Applied To Header Identifier 1
12246  , p_source_57            IN NUMBER
12247 --Distribution Link Type
12248  , p_source_58            IN VARCHAR2
12249 --PO Encumbrance Upgrade Option
12250  , p_source_59            IN VARCHAR2
12251 --JFMIP Reference
12252  , p_source_60            IN VARCHAR2
12253 --PO Upgrade Encumbrance Type Identifier
12254  , p_source_61            IN NUMBER
12255 --PO Release Identifier
12256  , p_source_66            IN NUMBER
12257 )
12258 IS
12259 
12260 l_component_type              VARCHAR2(80);
12261 l_component_code              VARCHAR2(30);
12262 l_component_type_code         VARCHAR2(1);
12263 l_component_appl_id           INTEGER;
12264 l_amb_context_code            VARCHAR2(30);
12265 l_entity_code                 VARCHAR2(30);
12266 l_event_class_code            VARCHAR2(30);
12267 l_ae_header_id                NUMBER;
12268 l_event_type_code             VARCHAR2(30);
12269 l_line_definition_code        VARCHAR2(30);
12270 l_line_definition_owner_code  VARCHAR2(1);
12271 --
12272 -- adr variables
12273 l_segment                     VARCHAR2(30);
12274 l_ccid                        NUMBER;
12275 l_adr_transaction_coa_id      NUMBER;
12276 l_adr_accounting_coa_id       NUMBER;
12277 l_adr_flexfield_segment_code  VARCHAR2(30);
12278 l_adr_flex_value_set_id       NUMBER;
12279 l_adr_value_type_code         VARCHAR2(30);
12280 l_adr_value_combination_id    NUMBER;
12281 l_adr_value_segment_code      VARCHAR2(30);
12282 
12283 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12284 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12285 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12286 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12287 
12288 -- 4262811 Variables ------------------------------------------------------------------------------------------
12289 l_entered_amt_idx             NUMBER;
12290 l_accted_amt_idx              NUMBER;
12291 l_acc_rev_flag                VARCHAR2(1);
12292 l_accrual_line_num            NUMBER;
12293 l_tmp_amt                     NUMBER;
12294 l_acc_rev_natural_side_code   VARCHAR2(1);
12295 
12296 l_num_entries                 NUMBER;
12297 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12298 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12299 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12300 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12301 l_recog_line_1                NUMBER;
12302 l_recog_line_2                NUMBER;
12303 
12304 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12305 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12306 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12307 
12308 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12309 
12310 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12311 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12312 
12313 ---------------------------------------------------------------------------------------------------------------
12314 
12315 
12316 --
12317 -- bulk performance
12318 --
12319 l_balance_type_code           VARCHAR2(1);
12320 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12321 l_log_module                  VARCHAR2(240);
12322 
12323 --
12324 -- Upgrade strategy
12325 --
12326 l_actual_upg_option           VARCHAR2(1);
12327 l_enc_upg_option           VARCHAR2(1);
12328 
12329 --
12330 BEGIN
12331 --
12332 IF g_log_enabled THEN
12333       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
12334 END IF;
12335 --
12336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12337 
12338       trace
12339          (p_msg      => 'BEGIN of AcctLineType_27'
12340          ,p_level    => C_LEVEL_PROCEDURE
12341          ,p_module   => l_log_module);
12342 
12343 END IF;
12344 --
12345 l_component_type             := 'AMB_JLT';
12346 l_component_code             := 'REINST_PO_PA_ENC_FROM_REL_DR';
12347 l_component_type_code        := 'S';
12348 l_component_appl_id          :=  201;
12349 l_amb_context_code           := 'DEFAULT';
12350 l_entity_code                := 'RELEASE';
12351 l_event_class_code           := 'RELEASE';
12352 l_event_type_code            := 'RELEASE_ALL';
12353 l_line_definition_owner_code := 'S';
12354 l_line_definition_code       := 'RELEASE_ENC_ALL';
12355 --
12356 l_balance_type_code          := 'E';
12357 l_segment                     := NULL;
12358 l_ccid                        := NULL;
12359 l_adr_transaction_coa_id      := NULL;
12360 l_adr_accounting_coa_id       := NULL;
12361 l_adr_flexfield_segment_code  := NULL;
12362 l_adr_flex_value_set_id       := NULL;
12363 l_adr_value_type_code         := NULL;
12364 l_adr_value_combination_id    := NULL;
12365 l_adr_value_segment_code      := NULL;
12366 
12367 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
12368 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
12369 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
12370 l_budgetary_control_flag     := 'Y';
12371 
12372 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12373 l_bflow_applied_to_amt       := NULL; -- 5132302
12374 l_entered_amt_idx            := NULL;          -- 4262811
12375 l_accted_amt_idx             := NULL;          -- 4262811
12376 l_acc_rev_flag               := NULL;          -- 4262811
12377 l_accrual_line_num           := NULL;          -- 4262811
12378 l_tmp_amt                    := NULL;          -- 4262811
12379 --
12380  
12381 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12382     l_balance_type_code <> 'B' THEN
12383 IF (NVL(
12384 xla_ae_sources_pkg.GetSystemSourceChar(
12385    p_source_code           => 'XLA_EVENT_TYPE_CODE'
12386  , p_source_type_code      => 'Y'
12387  , p_source_application_id =>  602
12388 ),'
12389 ') =  'RELEASE_UNRESERVED' OR 
12390 NVL(
12391 xla_ae_sources_pkg.GetSystemSourceChar(
12392    p_source_code           => 'XLA_EVENT_TYPE_CODE'
12393  , p_source_type_code      => 'Y'
12394  , p_source_application_id =>  602
12395 ),'
12396 ') =  'RELEASE_REJECTED' OR 
12397 NVL(
12398 xla_ae_sources_pkg.GetSystemSourceChar(
12399    p_source_code           => 'XLA_EVENT_TYPE_CODE'
12400  , p_source_type_code      => 'Y'
12401  , p_source_application_id =>  602
12402 ),'
12403 ') =  'RELEASE_INV_CANCELLED') AND 
12404 (NVL(p_source_13,'
12405 ') =  'B_PO' OR 
12406 NVL(p_source_13,'
12407 ') =  'B_PA')
12408  THEN 
12409 
12410    --
12411    XLA_AE_LINES_PKG.SetNewLine;
12412 
12413    p_balance_type_code          := l_balance_type_code;
12414    -- set the flag so later we will know whether the gain loss line needs to be created
12415    
12416    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12417      p_actual_flag :='A';
12418    END IF;
12419 
12420    --
12421    -- bulk performance
12422    --
12423    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12424                                       p_header_num   => 0); -- 4262811
12425    --
12426    -- set accounting line options
12427    --
12428    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12429            p_natural_side_code          => 'D'
12430          , p_gain_or_loss_flag          => 'N'
12431          , p_gl_transfer_mode_code      => 'S'
12432          , p_acct_entry_type_code       => 'E'
12433          , p_switch_side_flag           => 'N'
12434          , p_merge_duplicate_code       => 'N'
12435          );
12436    --
12437    l_acc_rev_natural_side_code := 'C';  -- 4262811
12438    -- 
12439    --
12440    -- set accounting line type info
12441    --
12442    xla_ae_lines_pkg.SetAcctLineType
12443       (p_component_type             => l_component_type
12444       ,p_event_type_code            => l_event_type_code
12445       ,p_line_definition_owner_code => l_line_definition_owner_code
12446       ,p_line_definition_code       => l_line_definition_code
12447       ,p_accounting_line_code       => l_component_code
12448       ,p_accounting_line_type_code  => l_component_type_code
12449       ,p_accounting_line_appl_id    => l_component_appl_id
12450       ,p_amb_context_code           => l_amb_context_code
12451       ,p_entity_code                => l_entity_code
12452       ,p_event_class_code           => l_event_class_code);
12453    --
12454    -- set accounting class
12455    --
12456    xla_ae_lines_pkg.SetAcctClass(
12457            p_accounting_class_code  => 'PURCHASE_ORDER'
12458          , p_ae_header_id           => l_ae_header_id
12459          );
12460 
12461    --
12462    -- set rounding class
12463    --
12464    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12465                       'PURCHASE_ORDER';
12466 
12467    --
12468    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12469    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12470    --
12471    -- bulk performance
12472    --
12473    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12474 
12475    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12476       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12477 
12478    -- 4955764
12479    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12481 
12482    -- 4458381 Public Sector Enh
12483    
12484    --
12485    -- set accounting attributes for the line type
12486    --
12487    l_entered_amt_idx := 23;
12488    l_accted_amt_idx  := 25;
12489    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12490    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
12491    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
12492    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
12493    l_rec_acct_attrs.array_num_value(2)  := 
12494 xla_ae_sources_pkg.GetSystemSourceNum(
12495    p_source_code           => 'XLA_EVENT_APPL_ID'
12496  , p_source_type_code      => 'Y'
12497  , p_source_application_id =>  602
12498 );
12499    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
12500    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
12501    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
12502    l_rec_acct_attrs.array_char_value(4)  := 
12503 xla_ae_sources_pkg.GetSystemSourceChar(
12504    p_source_code           => 'XLA_ENTITY_CODE'
12505  , p_source_type_code      => 'Y'
12506  , p_source_application_id =>  602
12507 );
12508    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
12509    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
12510    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
12511    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
12512    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
12513    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
12514    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12515    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
12516    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
12517    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
12518    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
12519    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
12520    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12521    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
12522    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
12523    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
12524    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
12525    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
12526    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
12527    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
12528    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
12529    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
12530    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
12531    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
12532    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
12533    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
12534    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
12535    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
12536    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
12537    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
12538    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
12539    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
12540    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
12541    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
12542    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
12543    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
12544    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
12545    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
12546    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
12547    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
12548    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
12549    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
12550    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
12551    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
12552    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
12553    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
12554    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
12555    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
12556    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
12557    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
12558    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
12559    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
12560    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
12561    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
12562 
12563    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12564    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12565 
12566    ---------------------------------------------------------------------------------------------------------------
12567    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12568    ---------------------------------------------------------------------------------------------------------------
12569    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12570 
12571    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12572    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12573 
12574    IF xla_accounting_cache_pkg.GetValueChar
12575          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12576          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12577    AND l_bflow_method_code = 'PRIOR_ENTRY'
12578 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12579    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12580          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12581        )
12582    THEN
12583          xla_ae_lines_pkg.BflowUpgEntry
12584            (p_business_method_code    => l_bflow_method_code
12585            ,p_business_class_code     => l_bflow_class_code
12586            ,p_balance_type            => l_balance_type_code);
12587    ELSE
12588       NULL;
12589 XLA_AE_LINES_PKG.business_flow_validation(
12590                                 p_business_method_code     => l_bflow_method_code
12591                                ,p_business_class_code      => l_bflow_class_code
12592                                ,p_inherit_description_flag => l_inherit_desc_flag);
12593    END IF;
12594 
12595    --
12596    -- call analytical criteria
12597    --
12598    -- Inherited Analytical Criteria for business flow method of Prior Entry.
12599    --
12600    -- call description
12601    --
12602    -- No description or it is inherited.
12603    --
12604    -- call ADRs
12605    -- Bug 4922099
12606    --
12607    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12608         (NVL(l_actual_upg_option, 'N') = 'O') OR
12609         (NVL(l_enc_upg_option, 'N') = 'O')
12610       )
12611    THEN
12612    NULL;
12613    --
12614    --
12615    
12616    --
12617    --
12618    END IF;
12619    --
12620    -- Bug 4922099
12621    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12622           (NVL(l_enc_upg_option, 'N') = 'O')
12623         ) AND
12624         (l_bflow_method_code = 'PRIOR_ENTRY')
12625       )
12626    THEN
12627       IF
12628       --
12629       1 = 1
12630       --
12631       THEN
12632       xla_accounting_err_pkg.build_message
12633                                     (p_appli_s_name            => 'XLA'
12634                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12635                                     ,p_token_1                 => 'LINE_NUMBER'
12636                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12637                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12638                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12639                                                                              l_component_type
12640                                                                             ,l_component_code
12641                                                                             ,l_component_type_code
12642                                                                             ,l_component_appl_id
12643                                                                             ,l_amb_context_code
12644                                                                             ,l_entity_code
12645                                                                             ,l_event_class_code
12646                                                                            )
12647                                     ,p_token_3                 => 'OWNER'
12648                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12649                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12650                                                                           ,p_lookup_code    => l_component_type_code
12651                                                                          )
12652                                     ,p_token_4                 => 'PRODUCT_NAME'
12653                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12654                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12655                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12656                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12657                                     ,p_ae_header_id            =>  NULL
12658                                        );
12659 
12660         IF (C_LEVEL_ERROR>= g_log_level) THEN
12661                  trace
12662                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12663                       ,p_level    => C_LEVEL_ERROR
12664                       ,p_module   => l_log_module);
12665         END IF;
12666       END IF;
12667    END IF;
12668    --
12669    --
12670    ------------------------------------------------------------------------------------------------
12671    -- 4219869 Business Flow
12672    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12673    -- Prior Entry.  Currently, the following code is always generated.
12674    ------------------------------------------------------------------------------------------------
12675    -- No ValidateCurrentLine for business flow method of Prior Entry
12676 
12677    ------------------------------------------------------------------------------------
12678    -- 4219869 Business Flow
12679    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12680    ------------------------------------------------------------------------------------
12681    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12682 
12683    ----------------------------------------------------------------------------------
12684    -- 4219869 Business Flow
12685    -- Update journal entry status -- Need to generate this within IF <condition>
12686    ----------------------------------------------------------------------------------
12687    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12688          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12689          ,p_balance_type_code => l_balance_type_code
12690          );
12691 
12692    -------------------------------------------------------------------------------------------
12693    -- 4262811 - Generate the Accrual Reversal lines
12694    -------------------------------------------------------------------------------------------
12695    BEGIN
12696       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12697                               (g_array_event(p_event_id).array_value_num('header_index'));
12698       IF l_acc_rev_flag IS NULL THEN
12699          l_acc_rev_flag := 'N';
12700       END IF;
12701    EXCEPTION
12702       WHEN OTHERS THEN
12703          l_acc_rev_flag := 'N';
12704    END;
12705    --
12706    IF (l_acc_rev_flag = 'Y') THEN
12707 
12708        -- 4645092  ------------------------------------------------------------------------------
12709        -- To allow MPA report to determine if it should generate report process
12710        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12711        ------------------------------------------------------------------------------------------
12712 
12713        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12714        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12715 
12716        --
12717        -- Update the line information that should be overwritten
12718        --
12719        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12720                                          p_header_num   => 1);
12721        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12722 
12723        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12724 
12725        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12726           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12727        END IF;
12728 
12729       --
12730       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12731       --
12732       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12733           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12734       ELSE
12735           ---------------------------------------------------------------------------------------------------
12736           -- 4262811a Switch Sign
12737           ---------------------------------------------------------------------------------------------------
12738           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12739           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12740                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12741           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12742                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12743           -- 5132302
12744           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12745                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12746 
12747       END IF;
12748 
12749       -- 4955764
12750       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12751       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12752 
12753 
12754       XLA_AE_LINES_PKG.ValidateCurrentLine;
12755       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12756 
12757       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12758                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12759                ,p_balance_type_code => l_balance_type_code);
12760 
12761    END IF;
12762 
12763    -----------------------------------------------------------------------------------------
12764    -- 4262811 Multiperiod Accounting
12765    -----------------------------------------------------------------------------------------
12766      -- No MPA option is assigned.
12767 
12768 
12769 END IF;
12770 END IF;
12771 --
12772 
12773 --
12774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12775    trace
12776       (p_msg      => 'END of AcctLineType_27'
12777       ,p_level    => C_LEVEL_PROCEDURE
12778       ,p_module   => l_log_module);
12779 END IF;
12780 --
12781 EXCEPTION
12782   WHEN xla_exceptions_pkg.application_exception THEN
12783       RAISE;
12784   WHEN OTHERS THEN
12785        xla_exceptions_pkg.raise_message
12786            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_27');
12787 END AcctLineType_27;
12788 --
12789 
12790 ---------------------------------------
12791 --
12792 -- PRIVATE FUNCTION
12793 --         AcctLineType_28
12794 --
12795 ---------------------------------------
12796 PROCEDURE AcctLineType_28 (
12797   p_application_id        IN NUMBER
12798  ,p_event_id              IN NUMBER
12799  ,p_calculate_acctd_flag  IN VARCHAR2
12800  ,p_calculate_g_l_flag    IN VARCHAR2
12801  ,p_actual_flag           IN OUT VARCHAR2
12802  ,p_balance_type_code     OUT VARCHAR2
12803  ,p_gain_or_loss_ref      OUT VARCHAR2
12804  
12805 --Project Name
12806  , p_source_3            IN VARCHAR2
12807 --Task Name
12808  , p_source_4            IN VARCHAR2
12809 --Project Expenditure Organization Identifier
12810  , p_source_5            IN NUMBER
12811 --Expenditure Type
12812  , p_source_6            IN VARCHAR2
12813 --Document Type
12814  , p_source_9            IN VARCHAR2
12815 --Budget Account
12816  , p_source_11            IN NUMBER
12817 --Main Or Backing Code
12818  , p_source_13            IN VARCHAR2
12819 --Burden Record Identifier
12820  , p_source_14            IN VARCHAR2
12821  , p_source_14_meaning    IN VARCHAR2
12822 --Burden Amount Display Method
12823  , p_source_15            IN VARCHAR2
12824 --Accounting Reversal Flag
12825  , p_source_16            IN VARCHAR2
12826 --Allocated to Application Identifier
12827  , p_source_17            IN NUMBER
12828 --Allocated to Distribution Type
12829  , p_source_18            IN VARCHAR2
12830 --Allocated to Entity Code
12831  , p_source_19            IN VARCHAR2
12832 --Allocated to First Distribution Identifier
12833  , p_source_20            IN NUMBER
12834 --Allocated to First System Transaction Identifier
12835  , p_source_21            IN NUMBER
12836 --PO Distribution Identifier
12837  , p_source_29            IN NUMBER
12838 --Line Type Name
12839  , p_source_30            IN VARCHAR2
12840 --Encumbrance Upgrade Credit Accounting Class
12841  , p_source_31            IN VARCHAR2
12842 --Encumbrance Upgrade Credit Account
12843  , p_source_32            IN NUMBER
12844 --Entered Amount
12845  , p_source_33            IN NUMBER
12846 --Currency Code
12847  , p_source_34            IN VARCHAR2
12848 --Accounted Amount
12849  , p_source_35            IN NUMBER
12850 --Encumbrance Upgrade Debit Accounting Class
12851  , p_source_36            IN VARCHAR2
12852 --Encumbrance Upgrade Debit Account
12853  , p_source_37            IN NUMBER
12854 --Use Encumbrances Upgrade Attributes Flag
12855  , p_source_38            IN VARCHAR2
12856 --Encumbrance Upgrade Credit Encumbrance Type
12857  , p_source_39            IN NUMBER
12858 --Encumbrance Upgrade Debit Encumbrance Type
12859  , p_source_40            IN NUMBER
12860 --Requisition Burden Applied to Application Identifier
12861  , p_source_41            IN NUMBER
12862 --Requisition Distribution Type
12863  , p_source_42            IN VARCHAR2
12864 --Requisition Burden Applied to Entity Code
12865  , p_source_43            IN VARCHAR2
12866 --Requisition Burden Applied to First Distribution Identifier
12867  , p_source_44            IN NUMBER
12868 --Requisition Burden Applied to First System Transaction Identifier
12869  , p_source_45            IN NUMBER
12870 --Requisition Burden Applied to Second Distribution Identifier
12871  , p_source_46            IN VARCHAR2
12872 )
12873 IS
12874 
12875 l_component_type              VARCHAR2(80);
12876 l_component_code              VARCHAR2(30);
12877 l_component_type_code         VARCHAR2(1);
12878 l_component_appl_id           INTEGER;
12879 l_amb_context_code            VARCHAR2(30);
12880 l_entity_code                 VARCHAR2(30);
12881 l_event_class_code            VARCHAR2(30);
12882 l_ae_header_id                NUMBER;
12883 l_event_type_code             VARCHAR2(30);
12884 l_line_definition_code        VARCHAR2(30);
12885 l_line_definition_owner_code  VARCHAR2(1);
12886 --
12887 -- adr variables
12888 l_segment                     VARCHAR2(30);
12889 l_ccid                        NUMBER;
12890 l_adr_transaction_coa_id      NUMBER;
12891 l_adr_accounting_coa_id       NUMBER;
12892 l_adr_flexfield_segment_code  VARCHAR2(30);
12893 l_adr_flex_value_set_id       NUMBER;
12894 l_adr_value_type_code         VARCHAR2(30);
12895 l_adr_value_combination_id    NUMBER;
12896 l_adr_value_segment_code      VARCHAR2(30);
12897 
12898 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12899 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12900 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12901 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12902 
12903 -- 4262811 Variables ------------------------------------------------------------------------------------------
12904 l_entered_amt_idx             NUMBER;
12905 l_accted_amt_idx              NUMBER;
12906 l_acc_rev_flag                VARCHAR2(1);
12907 l_accrual_line_num            NUMBER;
12908 l_tmp_amt                     NUMBER;
12909 l_acc_rev_natural_side_code   VARCHAR2(1);
12910 
12911 l_num_entries                 NUMBER;
12912 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12913 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12914 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12915 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12916 l_recog_line_1                NUMBER;
12917 l_recog_line_2                NUMBER;
12918 
12919 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12920 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12921 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12922 
12923 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12924 
12925 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12926 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12927 
12928 ---------------------------------------------------------------------------------------------------------------
12929 
12930 
12931 --
12932 -- bulk performance
12933 --
12934 l_balance_type_code           VARCHAR2(1);
12935 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12936 l_log_module                  VARCHAR2(240);
12937 
12938 --
12939 -- Upgrade strategy
12940 --
12941 l_actual_upg_option           VARCHAR2(1);
12942 l_enc_upg_option           VARCHAR2(1);
12943 
12944 --
12945 BEGIN
12946 --
12947 IF g_log_enabled THEN
12948       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
12949 END IF;
12950 --
12951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12952 
12953       trace
12954          (p_msg      => 'BEGIN of AcctLineType_28'
12955          ,p_level    => C_LEVEL_PROCEDURE
12956          ,p_module   => l_log_module);
12957 
12958 END IF;
12959 --
12960 l_component_type             := 'AMB_JLT';
12961 l_component_code             := 'REINST_REQ_BURDEND_ENCFORPO_CR';
12962 l_component_type_code        := 'S';
12963 l_component_appl_id          :=  201;
12964 l_amb_context_code           := 'DEFAULT';
12965 l_entity_code                := 'PURCHASE_ORDER';
12966 l_event_class_code           := 'PO_BURDEN';
12967 l_event_type_code            := 'PO_BURDEN_ALL';
12968 l_line_definition_owner_code := 'S';
12969 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
12970 --
12971 l_balance_type_code          := 'E';
12972 l_segment                     := NULL;
12973 l_ccid                        := NULL;
12974 l_adr_transaction_coa_id      := NULL;
12975 l_adr_accounting_coa_id       := NULL;
12976 l_adr_flexfield_segment_code  := NULL;
12977 l_adr_flex_value_set_id       := NULL;
12978 l_adr_value_type_code         := NULL;
12979 l_adr_value_combination_id    := NULL;
12980 l_adr_value_segment_code      := NULL;
12981 
12982 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12983 l_bflow_class_code           := '';    -- 4219869 Business Flow
12984 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12985 l_budgetary_control_flag     := 'Y';
12986 
12987 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12988 l_bflow_applied_to_amt       := NULL; -- 5132302
12989 l_entered_amt_idx            := NULL;          -- 4262811
12990 l_accted_amt_idx             := NULL;          -- 4262811
12991 l_acc_rev_flag               := NULL;          -- 4262811
12992 l_accrual_line_num           := NULL;          -- 4262811
12993 l_tmp_amt                    := NULL;          -- 4262811
12994 --
12995  
12996 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12997     l_balance_type_code <> 'B' THEN
12998 IF (NVL(
12999 xla_ae_sources_pkg.GetSystemSourceChar(
13000    p_source_code           => 'XLA_EVENT_TYPE_CODE'
13001  , p_source_type_code      => 'Y'
13002  , p_source_application_id =>  602
13003 ),'
13004 ') =  'PO_BURDEN_CANCELLED' OR 
13005 NVL(
13006 xla_ae_sources_pkg.GetSystemSourceChar(
13007    p_source_code           => 'XLA_EVENT_TYPE_CODE'
13008  , p_source_type_code      => 'Y'
13009  , p_source_application_id =>  602
13010 ),'
13011 ') =  'PO_BURDEN_CR_MEMO_CANCELLED') AND 
13012 NVL(p_source_13,'
13013 ') =  'B_REQ' AND 
13014 (NVL(p_source_14,'
13015 ') =  'N' OR 
13016 NVL(p_source_14,'
13017 ') =  'O') AND 
13018 NVL(p_source_9,'
13019 ') =  'REQ' AND 
13020 NVL(p_source_15,'
13021 ') =  'S'
13022  THEN 
13023 
13024    --
13025    XLA_AE_LINES_PKG.SetNewLine;
13026 
13027    p_balance_type_code          := l_balance_type_code;
13028    -- set the flag so later we will know whether the gain loss line needs to be created
13029    
13030    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13031      p_actual_flag :='A';
13032    END IF;
13033 
13034    --
13035    -- bulk performance
13036    --
13037    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13038                                       p_header_num   => 0); -- 4262811
13039    --
13040    -- set accounting line options
13041    --
13042    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13043            p_natural_side_code          => 'C'
13044          , p_gain_or_loss_flag          => 'N'
13045          , p_gl_transfer_mode_code      => 'S'
13046          , p_acct_entry_type_code       => 'E'
13047          , p_switch_side_flag           => 'N'
13048          , p_merge_duplicate_code       => 'N'
13049          );
13050    --
13051    l_acc_rev_natural_side_code := 'D';  -- 4262811
13052    -- 
13053    --
13054    -- set accounting line type info
13055    --
13056    xla_ae_lines_pkg.SetAcctLineType
13057       (p_component_type             => l_component_type
13058       ,p_event_type_code            => l_event_type_code
13059       ,p_line_definition_owner_code => l_line_definition_owner_code
13060       ,p_line_definition_code       => l_line_definition_code
13061       ,p_accounting_line_code       => l_component_code
13062       ,p_accounting_line_type_code  => l_component_type_code
13063       ,p_accounting_line_appl_id    => l_component_appl_id
13064       ,p_amb_context_code           => l_amb_context_code
13065       ,p_entity_code                => l_entity_code
13066       ,p_event_class_code           => l_event_class_code);
13067    --
13068    -- set accounting class
13069    --
13070    xla_ae_lines_pkg.SetAcctClass(
13071            p_accounting_class_code  => 'REQ_PA_BURDENED'
13072          , p_ae_header_id           => l_ae_header_id
13073          );
13074 
13075    --
13076    -- set rounding class
13077    --
13078    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13079                       'REQ_PA_BURDENED';
13080 
13081    --
13082    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13083    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13084    --
13085    -- bulk performance
13086    --
13087    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13088 
13089    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13090       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13091 
13092    -- 4955764
13093    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13094       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13095 
13096    -- 4458381 Public Sector Enh
13097       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
13098    --
13099    -- set accounting attributes for the line type
13100    --
13101    l_entered_amt_idx := 27;
13102    l_accted_amt_idx  := 29;
13103    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13104    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
13105    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
13106    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
13107    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
13108    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
13109    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
13110    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
13111    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
13112    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
13113    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
13114    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
13115    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
13116    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
13117    l_rec_acct_attrs.array_num_value(7)  := p_source_41;
13118    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13119    l_rec_acct_attrs.array_char_value(8)  := p_source_42;
13120    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
13121    l_rec_acct_attrs.array_char_value(9)  := p_source_43;
13122    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
13123    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_44);
13124    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13125    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_45);
13126    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
13127    l_rec_acct_attrs.array_char_value(12)  := p_source_46;
13128    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
13129    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
13130    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
13131    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
13132    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
13133    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
13134    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
13135    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
13136    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
13137    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
13138    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
13139    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
13140    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
13141    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
13142    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
13143    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
13144    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
13145    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
13146    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
13147    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
13148    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
13149    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
13150    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
13151    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
13152    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
13153    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
13154    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
13155    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
13156    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
13157    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
13158    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
13159    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
13160    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
13161    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
13162    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
13163    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
13164    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
13165    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
13166    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
13167    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
13168    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
13169    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
13170    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
13171    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
13172 
13173    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13174    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13175 
13176    ---------------------------------------------------------------------------------------------------------------
13177    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13178    ---------------------------------------------------------------------------------------------------------------
13179    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13180 
13181    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13182    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13183 
13184    IF xla_accounting_cache_pkg.GetValueChar
13185          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13186          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13187    AND l_bflow_method_code = 'PRIOR_ENTRY'
13188 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13189    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13190          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13191        )
13192    THEN
13193          xla_ae_lines_pkg.BflowUpgEntry
13194            (p_business_method_code    => l_bflow_method_code
13195            ,p_business_class_code     => l_bflow_class_code
13196            ,p_balance_type            => l_balance_type_code);
13197    ELSE
13198       NULL;
13199 -- No business flow processing for business flow method of NONE.
13200    END IF;
13201 
13202    --
13203    -- call analytical criteria
13204    --
13205    
13206    --
13207    -- call description
13208    --
13209    
13210 xla_ae_lines_pkg.SetLineDescription(
13211    p_ae_header_id => l_ae_header_id
13212   ,p_description  => Description_2 (
13213      p_application_id         => p_application_id
13214    , p_ae_header_id           => l_ae_header_id 
13215 , p_source_3 => p_source_3
13216 , p_source_4 => p_source_4
13217 , p_source_5 => p_source_5
13218 , p_source_6 => p_source_6
13219    )
13220 );
13221 
13222 
13223    --
13224    -- call ADRs
13225    -- Bug 4922099
13226    --
13227    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13228         (NVL(l_actual_upg_option, 'N') = 'O') OR
13229         (NVL(l_enc_upg_option, 'N') = 'O')
13230       )
13231    THEN
13232    NULL;
13233    --
13234    --
13235    
13236   l_ccid := AcctDerRule_6(
13237            p_application_id           => p_application_id
13238          , p_ae_header_id             => l_ae_header_id 
13239 , p_source_11 => p_source_11
13240          , x_transaction_coa_id       => l_adr_transaction_coa_id
13241          , x_accounting_coa_id        => l_adr_accounting_coa_id
13242          , x_value_type_code          => l_adr_value_type_code
13243          , p_side                     => 'NA'
13244    );
13245 
13246    xla_ae_lines_pkg.set_ccid(
13247     p_code_combination_id          => l_ccid
13248   , p_value_type_code              => l_adr_value_type_code
13249   , p_transaction_coa_id           => l_adr_transaction_coa_id
13250   , p_accounting_coa_id            => l_adr_accounting_coa_id
13251   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
13252   , p_adr_type_code                => 'S'
13253   , p_component_type               => l_component_type
13254   , p_component_code               => l_component_code
13255   , p_component_type_code          => l_component_type_code
13256   , p_component_appl_id            => l_component_appl_id
13257   , p_amb_context_code             => l_amb_context_code
13258   , p_side                         => 'NA'
13259   );
13260 
13261 
13262    --
13263    --
13264    END IF;
13265    --
13266    -- Bug 4922099
13267    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13268           (NVL(l_enc_upg_option, 'N') = 'O')
13269         ) AND
13270         (l_bflow_method_code = 'PRIOR_ENTRY')
13271       )
13272    THEN
13273       IF
13274       --
13275       1 = 2
13276       --
13277       THEN
13278       xla_accounting_err_pkg.build_message
13279                                     (p_appli_s_name            => 'XLA'
13280                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13281                                     ,p_token_1                 => 'LINE_NUMBER'
13282                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13283                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13284                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13285                                                                              l_component_type
13286                                                                             ,l_component_code
13287                                                                             ,l_component_type_code
13288                                                                             ,l_component_appl_id
13289                                                                             ,l_amb_context_code
13290                                                                             ,l_entity_code
13291                                                                             ,l_event_class_code
13292                                                                            )
13293                                     ,p_token_3                 => 'OWNER'
13294                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13295                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13296                                                                           ,p_lookup_code    => l_component_type_code
13297                                                                          )
13298                                     ,p_token_4                 => 'PRODUCT_NAME'
13299                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13300                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13301                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13302                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13303                                     ,p_ae_header_id            =>  NULL
13304                                        );
13305 
13306         IF (C_LEVEL_ERROR>= g_log_level) THEN
13307                  trace
13308                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13309                       ,p_level    => C_LEVEL_ERROR
13310                       ,p_module   => l_log_module);
13311         END IF;
13312       END IF;
13313    END IF;
13314    --
13315    --
13316    ------------------------------------------------------------------------------------------------
13317    -- 4219869 Business Flow
13318    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13319    -- Prior Entry.  Currently, the following code is always generated.
13320    ------------------------------------------------------------------------------------------------
13321    XLA_AE_LINES_PKG.ValidateCurrentLine;
13322 
13323    ------------------------------------------------------------------------------------
13324    -- 4219869 Business Flow
13325    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13326    ------------------------------------------------------------------------------------
13327    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13328 
13329    ----------------------------------------------------------------------------------
13330    -- 4219869 Business Flow
13331    -- Update journal entry status -- Need to generate this within IF <condition>
13332    ----------------------------------------------------------------------------------
13333    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13334          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13335          ,p_balance_type_code => l_balance_type_code
13336          );
13337 
13338    -------------------------------------------------------------------------------------------
13339    -- 4262811 - Generate the Accrual Reversal lines
13340    -------------------------------------------------------------------------------------------
13341    BEGIN
13342       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13343                               (g_array_event(p_event_id).array_value_num('header_index'));
13344       IF l_acc_rev_flag IS NULL THEN
13345          l_acc_rev_flag := 'N';
13346       END IF;
13347    EXCEPTION
13348       WHEN OTHERS THEN
13349          l_acc_rev_flag := 'N';
13350    END;
13351    --
13352    IF (l_acc_rev_flag = 'Y') THEN
13353 
13354        -- 4645092  ------------------------------------------------------------------------------
13355        -- To allow MPA report to determine if it should generate report process
13356        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13357        ------------------------------------------------------------------------------------------
13358 
13359        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13360        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13361 
13362        --
13363        -- Update the line information that should be overwritten
13364        --
13365        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13366                                          p_header_num   => 1);
13367        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13368 
13369        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13370 
13371        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13372           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13373        END IF;
13374 
13375       --
13376       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13377       --
13378       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13379           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13380       ELSE
13381           ---------------------------------------------------------------------------------------------------
13382           -- 4262811a Switch Sign
13383           ---------------------------------------------------------------------------------------------------
13384           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13385           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13386                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13387           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13388                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13389           -- 5132302
13390           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13391                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13392 
13393       END IF;
13394 
13395       -- 4955764
13396       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13397       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13398 
13399 
13400       XLA_AE_LINES_PKG.ValidateCurrentLine;
13401       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13402 
13403       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13404                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13405                ,p_balance_type_code => l_balance_type_code);
13406 
13407    END IF;
13408 
13409    -----------------------------------------------------------------------------------------
13410    -- 4262811 Multiperiod Accounting
13411    -----------------------------------------------------------------------------------------
13412      -- No MPA option is assigned.
13413 
13414 
13415 END IF;
13416 END IF;
13417 --
13418 
13419 --
13420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13421    trace
13422       (p_msg      => 'END of AcctLineType_28'
13423       ,p_level    => C_LEVEL_PROCEDURE
13424       ,p_module   => l_log_module);
13425 END IF;
13426 --
13427 EXCEPTION
13428   WHEN xla_exceptions_pkg.application_exception THEN
13429       RAISE;
13430   WHEN OTHERS THEN
13431        xla_exceptions_pkg.raise_message
13432            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_28');
13433 END AcctLineType_28;
13434 --
13435 
13436 ---------------------------------------
13437 --
13438 -- PRIVATE FUNCTION
13439 --         AcctLineType_29
13440 --
13441 ---------------------------------------
13442 PROCEDURE AcctLineType_29 (
13443   p_application_id        IN NUMBER
13444  ,p_event_id              IN NUMBER
13445  ,p_calculate_acctd_flag  IN VARCHAR2
13446  ,p_calculate_g_l_flag    IN VARCHAR2
13447  ,p_actual_flag           IN OUT VARCHAR2
13448  ,p_balance_type_code     OUT VARCHAR2
13449  ,p_gain_or_loss_ref      OUT VARCHAR2
13450  
13451 --Project Name
13452  , p_source_3            IN VARCHAR2
13453 --Task Name
13454  , p_source_4            IN VARCHAR2
13455 --Project Expenditure Organization Identifier
13456  , p_source_5            IN NUMBER
13457 --Expenditure Type
13458  , p_source_6            IN VARCHAR2
13459 --Document Type
13460  , p_source_9            IN VARCHAR2
13461 --Main Or Backing Code
13462  , p_source_13            IN VARCHAR2
13463 --Burden Record Identifier
13464  , p_source_14            IN VARCHAR2
13465  , p_source_14_meaning    IN VARCHAR2
13466 --Burden Amount Display Method
13467  , p_source_15            IN VARCHAR2
13468 --Accounting Reversal Flag
13469  , p_source_16            IN VARCHAR2
13470 --Allocated to Application Identifier
13471  , p_source_17            IN NUMBER
13472 --Allocated to Distribution Type
13473  , p_source_18            IN VARCHAR2
13474 --Allocated to Entity Code
13475  , p_source_19            IN VARCHAR2
13476 --Allocated to First Distribution Identifier
13477  , p_source_20            IN NUMBER
13478 --Allocated to First System Transaction Identifier
13479  , p_source_21            IN NUMBER
13480 --PO Distribution Identifier
13481  , p_source_29            IN NUMBER
13482 --Line Type Name
13483  , p_source_30            IN VARCHAR2
13484 --Encumbrance Upgrade Credit Accounting Class
13485  , p_source_31            IN VARCHAR2
13486 --Encumbrance Upgrade Credit Account
13487  , p_source_32            IN NUMBER
13488 --Entered Amount
13489  , p_source_33            IN NUMBER
13490 --Currency Code
13491  , p_source_34            IN VARCHAR2
13492 --Accounted Amount
13493  , p_source_35            IN NUMBER
13494 --Encumbrance Upgrade Debit Accounting Class
13495  , p_source_36            IN VARCHAR2
13496 --Encumbrance Upgrade Debit Account
13497  , p_source_37            IN NUMBER
13498 --Use Encumbrances Upgrade Attributes Flag
13499  , p_source_38            IN VARCHAR2
13500 --Encumbrance Upgrade Credit Encumbrance Type
13501  , p_source_39            IN NUMBER
13502 --Encumbrance Upgrade Debit Encumbrance Type
13503  , p_source_40            IN NUMBER
13504 --Requisition Burden Applied to Application Identifier
13505  , p_source_41            IN NUMBER
13506 --Requisition Distribution Type
13507  , p_source_42            IN VARCHAR2
13508 --Requisition Burden Applied to Entity Code
13509  , p_source_43            IN VARCHAR2
13510 --Requisition Burden Applied to First Distribution Identifier
13511  , p_source_44            IN NUMBER
13512 --Requisition Burden Applied to First System Transaction Identifier
13513  , p_source_45            IN NUMBER
13514 --Requisition Burden Applied to Second Distribution Identifier
13515  , p_source_46            IN VARCHAR2
13516 --Backing Requisition Prevent Encumbrance Flag Flipped
13517  , p_source_67            IN VARCHAR2
13518 )
13519 IS
13520 
13521 l_component_type              VARCHAR2(80);
13522 l_component_code              VARCHAR2(30);
13523 l_component_type_code         VARCHAR2(1);
13524 l_component_appl_id           INTEGER;
13525 l_amb_context_code            VARCHAR2(30);
13526 l_entity_code                 VARCHAR2(30);
13527 l_event_class_code            VARCHAR2(30);
13528 l_ae_header_id                NUMBER;
13529 l_event_type_code             VARCHAR2(30);
13530 l_line_definition_code        VARCHAR2(30);
13531 l_line_definition_owner_code  VARCHAR2(1);
13532 --
13533 -- adr variables
13534 l_segment                     VARCHAR2(30);
13535 l_ccid                        NUMBER;
13536 l_adr_transaction_coa_id      NUMBER;
13537 l_adr_accounting_coa_id       NUMBER;
13538 l_adr_flexfield_segment_code  VARCHAR2(30);
13539 l_adr_flex_value_set_id       NUMBER;
13540 l_adr_value_type_code         VARCHAR2(30);
13541 l_adr_value_combination_id    NUMBER;
13542 l_adr_value_segment_code      VARCHAR2(30);
13543 
13544 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13545 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13546 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13547 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13548 
13549 -- 4262811 Variables ------------------------------------------------------------------------------------------
13550 l_entered_amt_idx             NUMBER;
13551 l_accted_amt_idx              NUMBER;
13552 l_acc_rev_flag                VARCHAR2(1);
13553 l_accrual_line_num            NUMBER;
13554 l_tmp_amt                     NUMBER;
13555 l_acc_rev_natural_side_code   VARCHAR2(1);
13556 
13557 l_num_entries                 NUMBER;
13558 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13559 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13560 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13561 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13562 l_recog_line_1                NUMBER;
13563 l_recog_line_2                NUMBER;
13564 
13565 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13566 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13567 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13568 
13569 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13570 
13571 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13572 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13573 
13574 ---------------------------------------------------------------------------------------------------------------
13575 
13576 
13577 --
13578 -- bulk performance
13579 --
13580 l_balance_type_code           VARCHAR2(1);
13581 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13582 l_log_module                  VARCHAR2(240);
13583 
13584 --
13585 -- Upgrade strategy
13586 --
13587 l_actual_upg_option           VARCHAR2(1);
13588 l_enc_upg_option           VARCHAR2(1);
13589 
13590 --
13591 BEGIN
13592 --
13593 IF g_log_enabled THEN
13594       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
13595 END IF;
13596 --
13597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13598 
13599       trace
13600          (p_msg      => 'BEGIN of AcctLineType_29'
13601          ,p_level    => C_LEVEL_PROCEDURE
13602          ,p_module   => l_log_module);
13603 
13604 END IF;
13605 --
13606 l_component_type             := 'AMB_JLT';
13607 l_component_code             := 'REINST_REQ_BURDEND_ENCFORPO_DR';
13608 l_component_type_code        := 'S';
13609 l_component_appl_id          :=  201;
13610 l_amb_context_code           := 'DEFAULT';
13611 l_entity_code                := 'PURCHASE_ORDER';
13612 l_event_class_code           := 'PO_BURDEN';
13613 l_event_type_code            := 'PO_BURDEN_ALL';
13614 l_line_definition_owner_code := 'S';
13615 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
13616 --
13617 l_balance_type_code          := 'E';
13618 l_segment                     := NULL;
13619 l_ccid                        := NULL;
13620 l_adr_transaction_coa_id      := NULL;
13621 l_adr_accounting_coa_id       := NULL;
13622 l_adr_flexfield_segment_code  := NULL;
13623 l_adr_flex_value_set_id       := NULL;
13624 l_adr_value_type_code         := NULL;
13625 l_adr_value_combination_id    := NULL;
13626 l_adr_value_segment_code      := NULL;
13627 
13628 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
13629 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
13630 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13631 l_budgetary_control_flag     := 'Y';
13632 
13633 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13634 l_bflow_applied_to_amt       := NULL; -- 5132302
13635 l_entered_amt_idx            := NULL;          -- 4262811
13636 l_accted_amt_idx             := NULL;          -- 4262811
13637 l_acc_rev_flag               := NULL;          -- 4262811
13638 l_accrual_line_num           := NULL;          -- 4262811
13639 l_tmp_amt                    := NULL;          -- 4262811
13640 --
13641  
13642 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13643     l_balance_type_code <> 'B' THEN
13644 IF (NVL(
13645 xla_ae_sources_pkg.GetSystemSourceChar(
13646    p_source_code           => 'XLA_EVENT_TYPE_CODE'
13647  , p_source_type_code      => 'Y'
13648  , p_source_application_id =>  602
13649 ),'
13650 ') =  'PO_BURDEN_UNRESERVED' OR 
13651 NVL(
13652 xla_ae_sources_pkg.GetSystemSourceChar(
13653    p_source_code           => 'XLA_EVENT_TYPE_CODE'
13654  , p_source_type_code      => 'Y'
13655  , p_source_application_id =>  602
13656 ),'
13657 ') =  'PO_BURDEN_INV_CANCELLED' OR 
13658 NVL(
13659 xla_ae_sources_pkg.GetSystemSourceChar(
13660    p_source_code           => 'XLA_EVENT_TYPE_CODE'
13661  , p_source_type_code      => 'Y'
13662  , p_source_application_id =>  602
13663 ),'
13664 ') =  'PO_BURDEN_REJECTED') AND 
13665 NVL(p_source_13,'
13666 ') =  'B_REQ' AND 
13667 (NVL(p_source_14,'
13668 ') =  'N' OR 
13669 NVL(p_source_14,'
13670 ') =  'O') AND 
13671 NVL(p_source_9,'
13672 ') =  'REQ' AND 
13673 NVL(p_source_15,'
13674 ') =  'S' AND 
13675 NVL(p_source_67,'
13676 ') <>  'Y'
13677  THEN 
13678 
13679    --
13680    XLA_AE_LINES_PKG.SetNewLine;
13681 
13682    p_balance_type_code          := l_balance_type_code;
13683    -- set the flag so later we will know whether the gain loss line needs to be created
13684    
13685    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13686      p_actual_flag :='A';
13687    END IF;
13688 
13689    --
13690    -- bulk performance
13691    --
13692    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13693                                       p_header_num   => 0); -- 4262811
13694    --
13695    -- set accounting line options
13696    --
13697    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13698            p_natural_side_code          => 'D'
13699          , p_gain_or_loss_flag          => 'N'
13700          , p_gl_transfer_mode_code      => 'S'
13701          , p_acct_entry_type_code       => 'E'
13702          , p_switch_side_flag           => 'N'
13703          , p_merge_duplicate_code       => 'N'
13704          );
13705    --
13706    l_acc_rev_natural_side_code := 'C';  -- 4262811
13707    -- 
13708    --
13709    -- set accounting line type info
13710    --
13711    xla_ae_lines_pkg.SetAcctLineType
13712       (p_component_type             => l_component_type
13713       ,p_event_type_code            => l_event_type_code
13714       ,p_line_definition_owner_code => l_line_definition_owner_code
13715       ,p_line_definition_code       => l_line_definition_code
13716       ,p_accounting_line_code       => l_component_code
13717       ,p_accounting_line_type_code  => l_component_type_code
13718       ,p_accounting_line_appl_id    => l_component_appl_id
13719       ,p_amb_context_code           => l_amb_context_code
13720       ,p_entity_code                => l_entity_code
13721       ,p_event_class_code           => l_event_class_code);
13722    --
13723    -- set accounting class
13724    --
13725    xla_ae_lines_pkg.SetAcctClass(
13726            p_accounting_class_code  => 'REQ_PA_BURDENED'
13727          , p_ae_header_id           => l_ae_header_id
13728          );
13729 
13730    --
13731    -- set rounding class
13732    --
13733    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13734                       'REQ_PA_BURDENED';
13735 
13736    --
13737    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13738    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13739    --
13740    -- bulk performance
13741    --
13742    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13743 
13744    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13745       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13746 
13747    -- 4955764
13748    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13749       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13750 
13751    -- 4458381 Public Sector Enh
13752    
13753    --
13754    -- set accounting attributes for the line type
13755    --
13756    l_entered_amt_idx := 27;
13757    l_accted_amt_idx  := 29;
13758    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13759    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
13760    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
13761    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
13762    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
13763    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
13764    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
13765    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
13766    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
13767    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
13768    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
13769    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
13770    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
13771    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
13772    l_rec_acct_attrs.array_num_value(7)  := p_source_41;
13773    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13774    l_rec_acct_attrs.array_char_value(8)  := p_source_42;
13775    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
13776    l_rec_acct_attrs.array_char_value(9)  := p_source_43;
13777    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
13778    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_44);
13779    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13780    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_45);
13781    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
13782    l_rec_acct_attrs.array_char_value(12)  := p_source_46;
13783    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
13784    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
13785    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
13786    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
13787    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
13788    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
13789    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
13790    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
13791    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
13792    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
13793    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
13794    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
13795    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
13796    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
13797    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
13798    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
13799    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
13800    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
13801    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
13802    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
13803    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
13804    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
13805    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
13806    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
13807    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
13808    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
13809    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
13810    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
13811    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
13812    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
13813    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
13814    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
13815    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
13816    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
13817    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
13818    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
13819    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
13820    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
13821    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
13822    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
13823    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
13824    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
13825    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
13826    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
13827 
13828    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13829    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13830 
13831    ---------------------------------------------------------------------------------------------------------------
13832    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13833    ---------------------------------------------------------------------------------------------------------------
13834    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13835 
13836    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13837    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13838 
13839    IF xla_accounting_cache_pkg.GetValueChar
13840          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13841          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13842    AND l_bflow_method_code = 'PRIOR_ENTRY'
13843 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13844    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13845          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13846        )
13847    THEN
13848          xla_ae_lines_pkg.BflowUpgEntry
13849            (p_business_method_code    => l_bflow_method_code
13850            ,p_business_class_code     => l_bflow_class_code
13851            ,p_balance_type            => l_balance_type_code);
13852    ELSE
13853       NULL;
13854 XLA_AE_LINES_PKG.business_flow_validation(
13855                                 p_business_method_code     => l_bflow_method_code
13856                                ,p_business_class_code      => l_bflow_class_code
13857                                ,p_inherit_description_flag => l_inherit_desc_flag);
13858    END IF;
13859 
13860    --
13861    -- call analytical criteria
13862    --
13863    -- Inherited Analytical Criteria for business flow method of Prior Entry.
13864    --
13865    -- call description
13866    --
13867    
13868 xla_ae_lines_pkg.SetLineDescription(
13869    p_ae_header_id => l_ae_header_id
13870   ,p_description  => Description_2 (
13871      p_application_id         => p_application_id
13872    , p_ae_header_id           => l_ae_header_id 
13873 , p_source_3 => p_source_3
13874 , p_source_4 => p_source_4
13875 , p_source_5 => p_source_5
13876 , p_source_6 => p_source_6
13877    )
13878 );
13879 
13880 
13881    --
13882    -- call ADRs
13883    -- Bug 4922099
13884    --
13885    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13886         (NVL(l_actual_upg_option, 'N') = 'O') OR
13887         (NVL(l_enc_upg_option, 'N') = 'O')
13888       )
13889    THEN
13890    NULL;
13891    --
13892    --
13893    
13894    --
13895    --
13896    END IF;
13897    --
13898    -- Bug 4922099
13899    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13900           (NVL(l_enc_upg_option, 'N') = 'O')
13901         ) AND
13902         (l_bflow_method_code = 'PRIOR_ENTRY')
13903       )
13904    THEN
13905       IF
13906       --
13907       1 = 1
13908       --
13909       THEN
13910       xla_accounting_err_pkg.build_message
13911                                     (p_appli_s_name            => 'XLA'
13912                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13913                                     ,p_token_1                 => 'LINE_NUMBER'
13914                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13915                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13916                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13917                                                                              l_component_type
13918                                                                             ,l_component_code
13919                                                                             ,l_component_type_code
13920                                                                             ,l_component_appl_id
13921                                                                             ,l_amb_context_code
13922                                                                             ,l_entity_code
13923                                                                             ,l_event_class_code
13924                                                                            )
13925                                     ,p_token_3                 => 'OWNER'
13926                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13927                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13928                                                                           ,p_lookup_code    => l_component_type_code
13929                                                                          )
13930                                     ,p_token_4                 => 'PRODUCT_NAME'
13931                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13932                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13933                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13934                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13935                                     ,p_ae_header_id            =>  NULL
13936                                        );
13937 
13938         IF (C_LEVEL_ERROR>= g_log_level) THEN
13939                  trace
13940                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13941                       ,p_level    => C_LEVEL_ERROR
13942                       ,p_module   => l_log_module);
13943         END IF;
13944       END IF;
13945    END IF;
13946    --
13947    --
13948    ------------------------------------------------------------------------------------------------
13949    -- 4219869 Business Flow
13950    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13951    -- Prior Entry.  Currently, the following code is always generated.
13952    ------------------------------------------------------------------------------------------------
13953    -- No ValidateCurrentLine for business flow method of Prior Entry
13954 
13955    ------------------------------------------------------------------------------------
13956    -- 4219869 Business Flow
13957    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13958    ------------------------------------------------------------------------------------
13959    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13960 
13961    ----------------------------------------------------------------------------------
13962    -- 4219869 Business Flow
13963    -- Update journal entry status -- Need to generate this within IF <condition>
13964    ----------------------------------------------------------------------------------
13965    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13966          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13967          ,p_balance_type_code => l_balance_type_code
13968          );
13969 
13970    -------------------------------------------------------------------------------------------
13971    -- 4262811 - Generate the Accrual Reversal lines
13972    -------------------------------------------------------------------------------------------
13973    BEGIN
13974       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13975                               (g_array_event(p_event_id).array_value_num('header_index'));
13976       IF l_acc_rev_flag IS NULL THEN
13977          l_acc_rev_flag := 'N';
13978       END IF;
13979    EXCEPTION
13980       WHEN OTHERS THEN
13981          l_acc_rev_flag := 'N';
13982    END;
13983    --
13984    IF (l_acc_rev_flag = 'Y') THEN
13985 
13986        -- 4645092  ------------------------------------------------------------------------------
13987        -- To allow MPA report to determine if it should generate report process
13988        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13989        ------------------------------------------------------------------------------------------
13990 
13991        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13992        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13993 
13994        --
13995        -- Update the line information that should be overwritten
13996        --
13997        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13998                                          p_header_num   => 1);
13999        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14000 
14001        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14002 
14003        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14004           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14005        END IF;
14006 
14007       --
14008       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14009       --
14010       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14011           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14012       ELSE
14013           ---------------------------------------------------------------------------------------------------
14014           -- 4262811a Switch Sign
14015           ---------------------------------------------------------------------------------------------------
14016           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14017           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14018                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14019           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14020                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14021           -- 5132302
14022           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14023                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14024 
14025       END IF;
14026 
14027       -- 4955764
14028       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14029       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14030 
14031 
14032       XLA_AE_LINES_PKG.ValidateCurrentLine;
14033       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14034 
14035       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14036                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14037                ,p_balance_type_code => l_balance_type_code);
14038 
14039    END IF;
14040 
14041    -----------------------------------------------------------------------------------------
14042    -- 4262811 Multiperiod Accounting
14043    -----------------------------------------------------------------------------------------
14044      -- No MPA option is assigned.
14045 
14046 
14047 END IF;
14048 END IF;
14049 --
14050 
14051 --
14052 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14053    trace
14054       (p_msg      => 'END of AcctLineType_29'
14055       ,p_level    => C_LEVEL_PROCEDURE
14056       ,p_module   => l_log_module);
14057 END IF;
14058 --
14059 EXCEPTION
14060   WHEN xla_exceptions_pkg.application_exception THEN
14061       RAISE;
14062   WHEN OTHERS THEN
14063        xla_exceptions_pkg.raise_message
14064            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_29');
14065 END AcctLineType_29;
14066 --
14067 
14068 ---------------------------------------
14069 --
14070 -- PRIVATE FUNCTION
14071 --         AcctLineType_30
14072 --
14073 ---------------------------------------
14074 PROCEDURE AcctLineType_30 (
14075   p_application_id        IN NUMBER
14076  ,p_event_id              IN NUMBER
14077  ,p_calculate_acctd_flag  IN VARCHAR2
14078  ,p_calculate_g_l_flag    IN VARCHAR2
14079  ,p_actual_flag           IN OUT VARCHAR2
14080  ,p_balance_type_code     OUT VARCHAR2
14081  ,p_gain_or_loss_ref      OUT VARCHAR2
14082  
14083 --Project Name
14084  , p_source_3            IN VARCHAR2
14085 --Task Name
14086  , p_source_4            IN VARCHAR2
14087 --Project Expenditure Organization Identifier
14088  , p_source_5            IN NUMBER
14089 --Expenditure Type
14090  , p_source_6            IN VARCHAR2
14091 --Document Type
14092  , p_source_9            IN VARCHAR2
14093 --Main Or Backing Code
14094  , p_source_13            IN VARCHAR2
14095 --Burden Record Identifier
14096  , p_source_14            IN VARCHAR2
14097  , p_source_14_meaning    IN VARCHAR2
14098 --Burden Amount Display Method
14099  , p_source_15            IN VARCHAR2
14100 --Accounting Reversal Flag
14101  , p_source_16            IN VARCHAR2
14102 --Allocated to Application Identifier
14103  , p_source_17            IN NUMBER
14104 --Allocated to Distribution Type
14105  , p_source_18            IN VARCHAR2
14106 --Allocated to Entity Code
14107  , p_source_19            IN VARCHAR2
14108 --Allocated to First Distribution Identifier
14109  , p_source_20            IN NUMBER
14110 --Allocated to First System Transaction Identifier
14111  , p_source_21            IN NUMBER
14112 --Allocated to Second Distribution Identifier
14113  , p_source_22            IN VARCHAR2
14114 --PO Distribution Identifier
14115  , p_source_29            IN NUMBER
14116 --Line Type Name
14117  , p_source_30            IN VARCHAR2
14118 --Encumbrance Upgrade Credit Accounting Class
14119  , p_source_31            IN VARCHAR2
14120 --Encumbrance Upgrade Credit Account
14121  , p_source_32            IN NUMBER
14122 --Entered Amount
14123  , p_source_33            IN NUMBER
14124 --Currency Code
14125  , p_source_34            IN VARCHAR2
14126 --Accounted Amount
14127  , p_source_35            IN NUMBER
14128 --Encumbrance Upgrade Debit Accounting Class
14129  , p_source_36            IN VARCHAR2
14130 --Encumbrance Upgrade Debit Account
14131  , p_source_37            IN NUMBER
14132 --Use Encumbrances Upgrade Attributes Flag
14133  , p_source_38            IN VARCHAR2
14134 --Encumbrance Upgrade Credit Encumbrance Type
14135  , p_source_39            IN NUMBER
14136 --Encumbrance Upgrade Debit Encumbrance Type
14137  , p_source_40            IN NUMBER
14138 --Requisition Burden Applied to Application Identifier
14139  , p_source_41            IN NUMBER
14140 --Requisition Distribution Type
14141  , p_source_42            IN VARCHAR2
14142 --Requisition Burden Applied to Entity Code
14143  , p_source_43            IN VARCHAR2
14144 --Requisition Burden Applied to First Distribution Identifier
14145  , p_source_44            IN NUMBER
14146 --Requisition Burden Applied to First System Transaction Identifier
14147  , p_source_45            IN NUMBER
14148 --Requisition Burden Applied to Second Distribution Identifier
14149  , p_source_46            IN VARCHAR2
14150 )
14151 IS
14152 
14153 l_component_type              VARCHAR2(80);
14154 l_component_code              VARCHAR2(30);
14155 l_component_type_code         VARCHAR2(1);
14156 l_component_appl_id           INTEGER;
14157 l_amb_context_code            VARCHAR2(30);
14158 l_entity_code                 VARCHAR2(30);
14159 l_event_class_code            VARCHAR2(30);
14160 l_ae_header_id                NUMBER;
14161 l_event_type_code             VARCHAR2(30);
14162 l_line_definition_code        VARCHAR2(30);
14163 l_line_definition_owner_code  VARCHAR2(1);
14164 --
14165 -- adr variables
14166 l_segment                     VARCHAR2(30);
14167 l_ccid                        NUMBER;
14168 l_adr_transaction_coa_id      NUMBER;
14169 l_adr_accounting_coa_id       NUMBER;
14170 l_adr_flexfield_segment_code  VARCHAR2(30);
14171 l_adr_flex_value_set_id       NUMBER;
14172 l_adr_value_type_code         VARCHAR2(30);
14173 l_adr_value_combination_id    NUMBER;
14174 l_adr_value_segment_code      VARCHAR2(30);
14175 
14176 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14177 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14178 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14179 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14180 
14181 -- 4262811 Variables ------------------------------------------------------------------------------------------
14182 l_entered_amt_idx             NUMBER;
14183 l_accted_amt_idx              NUMBER;
14184 l_acc_rev_flag                VARCHAR2(1);
14185 l_accrual_line_num            NUMBER;
14186 l_tmp_amt                     NUMBER;
14187 l_acc_rev_natural_side_code   VARCHAR2(1);
14188 
14189 l_num_entries                 NUMBER;
14190 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14191 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14192 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14193 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14194 l_recog_line_1                NUMBER;
14195 l_recog_line_2                NUMBER;
14196 
14197 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14198 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14199 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14200 
14201 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14202 
14203 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14204 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14205 
14206 ---------------------------------------------------------------------------------------------------------------
14207 
14208 
14209 --
14210 -- bulk performance
14211 --
14212 l_balance_type_code           VARCHAR2(1);
14213 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14214 l_log_module                  VARCHAR2(240);
14215 
14216 --
14217 -- Upgrade strategy
14218 --
14219 l_actual_upg_option           VARCHAR2(1);
14220 l_enc_upg_option           VARCHAR2(1);
14221 
14222 --
14223 BEGIN
14224 --
14225 IF g_log_enabled THEN
14226       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
14227 END IF;
14228 --
14229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14230 
14231       trace
14232          (p_msg      => 'BEGIN of AcctLineType_30'
14233          ,p_level    => C_LEVEL_PROCEDURE
14234          ,p_module   => l_log_module);
14235 
14236 END IF;
14237 --
14238 l_component_type             := 'AMB_JLT';
14239 l_component_code             := 'REINST_REQ_BURDEND_ENCFORRELCR';
14240 l_component_type_code        := 'S';
14241 l_component_appl_id          :=  201;
14242 l_amb_context_code           := 'DEFAULT';
14243 l_entity_code                := 'RELEASE';
14244 l_event_class_code           := 'RELEASE_BURDEN';
14245 l_event_type_code            := 'RELEASE_BURDEN_ALL';
14246 l_line_definition_owner_code := 'S';
14247 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
14248 --
14249 l_balance_type_code          := 'E';
14250 l_segment                     := NULL;
14251 l_ccid                        := NULL;
14252 l_adr_transaction_coa_id      := NULL;
14253 l_adr_accounting_coa_id       := NULL;
14254 l_adr_flexfield_segment_code  := NULL;
14255 l_adr_flex_value_set_id       := NULL;
14256 l_adr_value_type_code         := NULL;
14257 l_adr_value_combination_id    := NULL;
14258 l_adr_value_segment_code      := NULL;
14259 
14260 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
14261 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
14262 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14263 l_budgetary_control_flag     := 'Y';
14264 
14265 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14266 l_bflow_applied_to_amt       := NULL; -- 5132302
14267 l_entered_amt_idx            := NULL;          -- 4262811
14268 l_accted_amt_idx             := NULL;          -- 4262811
14269 l_acc_rev_flag               := NULL;          -- 4262811
14270 l_accrual_line_num           := NULL;          -- 4262811
14271 l_tmp_amt                    := NULL;          -- 4262811
14272 --
14273  
14274 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14275     l_balance_type_code <> 'B' THEN
14276 IF (NVL(
14277 xla_ae_sources_pkg.GetSystemSourceChar(
14278    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14279  , p_source_type_code      => 'Y'
14280  , p_source_application_id =>  602
14281 ),'
14282 ') =  'REL_BURDEN_CANCELLED' OR 
14283 NVL(
14284 xla_ae_sources_pkg.GetSystemSourceChar(
14285    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14286  , p_source_type_code      => 'Y'
14287  , p_source_application_id =>  602
14288 ),'
14289 ') =  'REL_BURDEN_CR_MEMO_CANCELLED') AND 
14290 NVL(p_source_13,'
14291 ') =  'B_REQ' AND 
14292 (NVL(p_source_14,'
14293 ') =  'N' OR 
14294 NVL(p_source_14,'
14295 ') =  'O') AND 
14296 NVL(p_source_9,'
14297 ') =  'REQ' AND 
14298 NVL(p_source_15,'
14299 ') =  'S'
14300  THEN 
14301 
14302    --
14303    XLA_AE_LINES_PKG.SetNewLine;
14304 
14305    p_balance_type_code          := l_balance_type_code;
14306    -- set the flag so later we will know whether the gain loss line needs to be created
14307    
14308    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14309      p_actual_flag :='A';
14310    END IF;
14311 
14312    --
14313    -- bulk performance
14314    --
14315    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14316                                       p_header_num   => 0); -- 4262811
14317    --
14318    -- set accounting line options
14319    --
14320    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14321            p_natural_side_code          => 'C'
14322          , p_gain_or_loss_flag          => 'N'
14323          , p_gl_transfer_mode_code      => 'S'
14324          , p_acct_entry_type_code       => 'E'
14325          , p_switch_side_flag           => 'N'
14326          , p_merge_duplicate_code       => 'N'
14327          );
14328    --
14329    l_acc_rev_natural_side_code := 'D';  -- 4262811
14330    -- 
14331    --
14332    -- set accounting line type info
14333    --
14334    xla_ae_lines_pkg.SetAcctLineType
14335       (p_component_type             => l_component_type
14336       ,p_event_type_code            => l_event_type_code
14337       ,p_line_definition_owner_code => l_line_definition_owner_code
14338       ,p_line_definition_code       => l_line_definition_code
14339       ,p_accounting_line_code       => l_component_code
14340       ,p_accounting_line_type_code  => l_component_type_code
14341       ,p_accounting_line_appl_id    => l_component_appl_id
14342       ,p_amb_context_code           => l_amb_context_code
14343       ,p_entity_code                => l_entity_code
14344       ,p_event_class_code           => l_event_class_code);
14345    --
14346    -- set accounting class
14347    --
14348    xla_ae_lines_pkg.SetAcctClass(
14349            p_accounting_class_code  => 'REQ_PA_BURDENED'
14350          , p_ae_header_id           => l_ae_header_id
14351          );
14352 
14353    --
14354    -- set rounding class
14355    --
14356    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14357                       'REQ_PA_BURDENED';
14358 
14359    --
14360    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14361    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14362    --
14363    -- bulk performance
14364    --
14365    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14366 
14367    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14368       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14369 
14370    -- 4955764
14371    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14373 
14374    -- 4458381 Public Sector Enh
14375    
14376    --
14377    -- set accounting attributes for the line type
14378    --
14379    l_entered_amt_idx := 28;
14380    l_accted_amt_idx  := 30;
14381    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14382    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
14383    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
14384    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
14385    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
14386    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
14387    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
14388    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
14389    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
14390    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
14391    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
14392    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
14393    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
14394    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
14395    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
14396    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
14397    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
14398    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
14399    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
14400    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
14401    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
14402    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
14403    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
14404    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
14405    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
14406    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
14407    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
14408    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
14409    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
14410    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
14411    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
14412    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
14413    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
14414    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
14415    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
14416    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
14417    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
14418    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
14419    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
14420    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
14421    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
14422    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
14423    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
14424    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
14425    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
14426    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
14427    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
14428    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
14429    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
14430    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
14431    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
14432    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
14433    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
14434    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
14435    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
14436    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
14437    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
14438    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
14439    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
14440    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
14441    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
14442    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
14443    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
14444    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
14445    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
14446    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
14447    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
14448    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
14449    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
14450    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
14451    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
14452 
14453    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14454    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14455 
14456    ---------------------------------------------------------------------------------------------------------------
14457    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14458    ---------------------------------------------------------------------------------------------------------------
14459    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14460 
14461    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14462    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14463 
14464    IF xla_accounting_cache_pkg.GetValueChar
14465          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14466          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14467    AND l_bflow_method_code = 'PRIOR_ENTRY'
14468 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14469    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14470          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14471        )
14472    THEN
14473          xla_ae_lines_pkg.BflowUpgEntry
14474            (p_business_method_code    => l_bflow_method_code
14475            ,p_business_class_code     => l_bflow_class_code
14476            ,p_balance_type            => l_balance_type_code);
14477    ELSE
14478       NULL;
14479 XLA_AE_LINES_PKG.business_flow_validation(
14480                                 p_business_method_code     => l_bflow_method_code
14481                                ,p_business_class_code      => l_bflow_class_code
14482                                ,p_inherit_description_flag => l_inherit_desc_flag);
14483    END IF;
14484 
14485    --
14486    -- call analytical criteria
14487    --
14488    -- Inherited Analytical Criteria for business flow method of Prior Entry.
14489    --
14490    -- call description
14491    --
14492    
14493 xla_ae_lines_pkg.SetLineDescription(
14494    p_ae_header_id => l_ae_header_id
14495   ,p_description  => Description_2 (
14496      p_application_id         => p_application_id
14497    , p_ae_header_id           => l_ae_header_id 
14498 , p_source_3 => p_source_3
14499 , p_source_4 => p_source_4
14500 , p_source_5 => p_source_5
14501 , p_source_6 => p_source_6
14502    )
14503 );
14504 
14505 
14506    --
14507    -- call ADRs
14508    -- Bug 4922099
14509    --
14510    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14511         (NVL(l_actual_upg_option, 'N') = 'O') OR
14512         (NVL(l_enc_upg_option, 'N') = 'O')
14513       )
14514    THEN
14515    NULL;
14516    --
14517    --
14518    
14519    --
14520    --
14521    END IF;
14522    --
14523    -- Bug 4922099
14524    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14525           (NVL(l_enc_upg_option, 'N') = 'O')
14526         ) AND
14527         (l_bflow_method_code = 'PRIOR_ENTRY')
14528       )
14529    THEN
14530       IF
14531       --
14532       1 = 1
14533       --
14534       THEN
14535       xla_accounting_err_pkg.build_message
14536                                     (p_appli_s_name            => 'XLA'
14537                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14538                                     ,p_token_1                 => 'LINE_NUMBER'
14539                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14540                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14541                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14542                                                                              l_component_type
14543                                                                             ,l_component_code
14544                                                                             ,l_component_type_code
14545                                                                             ,l_component_appl_id
14546                                                                             ,l_amb_context_code
14547                                                                             ,l_entity_code
14548                                                                             ,l_event_class_code
14549                                                                            )
14550                                     ,p_token_3                 => 'OWNER'
14551                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14552                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14553                                                                           ,p_lookup_code    => l_component_type_code
14554                                                                          )
14555                                     ,p_token_4                 => 'PRODUCT_NAME'
14556                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14557                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14558                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14559                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14560                                     ,p_ae_header_id            =>  NULL
14561                                        );
14562 
14563         IF (C_LEVEL_ERROR>= g_log_level) THEN
14564                  trace
14565                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14566                       ,p_level    => C_LEVEL_ERROR
14567                       ,p_module   => l_log_module);
14568         END IF;
14569       END IF;
14570    END IF;
14571    --
14572    --
14573    ------------------------------------------------------------------------------------------------
14574    -- 4219869 Business Flow
14575    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14576    -- Prior Entry.  Currently, the following code is always generated.
14577    ------------------------------------------------------------------------------------------------
14578    -- No ValidateCurrentLine for business flow method of Prior Entry
14579 
14580    ------------------------------------------------------------------------------------
14581    -- 4219869 Business Flow
14582    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14583    ------------------------------------------------------------------------------------
14584    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14585 
14586    ----------------------------------------------------------------------------------
14587    -- 4219869 Business Flow
14588    -- Update journal entry status -- Need to generate this within IF <condition>
14589    ----------------------------------------------------------------------------------
14590    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14591          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14592          ,p_balance_type_code => l_balance_type_code
14593          );
14594 
14595    -------------------------------------------------------------------------------------------
14596    -- 4262811 - Generate the Accrual Reversal lines
14597    -------------------------------------------------------------------------------------------
14598    BEGIN
14599       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14600                               (g_array_event(p_event_id).array_value_num('header_index'));
14601       IF l_acc_rev_flag IS NULL THEN
14602          l_acc_rev_flag := 'N';
14603       END IF;
14604    EXCEPTION
14605       WHEN OTHERS THEN
14606          l_acc_rev_flag := 'N';
14607    END;
14608    --
14609    IF (l_acc_rev_flag = 'Y') THEN
14610 
14611        -- 4645092  ------------------------------------------------------------------------------
14612        -- To allow MPA report to determine if it should generate report process
14613        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14614        ------------------------------------------------------------------------------------------
14615 
14616        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14617        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14618 
14619        --
14620        -- Update the line information that should be overwritten
14621        --
14622        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14623                                          p_header_num   => 1);
14624        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14625 
14626        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14627 
14628        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14629           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14630        END IF;
14631 
14632       --
14633       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14634       --
14635       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14636           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14637       ELSE
14638           ---------------------------------------------------------------------------------------------------
14639           -- 4262811a Switch Sign
14640           ---------------------------------------------------------------------------------------------------
14641           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14642           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14643                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14644           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14645                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14646           -- 5132302
14647           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14648                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14649 
14650       END IF;
14651 
14652       -- 4955764
14653       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14654       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14655 
14656 
14657       XLA_AE_LINES_PKG.ValidateCurrentLine;
14658       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14659 
14660       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14661                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14662                ,p_balance_type_code => l_balance_type_code);
14663 
14664    END IF;
14665 
14666    -----------------------------------------------------------------------------------------
14667    -- 4262811 Multiperiod Accounting
14668    -----------------------------------------------------------------------------------------
14669      -- No MPA option is assigned.
14670 
14671 
14672 END IF;
14673 END IF;
14674 --
14675 
14676 --
14677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14678    trace
14679       (p_msg      => 'END of AcctLineType_30'
14680       ,p_level    => C_LEVEL_PROCEDURE
14681       ,p_module   => l_log_module);
14682 END IF;
14683 --
14684 EXCEPTION
14685   WHEN xla_exceptions_pkg.application_exception THEN
14686       RAISE;
14687   WHEN OTHERS THEN
14688        xla_exceptions_pkg.raise_message
14689            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_30');
14690 END AcctLineType_30;
14691 --
14692 
14693 ---------------------------------------
14694 --
14695 -- PRIVATE FUNCTION
14696 --         AcctLineType_31
14697 --
14698 ---------------------------------------
14699 PROCEDURE AcctLineType_31 (
14700   p_application_id        IN NUMBER
14701  ,p_event_id              IN NUMBER
14702  ,p_calculate_acctd_flag  IN VARCHAR2
14703  ,p_calculate_g_l_flag    IN VARCHAR2
14704  ,p_actual_flag           IN OUT VARCHAR2
14705  ,p_balance_type_code     OUT VARCHAR2
14706  ,p_gain_or_loss_ref      OUT VARCHAR2
14707  
14708 --Project Name
14709  , p_source_3            IN VARCHAR2
14710 --Task Name
14711  , p_source_4            IN VARCHAR2
14712 --Project Expenditure Organization Identifier
14713  , p_source_5            IN NUMBER
14714 --Expenditure Type
14715  , p_source_6            IN VARCHAR2
14716 --Document Type
14717  , p_source_9            IN VARCHAR2
14718 --Main Or Backing Code
14719  , p_source_13            IN VARCHAR2
14720 --Burden Record Identifier
14721  , p_source_14            IN VARCHAR2
14722  , p_source_14_meaning    IN VARCHAR2
14723 --Burden Amount Display Method
14724  , p_source_15            IN VARCHAR2
14725 --Accounting Reversal Flag
14726  , p_source_16            IN VARCHAR2
14727 --Allocated to Application Identifier
14728  , p_source_17            IN NUMBER
14729 --Allocated to Distribution Type
14730  , p_source_18            IN VARCHAR2
14731 --Allocated to Entity Code
14732  , p_source_19            IN VARCHAR2
14733 --Allocated to First Distribution Identifier
14734  , p_source_20            IN NUMBER
14735 --Allocated to First System Transaction Identifier
14736  , p_source_21            IN NUMBER
14737 --Allocated to Second Distribution Identifier
14738  , p_source_22            IN VARCHAR2
14739 --PO Distribution Identifier
14740  , p_source_29            IN NUMBER
14741 --Line Type Name
14742  , p_source_30            IN VARCHAR2
14743 --Encumbrance Upgrade Credit Accounting Class
14744  , p_source_31            IN VARCHAR2
14745 --Encumbrance Upgrade Credit Account
14746  , p_source_32            IN NUMBER
14747 --Entered Amount
14748  , p_source_33            IN NUMBER
14749 --Currency Code
14750  , p_source_34            IN VARCHAR2
14751 --Accounted Amount
14752  , p_source_35            IN NUMBER
14753 --Encumbrance Upgrade Debit Accounting Class
14754  , p_source_36            IN VARCHAR2
14755 --Encumbrance Upgrade Debit Account
14756  , p_source_37            IN NUMBER
14757 --Use Encumbrances Upgrade Attributes Flag
14758  , p_source_38            IN VARCHAR2
14759 --Encumbrance Upgrade Credit Encumbrance Type
14760  , p_source_39            IN NUMBER
14761 --Encumbrance Upgrade Debit Encumbrance Type
14762  , p_source_40            IN NUMBER
14763 --Requisition Burden Applied to Application Identifier
14764  , p_source_41            IN NUMBER
14765 --Requisition Distribution Type
14766  , p_source_42            IN VARCHAR2
14767 --Requisition Burden Applied to Entity Code
14768  , p_source_43            IN VARCHAR2
14769 --Requisition Burden Applied to First Distribution Identifier
14770  , p_source_44            IN NUMBER
14771 --Requisition Burden Applied to First System Transaction Identifier
14772  , p_source_45            IN NUMBER
14773 --Requisition Burden Applied to Second Distribution Identifier
14774  , p_source_46            IN VARCHAR2
14775 )
14776 IS
14777 
14778 l_component_type              VARCHAR2(80);
14779 l_component_code              VARCHAR2(30);
14780 l_component_type_code         VARCHAR2(1);
14781 l_component_appl_id           INTEGER;
14782 l_amb_context_code            VARCHAR2(30);
14783 l_entity_code                 VARCHAR2(30);
14784 l_event_class_code            VARCHAR2(30);
14785 l_ae_header_id                NUMBER;
14786 l_event_type_code             VARCHAR2(30);
14787 l_line_definition_code        VARCHAR2(30);
14788 l_line_definition_owner_code  VARCHAR2(1);
14789 --
14790 -- adr variables
14791 l_segment                     VARCHAR2(30);
14792 l_ccid                        NUMBER;
14793 l_adr_transaction_coa_id      NUMBER;
14794 l_adr_accounting_coa_id       NUMBER;
14795 l_adr_flexfield_segment_code  VARCHAR2(30);
14796 l_adr_flex_value_set_id       NUMBER;
14797 l_adr_value_type_code         VARCHAR2(30);
14798 l_adr_value_combination_id    NUMBER;
14799 l_adr_value_segment_code      VARCHAR2(30);
14800 
14801 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14802 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14803 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14804 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14805 
14806 -- 4262811 Variables ------------------------------------------------------------------------------------------
14807 l_entered_amt_idx             NUMBER;
14808 l_accted_amt_idx              NUMBER;
14809 l_acc_rev_flag                VARCHAR2(1);
14810 l_accrual_line_num            NUMBER;
14811 l_tmp_amt                     NUMBER;
14812 l_acc_rev_natural_side_code   VARCHAR2(1);
14813 
14814 l_num_entries                 NUMBER;
14815 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14816 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14817 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14818 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14819 l_recog_line_1                NUMBER;
14820 l_recog_line_2                NUMBER;
14821 
14822 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14823 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14824 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14825 
14826 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14827 
14828 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14829 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14830 
14831 ---------------------------------------------------------------------------------------------------------------
14832 
14833 
14834 --
14835 -- bulk performance
14836 --
14837 l_balance_type_code           VARCHAR2(1);
14838 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14839 l_log_module                  VARCHAR2(240);
14840 
14841 --
14842 -- Upgrade strategy
14843 --
14844 l_actual_upg_option           VARCHAR2(1);
14845 l_enc_upg_option           VARCHAR2(1);
14846 
14847 --
14848 BEGIN
14849 --
14850 IF g_log_enabled THEN
14851       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
14852 END IF;
14853 --
14854 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14855 
14856       trace
14857          (p_msg      => 'BEGIN of AcctLineType_31'
14858          ,p_level    => C_LEVEL_PROCEDURE
14859          ,p_module   => l_log_module);
14860 
14861 END IF;
14862 --
14863 l_component_type             := 'AMB_JLT';
14864 l_component_code             := 'REINST_REQ_BURDEND_ENCFORRELDR';
14865 l_component_type_code        := 'S';
14866 l_component_appl_id          :=  201;
14867 l_amb_context_code           := 'DEFAULT';
14868 l_entity_code                := 'RELEASE';
14869 l_event_class_code           := 'RELEASE_BURDEN';
14870 l_event_type_code            := 'RELEASE_BURDEN_ALL';
14871 l_line_definition_owner_code := 'S';
14872 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
14873 --
14874 l_balance_type_code          := 'E';
14875 l_segment                     := NULL;
14876 l_ccid                        := NULL;
14877 l_adr_transaction_coa_id      := NULL;
14878 l_adr_accounting_coa_id       := NULL;
14879 l_adr_flexfield_segment_code  := NULL;
14880 l_adr_flex_value_set_id       := NULL;
14881 l_adr_value_type_code         := NULL;
14882 l_adr_value_combination_id    := NULL;
14883 l_adr_value_segment_code      := NULL;
14884 
14885 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
14886 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
14887 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14888 l_budgetary_control_flag     := 'Y';
14889 
14890 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14891 l_bflow_applied_to_amt       := NULL; -- 5132302
14892 l_entered_amt_idx            := NULL;          -- 4262811
14893 l_accted_amt_idx             := NULL;          -- 4262811
14894 l_acc_rev_flag               := NULL;          -- 4262811
14895 l_accrual_line_num           := NULL;          -- 4262811
14896 l_tmp_amt                    := NULL;          -- 4262811
14897 --
14898  
14899 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14900     l_balance_type_code <> 'B' THEN
14901 IF (NVL(
14902 xla_ae_sources_pkg.GetSystemSourceChar(
14903    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14904  , p_source_type_code      => 'Y'
14905  , p_source_application_id =>  602
14906 ),'
14907 ') =  'REL_BURDEN_UNRESERVED' OR 
14908 NVL(
14909 xla_ae_sources_pkg.GetSystemSourceChar(
14910    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14911  , p_source_type_code      => 'Y'
14912  , p_source_application_id =>  602
14913 ),'
14914 ') =  'REL_BURDEN_INV_CANCELLED' OR 
14915 NVL(
14916 xla_ae_sources_pkg.GetSystemSourceChar(
14917    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14918  , p_source_type_code      => 'Y'
14919  , p_source_application_id =>  602
14920 ),'
14921 ') =  'REL_BURDEN_REJECTED') AND 
14922 NVL(p_source_13,'
14923 ') =  'B_REQ' AND 
14924 (NVL(p_source_14,'
14925 ') =  'N' OR 
14926 NVL(p_source_14,'
14927 ') =  'O') AND 
14928 NVL(p_source_9,'
14929 ') =  'REQ' AND 
14930 NVL(p_source_15,'
14931 ') =  'S'
14932  THEN 
14933 
14934    --
14935    XLA_AE_LINES_PKG.SetNewLine;
14936 
14937    p_balance_type_code          := l_balance_type_code;
14938    -- set the flag so later we will know whether the gain loss line needs to be created
14939    
14940    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14941      p_actual_flag :='A';
14942    END IF;
14943 
14944    --
14945    -- bulk performance
14946    --
14947    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14948                                       p_header_num   => 0); -- 4262811
14949    --
14950    -- set accounting line options
14951    --
14952    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14953            p_natural_side_code          => 'D'
14954          , p_gain_or_loss_flag          => 'N'
14955          , p_gl_transfer_mode_code      => 'S'
14956          , p_acct_entry_type_code       => 'E'
14957          , p_switch_side_flag           => 'N'
14958          , p_merge_duplicate_code       => 'N'
14959          );
14960    --
14961    l_acc_rev_natural_side_code := 'C';  -- 4262811
14962    -- 
14963    --
14964    -- set accounting line type info
14965    --
14966    xla_ae_lines_pkg.SetAcctLineType
14967       (p_component_type             => l_component_type
14968       ,p_event_type_code            => l_event_type_code
14969       ,p_line_definition_owner_code => l_line_definition_owner_code
14970       ,p_line_definition_code       => l_line_definition_code
14971       ,p_accounting_line_code       => l_component_code
14972       ,p_accounting_line_type_code  => l_component_type_code
14973       ,p_accounting_line_appl_id    => l_component_appl_id
14974       ,p_amb_context_code           => l_amb_context_code
14975       ,p_entity_code                => l_entity_code
14976       ,p_event_class_code           => l_event_class_code);
14977    --
14978    -- set accounting class
14979    --
14980    xla_ae_lines_pkg.SetAcctClass(
14981            p_accounting_class_code  => 'REQ_PA_BURDENED'
14982          , p_ae_header_id           => l_ae_header_id
14983          );
14984 
14985    --
14986    -- set rounding class
14987    --
14988    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14989                       'REQ_PA_BURDENED';
14990 
14991    --
14992    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14993    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14994    --
14995    -- bulk performance
14996    --
14997    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14998 
14999    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15000       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15001 
15002    -- 4955764
15003    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15004       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15005 
15006    -- 4458381 Public Sector Enh
15007    
15008    --
15009    -- set accounting attributes for the line type
15010    --
15011    l_entered_amt_idx := 28;
15012    l_accted_amt_idx  := 30;
15013    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15014    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
15015    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
15016    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
15017    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
15018    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
15019    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
15020    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
15021    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
15022    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
15023    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
15024    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
15025    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
15026    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
15027    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
15028    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
15029    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
15030    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
15031    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
15032    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
15033    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
15034    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
15035    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
15036    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
15037    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
15038    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
15039    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
15040    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
15041    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
15042    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
15043    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
15044    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
15045    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
15046    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
15047    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
15048    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
15049    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
15050    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
15051    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
15052    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
15053    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
15054    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
15055    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
15056    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
15057    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
15058    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
15059    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
15060    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
15061    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
15062    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
15063    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
15064    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
15065    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
15066    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
15067    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
15068    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
15069    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
15070    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
15071    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
15072    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
15073    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
15074    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
15075    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
15076    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
15077    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
15078    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
15079    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
15080    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
15081    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
15082    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
15083    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
15084 
15085    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15086    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15087 
15088    ---------------------------------------------------------------------------------------------------------------
15089    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15090    ---------------------------------------------------------------------------------------------------------------
15091    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15092 
15093    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15094    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15095 
15096    IF xla_accounting_cache_pkg.GetValueChar
15097          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15098          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15099    AND l_bflow_method_code = 'PRIOR_ENTRY'
15100 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15101    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15102          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15103        )
15104    THEN
15105          xla_ae_lines_pkg.BflowUpgEntry
15106            (p_business_method_code    => l_bflow_method_code
15107            ,p_business_class_code     => l_bflow_class_code
15108            ,p_balance_type            => l_balance_type_code);
15109    ELSE
15110       NULL;
15111 XLA_AE_LINES_PKG.business_flow_validation(
15112                                 p_business_method_code     => l_bflow_method_code
15113                                ,p_business_class_code      => l_bflow_class_code
15114                                ,p_inherit_description_flag => l_inherit_desc_flag);
15115    END IF;
15116 
15117    --
15118    -- call analytical criteria
15119    --
15120    -- Inherited Analytical Criteria for business flow method of Prior Entry.
15121    --
15122    -- call description
15123    --
15124    
15125 xla_ae_lines_pkg.SetLineDescription(
15126    p_ae_header_id => l_ae_header_id
15127   ,p_description  => Description_2 (
15128      p_application_id         => p_application_id
15129    , p_ae_header_id           => l_ae_header_id 
15130 , p_source_3 => p_source_3
15131 , p_source_4 => p_source_4
15132 , p_source_5 => p_source_5
15133 , p_source_6 => p_source_6
15134    )
15135 );
15136 
15137 
15138    --
15139    -- call ADRs
15140    -- Bug 4922099
15141    --
15142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15143         (NVL(l_actual_upg_option, 'N') = 'O') OR
15144         (NVL(l_enc_upg_option, 'N') = 'O')
15145       )
15146    THEN
15147    NULL;
15148    --
15149    --
15150    
15151    --
15152    --
15153    END IF;
15154    --
15155    -- Bug 4922099
15156    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15157           (NVL(l_enc_upg_option, 'N') = 'O')
15158         ) AND
15159         (l_bflow_method_code = 'PRIOR_ENTRY')
15160       )
15161    THEN
15162       IF
15163       --
15164       1 = 1
15165       --
15166       THEN
15167       xla_accounting_err_pkg.build_message
15168                                     (p_appli_s_name            => 'XLA'
15169                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15170                                     ,p_token_1                 => 'LINE_NUMBER'
15171                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15172                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15173                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15174                                                                              l_component_type
15175                                                                             ,l_component_code
15176                                                                             ,l_component_type_code
15177                                                                             ,l_component_appl_id
15178                                                                             ,l_amb_context_code
15179                                                                             ,l_entity_code
15180                                                                             ,l_event_class_code
15181                                                                            )
15182                                     ,p_token_3                 => 'OWNER'
15183                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15184                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15185                                                                           ,p_lookup_code    => l_component_type_code
15186                                                                          )
15187                                     ,p_token_4                 => 'PRODUCT_NAME'
15188                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15189                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15190                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15191                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15192                                     ,p_ae_header_id            =>  NULL
15193                                        );
15194 
15195         IF (C_LEVEL_ERROR>= g_log_level) THEN
15196                  trace
15197                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15198                       ,p_level    => C_LEVEL_ERROR
15199                       ,p_module   => l_log_module);
15200         END IF;
15201       END IF;
15202    END IF;
15203    --
15204    --
15205    ------------------------------------------------------------------------------------------------
15206    -- 4219869 Business Flow
15207    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15208    -- Prior Entry.  Currently, the following code is always generated.
15209    ------------------------------------------------------------------------------------------------
15210    -- No ValidateCurrentLine for business flow method of Prior Entry
15211 
15212    ------------------------------------------------------------------------------------
15213    -- 4219869 Business Flow
15214    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15215    ------------------------------------------------------------------------------------
15216    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15217 
15218    ----------------------------------------------------------------------------------
15219    -- 4219869 Business Flow
15220    -- Update journal entry status -- Need to generate this within IF <condition>
15221    ----------------------------------------------------------------------------------
15222    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15223          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15224          ,p_balance_type_code => l_balance_type_code
15225          );
15226 
15227    -------------------------------------------------------------------------------------------
15228    -- 4262811 - Generate the Accrual Reversal lines
15229    -------------------------------------------------------------------------------------------
15230    BEGIN
15231       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15232                               (g_array_event(p_event_id).array_value_num('header_index'));
15233       IF l_acc_rev_flag IS NULL THEN
15234          l_acc_rev_flag := 'N';
15235       END IF;
15236    EXCEPTION
15237       WHEN OTHERS THEN
15238          l_acc_rev_flag := 'N';
15239    END;
15240    --
15241    IF (l_acc_rev_flag = 'Y') THEN
15242 
15243        -- 4645092  ------------------------------------------------------------------------------
15244        -- To allow MPA report to determine if it should generate report process
15245        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15246        ------------------------------------------------------------------------------------------
15247 
15248        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15249        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15250 
15251        --
15252        -- Update the line information that should be overwritten
15253        --
15254        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15255                                          p_header_num   => 1);
15256        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15257 
15258        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15259 
15260        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15261           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15262        END IF;
15263 
15264       --
15265       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15266       --
15267       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15268           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15269       ELSE
15270           ---------------------------------------------------------------------------------------------------
15271           -- 4262811a Switch Sign
15272           ---------------------------------------------------------------------------------------------------
15273           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15274           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15275                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15276           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15277                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15278           -- 5132302
15279           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15280                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15281 
15282       END IF;
15283 
15284       -- 4955764
15285       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15286       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15287 
15288 
15289       XLA_AE_LINES_PKG.ValidateCurrentLine;
15290       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15291 
15292       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15293                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15294                ,p_balance_type_code => l_balance_type_code);
15295 
15296    END IF;
15297 
15298    -----------------------------------------------------------------------------------------
15299    -- 4262811 Multiperiod Accounting
15300    -----------------------------------------------------------------------------------------
15301      -- No MPA option is assigned.
15302 
15303 
15304 END IF;
15305 END IF;
15306 --
15307 
15308 --
15309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15310    trace
15311       (p_msg      => 'END of AcctLineType_31'
15312       ,p_level    => C_LEVEL_PROCEDURE
15313       ,p_module   => l_log_module);
15314 END IF;
15315 --
15316 EXCEPTION
15317   WHEN xla_exceptions_pkg.application_exception THEN
15318       RAISE;
15319   WHEN OTHERS THEN
15320        xla_exceptions_pkg.raise_message
15321            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_31');
15322 END AcctLineType_31;
15323 --
15324 
15325 ---------------------------------------
15326 --
15327 -- PRIVATE FUNCTION
15328 --         AcctLineType_32
15329 --
15330 ---------------------------------------
15331 PROCEDURE AcctLineType_32 (
15332   p_application_id        IN NUMBER
15333  ,p_event_id              IN NUMBER
15334  ,p_calculate_acctd_flag  IN VARCHAR2
15335  ,p_calculate_g_l_flag    IN VARCHAR2
15336  ,p_actual_flag           IN OUT VARCHAR2
15337  ,p_balance_type_code     OUT VARCHAR2
15338  ,p_gain_or_loss_ref      OUT VARCHAR2
15339  
15340 --Project Name
15341  , p_source_3            IN VARCHAR2
15342 --Task Name
15343  , p_source_4            IN VARCHAR2
15344 --Project Expenditure Organization Identifier
15345  , p_source_5            IN NUMBER
15346 --Expenditure Type
15347  , p_source_6            IN VARCHAR2
15348 --Document Type
15349  , p_source_9            IN VARCHAR2
15350 --Main Or Backing Code
15351  , p_source_13            IN VARCHAR2
15352 --Burden Record Identifier
15353  , p_source_14            IN VARCHAR2
15354  , p_source_14_meaning    IN VARCHAR2
15355 --Burden Amount Display Method
15356  , p_source_15            IN VARCHAR2
15357 --Accounting Reversal Flag
15358  , p_source_16            IN VARCHAR2
15359 --Allocated to Application Identifier
15360  , p_source_17            IN NUMBER
15361 --Allocated to Distribution Type
15362  , p_source_18            IN VARCHAR2
15363 --Allocated to Entity Code
15364  , p_source_19            IN VARCHAR2
15365 --Allocated to First Distribution Identifier
15366  , p_source_20            IN NUMBER
15367 --Allocated to First System Transaction Identifier
15368  , p_source_21            IN NUMBER
15369 --Allocated to Second Distribution Identifier
15370  , p_source_22            IN VARCHAR2
15371 --PO Distribution Identifier
15372  , p_source_29            IN NUMBER
15373 --Line Type Name
15374  , p_source_30            IN VARCHAR2
15375 --Encumbrance Upgrade Credit Accounting Class
15376  , p_source_31            IN VARCHAR2
15377 --Encumbrance Upgrade Credit Account
15378  , p_source_32            IN NUMBER
15379 --Entered Amount
15380  , p_source_33            IN NUMBER
15381 --Currency Code
15382  , p_source_34            IN VARCHAR2
15383 --Accounted Amount
15384  , p_source_35            IN NUMBER
15385 --Encumbrance Upgrade Debit Accounting Class
15386  , p_source_36            IN VARCHAR2
15387 --Encumbrance Upgrade Debit Account
15388  , p_source_37            IN NUMBER
15389 --Use Encumbrances Upgrade Attributes Flag
15390  , p_source_38            IN VARCHAR2
15391 --Encumbrance Upgrade Credit Encumbrance Type
15392  , p_source_39            IN NUMBER
15393 --Encumbrance Upgrade Debit Encumbrance Type
15394  , p_source_40            IN NUMBER
15395 --Requisition Burden Applied to Application Identifier
15396  , p_source_41            IN NUMBER
15397 --Requisition Distribution Type
15398  , p_source_42            IN VARCHAR2
15399 --Requisition Burden Applied to Entity Code
15400  , p_source_43            IN VARCHAR2
15401 --Requisition Burden Applied to First Distribution Identifier
15402  , p_source_44            IN NUMBER
15403 --Requisition Burden Applied to First System Transaction Identifier
15404  , p_source_45            IN NUMBER
15405 --Requisition Burden Applied to Second Distribution Identifier
15406  , p_source_46            IN VARCHAR2
15407 )
15408 IS
15409 
15410 l_component_type              VARCHAR2(80);
15411 l_component_code              VARCHAR2(30);
15412 l_component_type_code         VARCHAR2(1);
15413 l_component_appl_id           INTEGER;
15414 l_amb_context_code            VARCHAR2(30);
15415 l_entity_code                 VARCHAR2(30);
15416 l_event_class_code            VARCHAR2(30);
15417 l_ae_header_id                NUMBER;
15418 l_event_type_code             VARCHAR2(30);
15419 l_line_definition_code        VARCHAR2(30);
15420 l_line_definition_owner_code  VARCHAR2(1);
15421 --
15422 -- adr variables
15423 l_segment                     VARCHAR2(30);
15424 l_ccid                        NUMBER;
15425 l_adr_transaction_coa_id      NUMBER;
15426 l_adr_accounting_coa_id       NUMBER;
15427 l_adr_flexfield_segment_code  VARCHAR2(30);
15428 l_adr_flex_value_set_id       NUMBER;
15429 l_adr_value_type_code         VARCHAR2(30);
15430 l_adr_value_combination_id    NUMBER;
15431 l_adr_value_segment_code      VARCHAR2(30);
15432 
15433 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15434 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15435 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15436 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15437 
15438 -- 4262811 Variables ------------------------------------------------------------------------------------------
15439 l_entered_amt_idx             NUMBER;
15440 l_accted_amt_idx              NUMBER;
15441 l_acc_rev_flag                VARCHAR2(1);
15442 l_accrual_line_num            NUMBER;
15443 l_tmp_amt                     NUMBER;
15444 l_acc_rev_natural_side_code   VARCHAR2(1);
15445 
15446 l_num_entries                 NUMBER;
15447 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15448 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15449 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15450 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15451 l_recog_line_1                NUMBER;
15452 l_recog_line_2                NUMBER;
15453 
15454 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15455 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15456 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15457 
15458 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15459 
15460 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15461 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15462 
15463 ---------------------------------------------------------------------------------------------------------------
15464 
15465 
15466 --
15467 -- bulk performance
15468 --
15469 l_balance_type_code           VARCHAR2(1);
15470 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15471 l_log_module                  VARCHAR2(240);
15472 
15473 --
15474 -- Upgrade strategy
15475 --
15476 l_actual_upg_option           VARCHAR2(1);
15477 l_enc_upg_option           VARCHAR2(1);
15478 
15479 --
15480 BEGIN
15481 --
15482 IF g_log_enabled THEN
15483       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
15484 END IF;
15485 --
15486 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15487 
15488       trace
15489          (p_msg      => 'BEGIN of AcctLineType_32'
15490          ,p_level    => C_LEVEL_PROCEDURE
15491          ,p_module   => l_log_module);
15492 
15493 END IF;
15494 --
15495 l_component_type             := 'AMB_JLT';
15496 l_component_code             := 'REINST_REQ_BURDEN_ENCFORRELCR';
15497 l_component_type_code        := 'S';
15498 l_component_appl_id          :=  201;
15499 l_amb_context_code           := 'DEFAULT';
15500 l_entity_code                := 'RELEASE';
15501 l_event_class_code           := 'RELEASE_BURDEN';
15502 l_event_type_code            := 'RELEASE_BURDEN_ALL';
15503 l_line_definition_owner_code := 'S';
15504 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
15505 --
15506 l_balance_type_code          := 'E';
15507 l_segment                     := NULL;
15508 l_ccid                        := NULL;
15509 l_adr_transaction_coa_id      := NULL;
15510 l_adr_accounting_coa_id       := NULL;
15511 l_adr_flexfield_segment_code  := NULL;
15512 l_adr_flex_value_set_id       := NULL;
15513 l_adr_value_type_code         := NULL;
15514 l_adr_value_combination_id    := NULL;
15515 l_adr_value_segment_code      := NULL;
15516 
15517 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
15518 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
15519 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15520 l_budgetary_control_flag     := 'Y';
15521 
15522 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15523 l_bflow_applied_to_amt       := NULL; -- 5132302
15524 l_entered_amt_idx            := NULL;          -- 4262811
15525 l_accted_amt_idx             := NULL;          -- 4262811
15526 l_acc_rev_flag               := NULL;          -- 4262811
15527 l_accrual_line_num           := NULL;          -- 4262811
15528 l_tmp_amt                    := NULL;          -- 4262811
15529 --
15530  
15531 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15532     l_balance_type_code <> 'B' THEN
15533 IF (NVL(
15534 xla_ae_sources_pkg.GetSystemSourceChar(
15535    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15536  , p_source_type_code      => 'Y'
15537  , p_source_application_id =>  602
15538 ),'
15539 ') =  'REL_BURDEN_CANCELLED' OR 
15540 NVL(
15541 xla_ae_sources_pkg.GetSystemSourceChar(
15542    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15543  , p_source_type_code      => 'Y'
15544  , p_source_application_id =>  602
15545 ),'
15546 ') =  'REL_BURDEN_CR_MEMO_CANCELLED') AND 
15547 NVL(p_source_13,'
15548 ') =  'B_REQ' AND 
15549 NVL(p_source_14,'
15550 ') =  'O' AND 
15551 NVL(p_source_9,'
15552 ') =  'REQ' AND 
15553 NVL(p_source_15,'
15554 ') =  'D'
15555  THEN 
15556 
15557    --
15558    XLA_AE_LINES_PKG.SetNewLine;
15559 
15560    p_balance_type_code          := l_balance_type_code;
15561    -- set the flag so later we will know whether the gain loss line needs to be created
15562    
15563    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15564      p_actual_flag :='A';
15565    END IF;
15566 
15567    --
15568    -- bulk performance
15569    --
15570    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15571                                       p_header_num   => 0); -- 4262811
15572    --
15573    -- set accounting line options
15574    --
15575    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15576            p_natural_side_code          => 'C'
15577          , p_gain_or_loss_flag          => 'N'
15578          , p_gl_transfer_mode_code      => 'S'
15579          , p_acct_entry_type_code       => 'E'
15580          , p_switch_side_flag           => 'N'
15581          , p_merge_duplicate_code       => 'N'
15582          );
15583    --
15584    l_acc_rev_natural_side_code := 'D';  -- 4262811
15585    -- 
15586    --
15587    -- set accounting line type info
15588    --
15589    xla_ae_lines_pkg.SetAcctLineType
15590       (p_component_type             => l_component_type
15591       ,p_event_type_code            => l_event_type_code
15592       ,p_line_definition_owner_code => l_line_definition_owner_code
15593       ,p_line_definition_code       => l_line_definition_code
15594       ,p_accounting_line_code       => l_component_code
15595       ,p_accounting_line_type_code  => l_component_type_code
15596       ,p_accounting_line_appl_id    => l_component_appl_id
15597       ,p_amb_context_code           => l_amb_context_code
15598       ,p_entity_code                => l_entity_code
15599       ,p_event_class_code           => l_event_class_code);
15600    --
15601    -- set accounting class
15602    --
15603    xla_ae_lines_pkg.SetAcctClass(
15604            p_accounting_class_code  => 'REQ_PA_BURDEN'
15605          , p_ae_header_id           => l_ae_header_id
15606          );
15607 
15608    --
15609    -- set rounding class
15610    --
15611    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15612                       'REQ_PA_BURDEN';
15613 
15614    --
15615    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15616    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15617    --
15618    -- bulk performance
15619    --
15620    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15621 
15622    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15623       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15624 
15625    -- 4955764
15626    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15627       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15628 
15629    -- 4458381 Public Sector Enh
15630    
15631    --
15632    -- set accounting attributes for the line type
15633    --
15634    l_entered_amt_idx := 28;
15635    l_accted_amt_idx  := 30;
15636    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15637    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
15638    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
15639    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
15640    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
15641    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
15642    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
15643    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
15644    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
15645    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
15646    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
15647    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
15648    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
15649    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
15650    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
15651    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
15652    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
15653    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
15654    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
15655    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
15656    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
15657    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
15658    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
15659    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
15660    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
15661    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
15662    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
15663    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
15664    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
15665    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
15666    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
15667    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
15668    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
15669    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
15670    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
15671    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
15672    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
15673    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
15674    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
15675    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
15676    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
15677    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
15678    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
15679    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
15680    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
15681    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
15682    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
15683    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
15684    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
15685    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
15686    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
15687    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
15688    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
15689    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
15690    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
15691    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
15692    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
15693    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
15694    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
15695    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
15696    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
15697    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
15698    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
15699    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
15700    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
15701    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
15702    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
15703    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
15704    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
15705    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
15706    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
15707 
15708    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15709    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15710 
15711    ---------------------------------------------------------------------------------------------------------------
15712    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15713    ---------------------------------------------------------------------------------------------------------------
15714    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15715 
15716    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15717    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15718 
15719    IF xla_accounting_cache_pkg.GetValueChar
15720          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15721          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15722    AND l_bflow_method_code = 'PRIOR_ENTRY'
15723 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15724    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15725          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15726        )
15727    THEN
15728          xla_ae_lines_pkg.BflowUpgEntry
15729            (p_business_method_code    => l_bflow_method_code
15730            ,p_business_class_code     => l_bflow_class_code
15731            ,p_balance_type            => l_balance_type_code);
15732    ELSE
15733       NULL;
15734 XLA_AE_LINES_PKG.business_flow_validation(
15735                                 p_business_method_code     => l_bflow_method_code
15736                                ,p_business_class_code      => l_bflow_class_code
15737                                ,p_inherit_description_flag => l_inherit_desc_flag);
15738    END IF;
15739 
15740    --
15741    -- call analytical criteria
15742    --
15743    -- Inherited Analytical Criteria for business flow method of Prior Entry.
15744    --
15745    -- call description
15746    --
15747    
15748 xla_ae_lines_pkg.SetLineDescription(
15749    p_ae_header_id => l_ae_header_id
15750   ,p_description  => Description_2 (
15751      p_application_id         => p_application_id
15752    , p_ae_header_id           => l_ae_header_id 
15753 , p_source_3 => p_source_3
15754 , p_source_4 => p_source_4
15755 , p_source_5 => p_source_5
15756 , p_source_6 => p_source_6
15757    )
15758 );
15759 
15760 
15761    --
15762    -- call ADRs
15763    -- Bug 4922099
15764    --
15765    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15766         (NVL(l_actual_upg_option, 'N') = 'O') OR
15767         (NVL(l_enc_upg_option, 'N') = 'O')
15768       )
15769    THEN
15770    NULL;
15771    --
15772    --
15773    
15774    --
15775    --
15776    END IF;
15777    --
15778    -- Bug 4922099
15779    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15780           (NVL(l_enc_upg_option, 'N') = 'O')
15781         ) AND
15782         (l_bflow_method_code = 'PRIOR_ENTRY')
15783       )
15784    THEN
15785       IF
15786       --
15787       1 = 1
15788       --
15789       THEN
15790       xla_accounting_err_pkg.build_message
15791                                     (p_appli_s_name            => 'XLA'
15792                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15793                                     ,p_token_1                 => 'LINE_NUMBER'
15794                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15795                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15796                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15797                                                                              l_component_type
15798                                                                             ,l_component_code
15799                                                                             ,l_component_type_code
15800                                                                             ,l_component_appl_id
15801                                                                             ,l_amb_context_code
15802                                                                             ,l_entity_code
15803                                                                             ,l_event_class_code
15804                                                                            )
15805                                     ,p_token_3                 => 'OWNER'
15806                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15807                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15808                                                                           ,p_lookup_code    => l_component_type_code
15809                                                                          )
15810                                     ,p_token_4                 => 'PRODUCT_NAME'
15811                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15812                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15813                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15814                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15815                                     ,p_ae_header_id            =>  NULL
15816                                        );
15817 
15818         IF (C_LEVEL_ERROR>= g_log_level) THEN
15819                  trace
15820                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15821                       ,p_level    => C_LEVEL_ERROR
15822                       ,p_module   => l_log_module);
15823         END IF;
15824       END IF;
15825    END IF;
15826    --
15827    --
15828    ------------------------------------------------------------------------------------------------
15829    -- 4219869 Business Flow
15830    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15831    -- Prior Entry.  Currently, the following code is always generated.
15832    ------------------------------------------------------------------------------------------------
15833    -- No ValidateCurrentLine for business flow method of Prior Entry
15834 
15835    ------------------------------------------------------------------------------------
15836    -- 4219869 Business Flow
15837    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15838    ------------------------------------------------------------------------------------
15839    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15840 
15841    ----------------------------------------------------------------------------------
15842    -- 4219869 Business Flow
15843    -- Update journal entry status -- Need to generate this within IF <condition>
15844    ----------------------------------------------------------------------------------
15845    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15846          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15847          ,p_balance_type_code => l_balance_type_code
15848          );
15849 
15850    -------------------------------------------------------------------------------------------
15851    -- 4262811 - Generate the Accrual Reversal lines
15852    -------------------------------------------------------------------------------------------
15853    BEGIN
15854       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15855                               (g_array_event(p_event_id).array_value_num('header_index'));
15856       IF l_acc_rev_flag IS NULL THEN
15857          l_acc_rev_flag := 'N';
15858       END IF;
15859    EXCEPTION
15860       WHEN OTHERS THEN
15861          l_acc_rev_flag := 'N';
15862    END;
15863    --
15864    IF (l_acc_rev_flag = 'Y') THEN
15865 
15866        -- 4645092  ------------------------------------------------------------------------------
15867        -- To allow MPA report to determine if it should generate report process
15868        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15869        ------------------------------------------------------------------------------------------
15870 
15871        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15872        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15873 
15874        --
15875        -- Update the line information that should be overwritten
15876        --
15877        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15878                                          p_header_num   => 1);
15879        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15880 
15881        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15882 
15883        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15884           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15885        END IF;
15886 
15887       --
15888       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15889       --
15890       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15891           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15892       ELSE
15893           ---------------------------------------------------------------------------------------------------
15894           -- 4262811a Switch Sign
15895           ---------------------------------------------------------------------------------------------------
15896           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15897           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15898                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15899           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15900                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15901           -- 5132302
15902           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15903                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15904 
15905       END IF;
15906 
15907       -- 4955764
15908       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15909       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15910 
15911 
15912       XLA_AE_LINES_PKG.ValidateCurrentLine;
15913       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15914 
15915       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15916                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15917                ,p_balance_type_code => l_balance_type_code);
15918 
15919    END IF;
15920 
15921    -----------------------------------------------------------------------------------------
15922    -- 4262811 Multiperiod Accounting
15923    -----------------------------------------------------------------------------------------
15924      -- No MPA option is assigned.
15925 
15926 
15927 END IF;
15928 END IF;
15929 --
15930 
15931 --
15932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15933    trace
15934       (p_msg      => 'END of AcctLineType_32'
15935       ,p_level    => C_LEVEL_PROCEDURE
15936       ,p_module   => l_log_module);
15937 END IF;
15938 --
15939 EXCEPTION
15940   WHEN xla_exceptions_pkg.application_exception THEN
15941       RAISE;
15942   WHEN OTHERS THEN
15943        xla_exceptions_pkg.raise_message
15944            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_32');
15945 END AcctLineType_32;
15946 --
15947 
15948 ---------------------------------------
15949 --
15950 -- PRIVATE FUNCTION
15951 --         AcctLineType_33
15952 --
15953 ---------------------------------------
15954 PROCEDURE AcctLineType_33 (
15955   p_application_id        IN NUMBER
15956  ,p_event_id              IN NUMBER
15957  ,p_calculate_acctd_flag  IN VARCHAR2
15958  ,p_calculate_g_l_flag    IN VARCHAR2
15959  ,p_actual_flag           IN OUT VARCHAR2
15960  ,p_balance_type_code     OUT VARCHAR2
15961  ,p_gain_or_loss_ref      OUT VARCHAR2
15962  
15963 --Project Name
15964  , p_source_3            IN VARCHAR2
15965 --Task Name
15966  , p_source_4            IN VARCHAR2
15967 --Project Expenditure Organization Identifier
15968  , p_source_5            IN NUMBER
15969 --Expenditure Type
15970  , p_source_6            IN VARCHAR2
15971 --Document Type
15972  , p_source_9            IN VARCHAR2
15973 --Main Or Backing Code
15974  , p_source_13            IN VARCHAR2
15975 --Burden Record Identifier
15976  , p_source_14            IN VARCHAR2
15977  , p_source_14_meaning    IN VARCHAR2
15978 --Burden Amount Display Method
15979  , p_source_15            IN VARCHAR2
15980 --Accounting Reversal Flag
15981  , p_source_16            IN VARCHAR2
15982 --Allocated to Application Identifier
15983  , p_source_17            IN NUMBER
15984 --Allocated to Distribution Type
15985  , p_source_18            IN VARCHAR2
15986 --Allocated to Entity Code
15987  , p_source_19            IN VARCHAR2
15988 --Allocated to First Distribution Identifier
15989  , p_source_20            IN NUMBER
15990 --Allocated to First System Transaction Identifier
15991  , p_source_21            IN NUMBER
15992 --Allocated to Second Distribution Identifier
15993  , p_source_22            IN VARCHAR2
15994 --PO Distribution Identifier
15995  , p_source_29            IN NUMBER
15996 --Line Type Name
15997  , p_source_30            IN VARCHAR2
15998 --Encumbrance Upgrade Credit Accounting Class
15999  , p_source_31            IN VARCHAR2
16000 --Encumbrance Upgrade Credit Account
16001  , p_source_32            IN NUMBER
16002 --Entered Amount
16003  , p_source_33            IN NUMBER
16004 --Currency Code
16005  , p_source_34            IN VARCHAR2
16006 --Accounted Amount
16007  , p_source_35            IN NUMBER
16008 --Encumbrance Upgrade Debit Accounting Class
16009  , p_source_36            IN VARCHAR2
16010 --Encumbrance Upgrade Debit Account
16011  , p_source_37            IN NUMBER
16012 --Use Encumbrances Upgrade Attributes Flag
16013  , p_source_38            IN VARCHAR2
16014 --Encumbrance Upgrade Credit Encumbrance Type
16015  , p_source_39            IN NUMBER
16016 --Encumbrance Upgrade Debit Encumbrance Type
16017  , p_source_40            IN NUMBER
16018 --Requisition Burden Applied to Application Identifier
16019  , p_source_41            IN NUMBER
16020 --Requisition Distribution Type
16021  , p_source_42            IN VARCHAR2
16022 --Requisition Burden Applied to Entity Code
16023  , p_source_43            IN VARCHAR2
16024 --Requisition Burden Applied to First Distribution Identifier
16025  , p_source_44            IN NUMBER
16026 --Requisition Burden Applied to First System Transaction Identifier
16027  , p_source_45            IN NUMBER
16028 --Requisition Burden Applied to Second Distribution Identifier
16029  , p_source_46            IN VARCHAR2
16030 )
16031 IS
16032 
16033 l_component_type              VARCHAR2(80);
16034 l_component_code              VARCHAR2(30);
16035 l_component_type_code         VARCHAR2(1);
16036 l_component_appl_id           INTEGER;
16037 l_amb_context_code            VARCHAR2(30);
16038 l_entity_code                 VARCHAR2(30);
16039 l_event_class_code            VARCHAR2(30);
16040 l_ae_header_id                NUMBER;
16041 l_event_type_code             VARCHAR2(30);
16042 l_line_definition_code        VARCHAR2(30);
16043 l_line_definition_owner_code  VARCHAR2(1);
16044 --
16045 -- adr variables
16046 l_segment                     VARCHAR2(30);
16047 l_ccid                        NUMBER;
16048 l_adr_transaction_coa_id      NUMBER;
16049 l_adr_accounting_coa_id       NUMBER;
16050 l_adr_flexfield_segment_code  VARCHAR2(30);
16051 l_adr_flex_value_set_id       NUMBER;
16052 l_adr_value_type_code         VARCHAR2(30);
16053 l_adr_value_combination_id    NUMBER;
16054 l_adr_value_segment_code      VARCHAR2(30);
16055 
16056 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16057 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16058 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16059 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16060 
16061 -- 4262811 Variables ------------------------------------------------------------------------------------------
16062 l_entered_amt_idx             NUMBER;
16063 l_accted_amt_idx              NUMBER;
16064 l_acc_rev_flag                VARCHAR2(1);
16065 l_accrual_line_num            NUMBER;
16066 l_tmp_amt                     NUMBER;
16067 l_acc_rev_natural_side_code   VARCHAR2(1);
16068 
16069 l_num_entries                 NUMBER;
16070 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16071 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16072 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16073 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16074 l_recog_line_1                NUMBER;
16075 l_recog_line_2                NUMBER;
16076 
16077 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16078 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16079 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16080 
16081 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16082 
16083 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16084 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16085 
16086 ---------------------------------------------------------------------------------------------------------------
16087 
16088 
16089 --
16090 -- bulk performance
16091 --
16092 l_balance_type_code           VARCHAR2(1);
16093 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16094 l_log_module                  VARCHAR2(240);
16095 
16096 --
16097 -- Upgrade strategy
16098 --
16099 l_actual_upg_option           VARCHAR2(1);
16100 l_enc_upg_option           VARCHAR2(1);
16101 
16102 --
16103 BEGIN
16104 --
16105 IF g_log_enabled THEN
16106       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
16107 END IF;
16108 --
16109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16110 
16111       trace
16112          (p_msg      => 'BEGIN of AcctLineType_33'
16113          ,p_level    => C_LEVEL_PROCEDURE
16114          ,p_module   => l_log_module);
16115 
16116 END IF;
16117 --
16118 l_component_type             := 'AMB_JLT';
16119 l_component_code             := 'REINST_REQ_BURDEN_ENCFORRELDR';
16120 l_component_type_code        := 'S';
16121 l_component_appl_id          :=  201;
16122 l_amb_context_code           := 'DEFAULT';
16123 l_entity_code                := 'RELEASE';
16124 l_event_class_code           := 'RELEASE_BURDEN';
16125 l_event_type_code            := 'RELEASE_BURDEN_ALL';
16126 l_line_definition_owner_code := 'S';
16127 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
16128 --
16129 l_balance_type_code          := 'E';
16130 l_segment                     := NULL;
16131 l_ccid                        := NULL;
16132 l_adr_transaction_coa_id      := NULL;
16133 l_adr_accounting_coa_id       := NULL;
16134 l_adr_flexfield_segment_code  := NULL;
16135 l_adr_flex_value_set_id       := NULL;
16136 l_adr_value_type_code         := NULL;
16137 l_adr_value_combination_id    := NULL;
16138 l_adr_value_segment_code      := NULL;
16139 
16140 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
16141 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
16142 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16143 l_budgetary_control_flag     := 'Y';
16144 
16145 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16146 l_bflow_applied_to_amt       := NULL; -- 5132302
16147 l_entered_amt_idx            := NULL;          -- 4262811
16148 l_accted_amt_idx             := NULL;          -- 4262811
16149 l_acc_rev_flag               := NULL;          -- 4262811
16150 l_accrual_line_num           := NULL;          -- 4262811
16151 l_tmp_amt                    := NULL;          -- 4262811
16152 --
16153  
16154 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16155     l_balance_type_code <> 'B' THEN
16156 IF (NVL(
16157 xla_ae_sources_pkg.GetSystemSourceChar(
16158    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16159  , p_source_type_code      => 'Y'
16160  , p_source_application_id =>  602
16161 ),'
16162 ') =  'REL_BURDEN_UNRESERVED' OR 
16163 NVL(
16164 xla_ae_sources_pkg.GetSystemSourceChar(
16165    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16166  , p_source_type_code      => 'Y'
16167  , p_source_application_id =>  602
16168 ),'
16169 ') =  'REL_BURDEN_INV_CANCELLED' OR 
16170 NVL(
16171 xla_ae_sources_pkg.GetSystemSourceChar(
16172    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16173  , p_source_type_code      => 'Y'
16174  , p_source_application_id =>  602
16175 ),'
16176 ') =  'REL_BURDEN_REJECTED') AND 
16177 NVL(p_source_13,'
16178 ') =  'B_REQ' AND 
16179 NVL(p_source_14,'
16180 ') =  'O' AND 
16181 NVL(p_source_9,'
16182 ') =  'REQ' AND 
16183 NVL(p_source_15,'
16184 ') =  'D'
16185  THEN 
16186 
16187    --
16188    XLA_AE_LINES_PKG.SetNewLine;
16189 
16190    p_balance_type_code          := l_balance_type_code;
16191    -- set the flag so later we will know whether the gain loss line needs to be created
16192    
16193    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16194      p_actual_flag :='A';
16195    END IF;
16196 
16197    --
16198    -- bulk performance
16199    --
16200    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16201                                       p_header_num   => 0); -- 4262811
16202    --
16203    -- set accounting line options
16204    --
16205    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16206            p_natural_side_code          => 'D'
16207          , p_gain_or_loss_flag          => 'N'
16208          , p_gl_transfer_mode_code      => 'S'
16209          , p_acct_entry_type_code       => 'E'
16210          , p_switch_side_flag           => 'N'
16211          , p_merge_duplicate_code       => 'N'
16212          );
16213    --
16214    l_acc_rev_natural_side_code := 'C';  -- 4262811
16215    -- 
16216    --
16217    -- set accounting line type info
16218    --
16219    xla_ae_lines_pkg.SetAcctLineType
16220       (p_component_type             => l_component_type
16221       ,p_event_type_code            => l_event_type_code
16222       ,p_line_definition_owner_code => l_line_definition_owner_code
16223       ,p_line_definition_code       => l_line_definition_code
16224       ,p_accounting_line_code       => l_component_code
16225       ,p_accounting_line_type_code  => l_component_type_code
16226       ,p_accounting_line_appl_id    => l_component_appl_id
16227       ,p_amb_context_code           => l_amb_context_code
16228       ,p_entity_code                => l_entity_code
16229       ,p_event_class_code           => l_event_class_code);
16230    --
16231    -- set accounting class
16232    --
16233    xla_ae_lines_pkg.SetAcctClass(
16234            p_accounting_class_code  => 'REQ_PA_BURDEN'
16235          , p_ae_header_id           => l_ae_header_id
16236          );
16237 
16238    --
16239    -- set rounding class
16240    --
16241    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16242                       'REQ_PA_BURDEN';
16243 
16244    --
16245    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16246    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16247    --
16248    -- bulk performance
16249    --
16250    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16251 
16252    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16253       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16254 
16255    -- 4955764
16256    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16257       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16258 
16259    -- 4458381 Public Sector Enh
16260    
16261    --
16262    -- set accounting attributes for the line type
16263    --
16264    l_entered_amt_idx := 28;
16265    l_accted_amt_idx  := 30;
16266    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16267    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16268    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
16269    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
16270    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
16271    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
16272    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
16273    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
16274    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
16275    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
16276    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
16277    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
16278    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
16279    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
16280    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
16281    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
16282    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
16283    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
16284    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
16285    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
16286    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
16287    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
16288    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
16289    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
16290    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
16291    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
16292    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
16293    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
16294    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
16295    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
16296    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
16297    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
16298    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
16299    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
16300    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
16301    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
16302    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
16303    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
16304    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
16305    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
16306    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
16307    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
16308    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
16309    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
16310    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
16311    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
16312    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
16313    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
16314    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
16315    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
16316    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
16317    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
16318    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
16319    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
16320    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
16321    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
16322    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
16323    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
16324    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
16325    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
16326    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
16327    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
16328    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
16329    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
16330    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
16331    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
16332    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
16333    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
16334    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
16335    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
16336    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
16337 
16338    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16339    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16340 
16341    ---------------------------------------------------------------------------------------------------------------
16342    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16343    ---------------------------------------------------------------------------------------------------------------
16344    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16345 
16346    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16347    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16348 
16349    IF xla_accounting_cache_pkg.GetValueChar
16350          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16351          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16352    AND l_bflow_method_code = 'PRIOR_ENTRY'
16353 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16354    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16355          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16356        )
16357    THEN
16358          xla_ae_lines_pkg.BflowUpgEntry
16359            (p_business_method_code    => l_bflow_method_code
16360            ,p_business_class_code     => l_bflow_class_code
16361            ,p_balance_type            => l_balance_type_code);
16362    ELSE
16363       NULL;
16364 XLA_AE_LINES_PKG.business_flow_validation(
16365                                 p_business_method_code     => l_bflow_method_code
16366                                ,p_business_class_code      => l_bflow_class_code
16367                                ,p_inherit_description_flag => l_inherit_desc_flag);
16368    END IF;
16369 
16370    --
16371    -- call analytical criteria
16372    --
16373    -- Inherited Analytical Criteria for business flow method of Prior Entry.
16374    --
16375    -- call description
16376    --
16377    
16378 xla_ae_lines_pkg.SetLineDescription(
16379    p_ae_header_id => l_ae_header_id
16380   ,p_description  => Description_2 (
16381      p_application_id         => p_application_id
16382    , p_ae_header_id           => l_ae_header_id 
16383 , p_source_3 => p_source_3
16384 , p_source_4 => p_source_4
16385 , p_source_5 => p_source_5
16386 , p_source_6 => p_source_6
16387    )
16388 );
16389 
16390 
16391    --
16392    -- call ADRs
16393    -- Bug 4922099
16394    --
16395    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16396         (NVL(l_actual_upg_option, 'N') = 'O') OR
16397         (NVL(l_enc_upg_option, 'N') = 'O')
16398       )
16399    THEN
16400    NULL;
16401    --
16402    --
16403    
16404    --
16405    --
16406    END IF;
16407    --
16408    -- Bug 4922099
16409    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16410           (NVL(l_enc_upg_option, 'N') = 'O')
16411         ) AND
16412         (l_bflow_method_code = 'PRIOR_ENTRY')
16413       )
16414    THEN
16415       IF
16416       --
16417       1 = 1
16418       --
16419       THEN
16420       xla_accounting_err_pkg.build_message
16421                                     (p_appli_s_name            => 'XLA'
16422                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16423                                     ,p_token_1                 => 'LINE_NUMBER'
16424                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16425                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16426                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16427                                                                              l_component_type
16428                                                                             ,l_component_code
16429                                                                             ,l_component_type_code
16430                                                                             ,l_component_appl_id
16431                                                                             ,l_amb_context_code
16432                                                                             ,l_entity_code
16433                                                                             ,l_event_class_code
16434                                                                            )
16435                                     ,p_token_3                 => 'OWNER'
16436                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16437                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16438                                                                           ,p_lookup_code    => l_component_type_code
16439                                                                          )
16440                                     ,p_token_4                 => 'PRODUCT_NAME'
16441                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16442                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16443                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16444                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16445                                     ,p_ae_header_id            =>  NULL
16446                                        );
16447 
16448         IF (C_LEVEL_ERROR>= g_log_level) THEN
16449                  trace
16450                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16451                       ,p_level    => C_LEVEL_ERROR
16452                       ,p_module   => l_log_module);
16453         END IF;
16454       END IF;
16455    END IF;
16456    --
16457    --
16458    ------------------------------------------------------------------------------------------------
16459    -- 4219869 Business Flow
16460    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16461    -- Prior Entry.  Currently, the following code is always generated.
16462    ------------------------------------------------------------------------------------------------
16463    -- No ValidateCurrentLine for business flow method of Prior Entry
16464 
16465    ------------------------------------------------------------------------------------
16466    -- 4219869 Business Flow
16467    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16468    ------------------------------------------------------------------------------------
16469    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16470 
16471    ----------------------------------------------------------------------------------
16472    -- 4219869 Business Flow
16473    -- Update journal entry status -- Need to generate this within IF <condition>
16474    ----------------------------------------------------------------------------------
16475    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16476          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16477          ,p_balance_type_code => l_balance_type_code
16478          );
16479 
16480    -------------------------------------------------------------------------------------------
16481    -- 4262811 - Generate the Accrual Reversal lines
16482    -------------------------------------------------------------------------------------------
16483    BEGIN
16484       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16485                               (g_array_event(p_event_id).array_value_num('header_index'));
16486       IF l_acc_rev_flag IS NULL THEN
16487          l_acc_rev_flag := 'N';
16488       END IF;
16489    EXCEPTION
16490       WHEN OTHERS THEN
16491          l_acc_rev_flag := 'N';
16492    END;
16493    --
16494    IF (l_acc_rev_flag = 'Y') THEN
16495 
16496        -- 4645092  ------------------------------------------------------------------------------
16497        -- To allow MPA report to determine if it should generate report process
16498        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16499        ------------------------------------------------------------------------------------------
16500 
16501        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16502        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16503 
16504        --
16505        -- Update the line information that should be overwritten
16506        --
16507        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16508                                          p_header_num   => 1);
16509        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16510 
16511        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16512 
16513        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16514           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16515        END IF;
16516 
16517       --
16518       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16519       --
16520       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16521           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16522       ELSE
16523           ---------------------------------------------------------------------------------------------------
16524           -- 4262811a Switch Sign
16525           ---------------------------------------------------------------------------------------------------
16526           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16527           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16528                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16529           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16530                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16531           -- 5132302
16532           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16533                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16534 
16535       END IF;
16536 
16537       -- 4955764
16538       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16539       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16540 
16541 
16542       XLA_AE_LINES_PKG.ValidateCurrentLine;
16543       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16544 
16545       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16546                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16547                ,p_balance_type_code => l_balance_type_code);
16548 
16549    END IF;
16550 
16551    -----------------------------------------------------------------------------------------
16552    -- 4262811 Multiperiod Accounting
16553    -----------------------------------------------------------------------------------------
16554      -- No MPA option is assigned.
16555 
16556 
16557 END IF;
16558 END IF;
16559 --
16560 
16561 --
16562 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16563    trace
16564       (p_msg      => 'END of AcctLineType_33'
16565       ,p_level    => C_LEVEL_PROCEDURE
16566       ,p_module   => l_log_module);
16567 END IF;
16568 --
16569 EXCEPTION
16570   WHEN xla_exceptions_pkg.application_exception THEN
16571       RAISE;
16572   WHEN OTHERS THEN
16573        xla_exceptions_pkg.raise_message
16574            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_33');
16575 END AcctLineType_33;
16576 --
16577 
16578 ---------------------------------------
16579 --
16580 -- PRIVATE FUNCTION
16581 --         AcctLineType_34
16582 --
16583 ---------------------------------------
16584 PROCEDURE AcctLineType_34 (
16585   p_application_id        IN NUMBER
16586  ,p_event_id              IN NUMBER
16587  ,p_calculate_acctd_flag  IN VARCHAR2
16588  ,p_calculate_g_l_flag    IN VARCHAR2
16589  ,p_actual_flag           IN OUT VARCHAR2
16590  ,p_balance_type_code     OUT VARCHAR2
16591  ,p_gain_or_loss_ref      OUT VARCHAR2
16592  
16593 --Project Name
16594  , p_source_3            IN VARCHAR2
16595 --Task Name
16596  , p_source_4            IN VARCHAR2
16597 --Project Expenditure Organization Identifier
16598  , p_source_5            IN NUMBER
16599 --Expenditure Type
16600  , p_source_6            IN VARCHAR2
16601 --Document Type
16602  , p_source_9            IN VARCHAR2
16603 --Budget Account
16604  , p_source_11            IN NUMBER
16605 --Main Or Backing Code
16606  , p_source_13            IN VARCHAR2
16607 --Burden Record Identifier
16608  , p_source_14            IN VARCHAR2
16609  , p_source_14_meaning    IN VARCHAR2
16610 --Burden Amount Display Method
16611  , p_source_15            IN VARCHAR2
16612 --Accounting Reversal Flag
16613  , p_source_16            IN VARCHAR2
16614 --Allocated to Application Identifier
16615  , p_source_17            IN NUMBER
16616 --Allocated to Distribution Type
16617  , p_source_18            IN VARCHAR2
16618 --Allocated to Entity Code
16619  , p_source_19            IN VARCHAR2
16620 --Allocated to First Distribution Identifier
16621  , p_source_20            IN NUMBER
16622 --Allocated to First System Transaction Identifier
16623  , p_source_21            IN NUMBER
16624 --PO Distribution Identifier
16625  , p_source_29            IN NUMBER
16626 --Line Type Name
16627  , p_source_30            IN VARCHAR2
16628 --Encumbrance Upgrade Credit Accounting Class
16629  , p_source_31            IN VARCHAR2
16630 --Encumbrance Upgrade Credit Account
16631  , p_source_32            IN NUMBER
16632 --Entered Amount
16633  , p_source_33            IN NUMBER
16634 --Currency Code
16635  , p_source_34            IN VARCHAR2
16636 --Accounted Amount
16637  , p_source_35            IN NUMBER
16638 --Encumbrance Upgrade Debit Accounting Class
16639  , p_source_36            IN VARCHAR2
16640 --Encumbrance Upgrade Debit Account
16641  , p_source_37            IN NUMBER
16642 --Use Encumbrances Upgrade Attributes Flag
16643  , p_source_38            IN VARCHAR2
16644 --Encumbrance Upgrade Credit Encumbrance Type
16645  , p_source_39            IN NUMBER
16646 --Encumbrance Upgrade Debit Encumbrance Type
16647  , p_source_40            IN NUMBER
16648 --Requisition Burden Applied to Application Identifier
16649  , p_source_41            IN NUMBER
16650 --Requisition Distribution Type
16651  , p_source_42            IN VARCHAR2
16652 --Requisition Burden Applied to Entity Code
16653  , p_source_43            IN VARCHAR2
16654 --Requisition Burden Applied to First Distribution Identifier
16655  , p_source_44            IN NUMBER
16656 --Requisition Burden Applied to First System Transaction Identifier
16657  , p_source_45            IN NUMBER
16658 --Requisition Burden Applied to Second Distribution Identifier
16659  , p_source_46            IN VARCHAR2
16660 )
16661 IS
16662 
16663 l_component_type              VARCHAR2(80);
16664 l_component_code              VARCHAR2(30);
16665 l_component_type_code         VARCHAR2(1);
16666 l_component_appl_id           INTEGER;
16667 l_amb_context_code            VARCHAR2(30);
16668 l_entity_code                 VARCHAR2(30);
16669 l_event_class_code            VARCHAR2(30);
16670 l_ae_header_id                NUMBER;
16671 l_event_type_code             VARCHAR2(30);
16672 l_line_definition_code        VARCHAR2(30);
16673 l_line_definition_owner_code  VARCHAR2(1);
16674 --
16675 -- adr variables
16676 l_segment                     VARCHAR2(30);
16677 l_ccid                        NUMBER;
16678 l_adr_transaction_coa_id      NUMBER;
16679 l_adr_accounting_coa_id       NUMBER;
16680 l_adr_flexfield_segment_code  VARCHAR2(30);
16681 l_adr_flex_value_set_id       NUMBER;
16682 l_adr_value_type_code         VARCHAR2(30);
16683 l_adr_value_combination_id    NUMBER;
16684 l_adr_value_segment_code      VARCHAR2(30);
16685 
16686 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16687 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16688 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16689 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16690 
16691 -- 4262811 Variables ------------------------------------------------------------------------------------------
16692 l_entered_amt_idx             NUMBER;
16693 l_accted_amt_idx              NUMBER;
16694 l_acc_rev_flag                VARCHAR2(1);
16695 l_accrual_line_num            NUMBER;
16696 l_tmp_amt                     NUMBER;
16697 l_acc_rev_natural_side_code   VARCHAR2(1);
16698 
16699 l_num_entries                 NUMBER;
16700 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16701 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16702 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16703 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16704 l_recog_line_1                NUMBER;
16705 l_recog_line_2                NUMBER;
16706 
16707 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16708 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16709 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16710 
16711 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16712 
16713 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16714 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16715 
16716 ---------------------------------------------------------------------------------------------------------------
16717 
16718 
16719 --
16720 -- bulk performance
16721 --
16722 l_balance_type_code           VARCHAR2(1);
16723 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16724 l_log_module                  VARCHAR2(240);
16725 
16726 --
16727 -- Upgrade strategy
16728 --
16729 l_actual_upg_option           VARCHAR2(1);
16730 l_enc_upg_option           VARCHAR2(1);
16731 
16732 --
16733 BEGIN
16734 --
16735 IF g_log_enabled THEN
16736       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
16737 END IF;
16738 --
16739 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16740 
16741       trace
16742          (p_msg      => 'BEGIN of AcctLineType_34'
16743          ,p_level    => C_LEVEL_PROCEDURE
16744          ,p_module   => l_log_module);
16745 
16746 END IF;
16747 --
16748 l_component_type             := 'AMB_JLT';
16749 l_component_code             := 'REINST_REQ_BURDEN_ENC_FORPO_CR';
16750 l_component_type_code        := 'S';
16751 l_component_appl_id          :=  201;
16752 l_amb_context_code           := 'DEFAULT';
16753 l_entity_code                := 'PURCHASE_ORDER';
16754 l_event_class_code           := 'PO_BURDEN';
16755 l_event_type_code            := 'PO_BURDEN_ALL';
16756 l_line_definition_owner_code := 'S';
16757 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
16758 --
16759 l_balance_type_code          := 'E';
16760 l_segment                     := NULL;
16761 l_ccid                        := NULL;
16762 l_adr_transaction_coa_id      := NULL;
16763 l_adr_accounting_coa_id       := NULL;
16764 l_adr_flexfield_segment_code  := NULL;
16765 l_adr_flex_value_set_id       := NULL;
16766 l_adr_value_type_code         := NULL;
16767 l_adr_value_combination_id    := NULL;
16768 l_adr_value_segment_code      := NULL;
16769 
16770 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16771 l_bflow_class_code           := '';    -- 4219869 Business Flow
16772 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16773 l_budgetary_control_flag     := 'Y';
16774 
16775 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16776 l_bflow_applied_to_amt       := NULL; -- 5132302
16777 l_entered_amt_idx            := NULL;          -- 4262811
16778 l_accted_amt_idx             := NULL;          -- 4262811
16779 l_acc_rev_flag               := NULL;          -- 4262811
16780 l_accrual_line_num           := NULL;          -- 4262811
16781 l_tmp_amt                    := NULL;          -- 4262811
16782 --
16783  
16784 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16785     l_balance_type_code <> 'B' THEN
16786 IF (NVL(
16787 xla_ae_sources_pkg.GetSystemSourceChar(
16788    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16789  , p_source_type_code      => 'Y'
16790  , p_source_application_id =>  602
16791 ),'
16792 ') =  'PO_BURDEN_CANCELLED' OR 
16793 NVL(
16794 xla_ae_sources_pkg.GetSystemSourceChar(
16795    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16796  , p_source_type_code      => 'Y'
16797  , p_source_application_id =>  602
16798 ),'
16799 ') =  'PO_BURDEN_CR_MEMO_CANCELLED') AND 
16800 NVL(p_source_13,'
16801 ') =  'B_REQ' AND 
16802 NVL(p_source_14,'
16803 ') =  'O' AND 
16804 NVL(p_source_9,'
16805 ') =  'REQ' AND 
16806 NVL(p_source_15,'
16807 ') =  'D'
16808  THEN 
16809 
16810    --
16811    XLA_AE_LINES_PKG.SetNewLine;
16812 
16813    p_balance_type_code          := l_balance_type_code;
16814    -- set the flag so later we will know whether the gain loss line needs to be created
16815    
16816    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16817      p_actual_flag :='A';
16818    END IF;
16819 
16820    --
16821    -- bulk performance
16822    --
16823    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16824                                       p_header_num   => 0); -- 4262811
16825    --
16826    -- set accounting line options
16827    --
16828    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16829            p_natural_side_code          => 'C'
16830          , p_gain_or_loss_flag          => 'N'
16831          , p_gl_transfer_mode_code      => 'S'
16832          , p_acct_entry_type_code       => 'E'
16833          , p_switch_side_flag           => 'N'
16834          , p_merge_duplicate_code       => 'N'
16835          );
16836    --
16837    l_acc_rev_natural_side_code := 'D';  -- 4262811
16838    -- 
16839    --
16840    -- set accounting line type info
16841    --
16842    xla_ae_lines_pkg.SetAcctLineType
16843       (p_component_type             => l_component_type
16844       ,p_event_type_code            => l_event_type_code
16845       ,p_line_definition_owner_code => l_line_definition_owner_code
16846       ,p_line_definition_code       => l_line_definition_code
16847       ,p_accounting_line_code       => l_component_code
16848       ,p_accounting_line_type_code  => l_component_type_code
16849       ,p_accounting_line_appl_id    => l_component_appl_id
16850       ,p_amb_context_code           => l_amb_context_code
16851       ,p_entity_code                => l_entity_code
16852       ,p_event_class_code           => l_event_class_code);
16853    --
16854    -- set accounting class
16855    --
16856    xla_ae_lines_pkg.SetAcctClass(
16857            p_accounting_class_code  => 'REQ_PA_BURDEN'
16858          , p_ae_header_id           => l_ae_header_id
16859          );
16860 
16861    --
16862    -- set rounding class
16863    --
16864    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16865                       'REQ_PA_BURDEN';
16866 
16867    --
16868    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16869    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16870    --
16871    -- bulk performance
16872    --
16873    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16874 
16875    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16876       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16877 
16878    -- 4955764
16879    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16880       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16881 
16882    -- 4458381 Public Sector Enh
16883       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
16884    --
16885    -- set accounting attributes for the line type
16886    --
16887    l_entered_amt_idx := 27;
16888    l_accted_amt_idx  := 29;
16889    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16890    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16891    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
16892    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
16893    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
16894    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
16895    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
16896    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
16897    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
16898    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
16899    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
16900    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
16901    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
16902    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
16903    l_rec_acct_attrs.array_num_value(7)  := p_source_41;
16904    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
16905    l_rec_acct_attrs.array_char_value(8)  := p_source_42;
16906    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
16907    l_rec_acct_attrs.array_char_value(9)  := p_source_43;
16908    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
16909    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_44);
16910    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
16911    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_45);
16912    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
16913    l_rec_acct_attrs.array_char_value(12)  := p_source_46;
16914    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
16915    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
16916    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
16917    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
16918    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
16919    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
16920    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
16921    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
16922    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
16923    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
16924    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
16925    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
16926    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
16927    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
16928    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
16929    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
16930    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
16931    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
16932    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
16933    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
16934    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
16935    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
16936    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
16937    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
16938    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
16939    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
16940    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
16941    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
16942    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
16943    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
16944    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
16945    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
16946    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
16947    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
16948    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
16949    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
16950    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
16951    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
16952    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
16953    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
16954    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
16955    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
16956    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
16957    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
16958 
16959    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16960    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16961 
16962    ---------------------------------------------------------------------------------------------------------------
16963    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16964    ---------------------------------------------------------------------------------------------------------------
16965    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16966 
16967    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16968    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16969 
16970    IF xla_accounting_cache_pkg.GetValueChar
16971          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16972          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16973    AND l_bflow_method_code = 'PRIOR_ENTRY'
16974 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16975    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16976          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16977        )
16978    THEN
16979          xla_ae_lines_pkg.BflowUpgEntry
16980            (p_business_method_code    => l_bflow_method_code
16981            ,p_business_class_code     => l_bflow_class_code
16982            ,p_balance_type            => l_balance_type_code);
16983    ELSE
16984       NULL;
16985 -- No business flow processing for business flow method of NONE.
16986    END IF;
16987 
16988    --
16989    -- call analytical criteria
16990    --
16991    
16992    --
16993    -- call description
16994    --
16995    
16996 xla_ae_lines_pkg.SetLineDescription(
16997    p_ae_header_id => l_ae_header_id
16998   ,p_description  => Description_2 (
16999      p_application_id         => p_application_id
17000    , p_ae_header_id           => l_ae_header_id 
17001 , p_source_3 => p_source_3
17002 , p_source_4 => p_source_4
17003 , p_source_5 => p_source_5
17004 , p_source_6 => p_source_6
17005    )
17006 );
17007 
17008 
17009    --
17010    -- call ADRs
17011    -- Bug 4922099
17012    --
17013    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17014         (NVL(l_actual_upg_option, 'N') = 'O') OR
17015         (NVL(l_enc_upg_option, 'N') = 'O')
17016       )
17017    THEN
17018    NULL;
17019    --
17020    --
17021    
17022   l_ccid := AcctDerRule_7(
17023            p_application_id           => p_application_id
17024          , p_ae_header_id             => l_ae_header_id 
17025 , p_source_11 => p_source_11
17026          , x_transaction_coa_id       => l_adr_transaction_coa_id
17027          , x_accounting_coa_id        => l_adr_accounting_coa_id
17028          , x_value_type_code          => l_adr_value_type_code
17029          , p_side                     => 'NA'
17030    );
17031 
17032    xla_ae_lines_pkg.set_ccid(
17033     p_code_combination_id          => l_ccid
17034   , p_value_type_code              => l_adr_value_type_code
17035   , p_transaction_coa_id           => l_adr_transaction_coa_id
17036   , p_accounting_coa_id            => l_adr_accounting_coa_id
17037   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
17038   , p_adr_type_code                => 'S'
17039   , p_component_type               => l_component_type
17040   , p_component_code               => l_component_code
17041   , p_component_type_code          => l_component_type_code
17042   , p_component_appl_id            => l_component_appl_id
17043   , p_amb_context_code             => l_amb_context_code
17044   , p_side                         => 'NA'
17045   );
17046 
17047 
17048    --
17049    --
17050    END IF;
17051    --
17052    -- Bug 4922099
17053    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17054           (NVL(l_enc_upg_option, 'N') = 'O')
17055         ) AND
17056         (l_bflow_method_code = 'PRIOR_ENTRY')
17057       )
17058    THEN
17059       IF
17060       --
17061       1 = 2
17062       --
17063       THEN
17064       xla_accounting_err_pkg.build_message
17065                                     (p_appli_s_name            => 'XLA'
17066                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17067                                     ,p_token_1                 => 'LINE_NUMBER'
17068                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17069                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17070                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17071                                                                              l_component_type
17072                                                                             ,l_component_code
17073                                                                             ,l_component_type_code
17074                                                                             ,l_component_appl_id
17075                                                                             ,l_amb_context_code
17076                                                                             ,l_entity_code
17077                                                                             ,l_event_class_code
17078                                                                            )
17079                                     ,p_token_3                 => 'OWNER'
17080                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17081                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17082                                                                           ,p_lookup_code    => l_component_type_code
17083                                                                          )
17084                                     ,p_token_4                 => 'PRODUCT_NAME'
17085                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17086                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17087                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17088                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17089                                     ,p_ae_header_id            =>  NULL
17090                                        );
17091 
17092         IF (C_LEVEL_ERROR>= g_log_level) THEN
17093                  trace
17094                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17095                       ,p_level    => C_LEVEL_ERROR
17096                       ,p_module   => l_log_module);
17097         END IF;
17098       END IF;
17099    END IF;
17100    --
17101    --
17102    ------------------------------------------------------------------------------------------------
17103    -- 4219869 Business Flow
17104    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17105    -- Prior Entry.  Currently, the following code is always generated.
17106    ------------------------------------------------------------------------------------------------
17107    XLA_AE_LINES_PKG.ValidateCurrentLine;
17108 
17109    ------------------------------------------------------------------------------------
17110    -- 4219869 Business Flow
17111    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17112    ------------------------------------------------------------------------------------
17113    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17114 
17115    ----------------------------------------------------------------------------------
17116    -- 4219869 Business Flow
17117    -- Update journal entry status -- Need to generate this within IF <condition>
17118    ----------------------------------------------------------------------------------
17119    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17120          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17121          ,p_balance_type_code => l_balance_type_code
17122          );
17123 
17124    -------------------------------------------------------------------------------------------
17125    -- 4262811 - Generate the Accrual Reversal lines
17126    -------------------------------------------------------------------------------------------
17127    BEGIN
17128       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17129                               (g_array_event(p_event_id).array_value_num('header_index'));
17130       IF l_acc_rev_flag IS NULL THEN
17131          l_acc_rev_flag := 'N';
17132       END IF;
17133    EXCEPTION
17134       WHEN OTHERS THEN
17135          l_acc_rev_flag := 'N';
17136    END;
17137    --
17138    IF (l_acc_rev_flag = 'Y') THEN
17139 
17140        -- 4645092  ------------------------------------------------------------------------------
17141        -- To allow MPA report to determine if it should generate report process
17142        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17143        ------------------------------------------------------------------------------------------
17144 
17145        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17146        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17147 
17148        --
17149        -- Update the line information that should be overwritten
17150        --
17151        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17152                                          p_header_num   => 1);
17153        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17154 
17155        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17156 
17157        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17158           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17159        END IF;
17160 
17161       --
17162       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17163       --
17164       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17165           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17166       ELSE
17167           ---------------------------------------------------------------------------------------------------
17168           -- 4262811a Switch Sign
17169           ---------------------------------------------------------------------------------------------------
17170           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17171           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17172                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17173           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17174                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17175           -- 5132302
17176           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17177                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17178 
17179       END IF;
17180 
17181       -- 4955764
17182       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17183       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17184 
17185 
17186       XLA_AE_LINES_PKG.ValidateCurrentLine;
17187       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17188 
17189       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17190                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17191                ,p_balance_type_code => l_balance_type_code);
17192 
17193    END IF;
17194 
17195    -----------------------------------------------------------------------------------------
17196    -- 4262811 Multiperiod Accounting
17197    -----------------------------------------------------------------------------------------
17198      -- No MPA option is assigned.
17199 
17200 
17201 END IF;
17202 END IF;
17203 --
17204 
17205 --
17206 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17207    trace
17208       (p_msg      => 'END of AcctLineType_34'
17209       ,p_level    => C_LEVEL_PROCEDURE
17210       ,p_module   => l_log_module);
17211 END IF;
17212 --
17213 EXCEPTION
17214   WHEN xla_exceptions_pkg.application_exception THEN
17215       RAISE;
17216   WHEN OTHERS THEN
17217        xla_exceptions_pkg.raise_message
17218            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_34');
17219 END AcctLineType_34;
17220 --
17221 
17222 ---------------------------------------
17223 --
17224 -- PRIVATE FUNCTION
17225 --         AcctLineType_35
17226 --
17227 ---------------------------------------
17228 PROCEDURE AcctLineType_35 (
17229   p_application_id        IN NUMBER
17230  ,p_event_id              IN NUMBER
17231  ,p_calculate_acctd_flag  IN VARCHAR2
17232  ,p_calculate_g_l_flag    IN VARCHAR2
17233  ,p_actual_flag           IN OUT VARCHAR2
17234  ,p_balance_type_code     OUT VARCHAR2
17235  ,p_gain_or_loss_ref      OUT VARCHAR2
17236  
17237 --Project Name
17238  , p_source_3            IN VARCHAR2
17239 --Task Name
17240  , p_source_4            IN VARCHAR2
17241 --Project Expenditure Organization Identifier
17242  , p_source_5            IN NUMBER
17243 --Expenditure Type
17244  , p_source_6            IN VARCHAR2
17245 --Document Type
17246  , p_source_9            IN VARCHAR2
17247 --Main Or Backing Code
17248  , p_source_13            IN VARCHAR2
17249 --Burden Record Identifier
17250  , p_source_14            IN VARCHAR2
17251  , p_source_14_meaning    IN VARCHAR2
17252 --Burden Amount Display Method
17253  , p_source_15            IN VARCHAR2
17254 --Accounting Reversal Flag
17255  , p_source_16            IN VARCHAR2
17256 --Allocated to Application Identifier
17257  , p_source_17            IN NUMBER
17258 --Allocated to Distribution Type
17259  , p_source_18            IN VARCHAR2
17260 --Allocated to Entity Code
17261  , p_source_19            IN VARCHAR2
17262 --Allocated to First Distribution Identifier
17263  , p_source_20            IN NUMBER
17264 --Allocated to First System Transaction Identifier
17265  , p_source_21            IN NUMBER
17266 --PO Distribution Identifier
17267  , p_source_29            IN NUMBER
17268 --Line Type Name
17269  , p_source_30            IN VARCHAR2
17270 --Encumbrance Upgrade Credit Accounting Class
17271  , p_source_31            IN VARCHAR2
17272 --Encumbrance Upgrade Credit Account
17273  , p_source_32            IN NUMBER
17274 --Entered Amount
17275  , p_source_33            IN NUMBER
17276 --Currency Code
17277  , p_source_34            IN VARCHAR2
17278 --Accounted Amount
17279  , p_source_35            IN NUMBER
17280 --Encumbrance Upgrade Debit Accounting Class
17281  , p_source_36            IN VARCHAR2
17282 --Encumbrance Upgrade Debit Account
17283  , p_source_37            IN NUMBER
17284 --Use Encumbrances Upgrade Attributes Flag
17285  , p_source_38            IN VARCHAR2
17286 --Encumbrance Upgrade Credit Encumbrance Type
17287  , p_source_39            IN NUMBER
17288 --Encumbrance Upgrade Debit Encumbrance Type
17289  , p_source_40            IN NUMBER
17290 --Requisition Burden Applied to Application Identifier
17291  , p_source_41            IN NUMBER
17292 --Requisition Distribution Type
17293  , p_source_42            IN VARCHAR2
17294 --Requisition Burden Applied to Entity Code
17295  , p_source_43            IN VARCHAR2
17296 --Requisition Burden Applied to First Distribution Identifier
17297  , p_source_44            IN NUMBER
17298 --Requisition Burden Applied to First System Transaction Identifier
17299  , p_source_45            IN NUMBER
17300 --Requisition Burden Applied to Second Distribution Identifier
17301  , p_source_46            IN VARCHAR2
17302 --Backing Requisition Prevent Encumbrance Flag Flipped
17303  , p_source_67            IN VARCHAR2
17304 )
17305 IS
17306 
17307 l_component_type              VARCHAR2(80);
17308 l_component_code              VARCHAR2(30);
17309 l_component_type_code         VARCHAR2(1);
17310 l_component_appl_id           INTEGER;
17311 l_amb_context_code            VARCHAR2(30);
17312 l_entity_code                 VARCHAR2(30);
17313 l_event_class_code            VARCHAR2(30);
17314 l_ae_header_id                NUMBER;
17315 l_event_type_code             VARCHAR2(30);
17316 l_line_definition_code        VARCHAR2(30);
17317 l_line_definition_owner_code  VARCHAR2(1);
17318 --
17319 -- adr variables
17320 l_segment                     VARCHAR2(30);
17321 l_ccid                        NUMBER;
17322 l_adr_transaction_coa_id      NUMBER;
17323 l_adr_accounting_coa_id       NUMBER;
17324 l_adr_flexfield_segment_code  VARCHAR2(30);
17325 l_adr_flex_value_set_id       NUMBER;
17326 l_adr_value_type_code         VARCHAR2(30);
17327 l_adr_value_combination_id    NUMBER;
17328 l_adr_value_segment_code      VARCHAR2(30);
17329 
17330 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17331 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17332 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17333 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17334 
17335 -- 4262811 Variables ------------------------------------------------------------------------------------------
17336 l_entered_amt_idx             NUMBER;
17337 l_accted_amt_idx              NUMBER;
17338 l_acc_rev_flag                VARCHAR2(1);
17339 l_accrual_line_num            NUMBER;
17340 l_tmp_amt                     NUMBER;
17341 l_acc_rev_natural_side_code   VARCHAR2(1);
17342 
17343 l_num_entries                 NUMBER;
17344 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17345 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17346 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17347 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17348 l_recog_line_1                NUMBER;
17349 l_recog_line_2                NUMBER;
17350 
17351 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17352 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17353 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17354 
17355 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17356 
17357 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17358 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17359 
17360 ---------------------------------------------------------------------------------------------------------------
17361 
17362 
17363 --
17364 -- bulk performance
17365 --
17366 l_balance_type_code           VARCHAR2(1);
17367 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17368 l_log_module                  VARCHAR2(240);
17369 
17370 --
17371 -- Upgrade strategy
17372 --
17373 l_actual_upg_option           VARCHAR2(1);
17374 l_enc_upg_option           VARCHAR2(1);
17375 
17376 --
17377 BEGIN
17378 --
17379 IF g_log_enabled THEN
17380       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
17381 END IF;
17382 --
17383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17384 
17385       trace
17386          (p_msg      => 'BEGIN of AcctLineType_35'
17387          ,p_level    => C_LEVEL_PROCEDURE
17388          ,p_module   => l_log_module);
17389 
17390 END IF;
17391 --
17392 l_component_type             := 'AMB_JLT';
17393 l_component_code             := 'REINST_REQ_BURDEN_ENC_FORPO_DR';
17394 l_component_type_code        := 'S';
17395 l_component_appl_id          :=  201;
17396 l_amb_context_code           := 'DEFAULT';
17397 l_entity_code                := 'PURCHASE_ORDER';
17398 l_event_class_code           := 'PO_BURDEN';
17399 l_event_type_code            := 'PO_BURDEN_ALL';
17400 l_line_definition_owner_code := 'S';
17401 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
17402 --
17403 l_balance_type_code          := 'E';
17404 l_segment                     := NULL;
17405 l_ccid                        := NULL;
17406 l_adr_transaction_coa_id      := NULL;
17407 l_adr_accounting_coa_id       := NULL;
17408 l_adr_flexfield_segment_code  := NULL;
17409 l_adr_flex_value_set_id       := NULL;
17410 l_adr_value_type_code         := NULL;
17411 l_adr_value_combination_id    := NULL;
17412 l_adr_value_segment_code      := NULL;
17413 
17414 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
17415 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
17416 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17417 l_budgetary_control_flag     := 'Y';
17418 
17419 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17420 l_bflow_applied_to_amt       := NULL; -- 5132302
17421 l_entered_amt_idx            := NULL;          -- 4262811
17422 l_accted_amt_idx             := NULL;          -- 4262811
17423 l_acc_rev_flag               := NULL;          -- 4262811
17424 l_accrual_line_num           := NULL;          -- 4262811
17425 l_tmp_amt                    := NULL;          -- 4262811
17426 --
17427  
17428 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17429     l_balance_type_code <> 'B' THEN
17430 IF (NVL(
17431 xla_ae_sources_pkg.GetSystemSourceChar(
17432    p_source_code           => 'XLA_EVENT_TYPE_CODE'
17433  , p_source_type_code      => 'Y'
17434  , p_source_application_id =>  602
17435 ),'
17436 ') =  'PO_BURDEN_UNRESERVED' OR 
17437 NVL(
17438 xla_ae_sources_pkg.GetSystemSourceChar(
17439    p_source_code           => 'XLA_EVENT_TYPE_CODE'
17440  , p_source_type_code      => 'Y'
17441  , p_source_application_id =>  602
17442 ),'
17443 ') =  'PO_BURDEN_INV_CANCELLED' OR 
17444 NVL(
17445 xla_ae_sources_pkg.GetSystemSourceChar(
17446    p_source_code           => 'XLA_EVENT_TYPE_CODE'
17447  , p_source_type_code      => 'Y'
17448  , p_source_application_id =>  602
17449 ),'
17450 ') =  'PO_BURDEN_REJECTED') AND 
17451 NVL(p_source_13,'
17452 ') =  'B_REQ' AND 
17453 NVL(p_source_14,'
17454 ') =  'O' AND 
17455 NVL(p_source_9,'
17456 ') =  'REQ' AND 
17457 NVL(p_source_15,'
17458 ') =  'D' AND 
17459 NVL(p_source_67,'
17460 ') <>  'Y'
17461  THEN 
17462 
17463    --
17464    XLA_AE_LINES_PKG.SetNewLine;
17465 
17466    p_balance_type_code          := l_balance_type_code;
17467    -- set the flag so later we will know whether the gain loss line needs to be created
17468    
17469    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17470      p_actual_flag :='A';
17471    END IF;
17472 
17473    --
17474    -- bulk performance
17475    --
17476    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17477                                       p_header_num   => 0); -- 4262811
17478    --
17479    -- set accounting line options
17480    --
17481    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17482            p_natural_side_code          => 'D'
17483          , p_gain_or_loss_flag          => 'N'
17484          , p_gl_transfer_mode_code      => 'S'
17485          , p_acct_entry_type_code       => 'E'
17486          , p_switch_side_flag           => 'N'
17487          , p_merge_duplicate_code       => 'N'
17488          );
17489    --
17490    l_acc_rev_natural_side_code := 'C';  -- 4262811
17491    -- 
17492    --
17493    -- set accounting line type info
17494    --
17495    xla_ae_lines_pkg.SetAcctLineType
17496       (p_component_type             => l_component_type
17497       ,p_event_type_code            => l_event_type_code
17498       ,p_line_definition_owner_code => l_line_definition_owner_code
17499       ,p_line_definition_code       => l_line_definition_code
17500       ,p_accounting_line_code       => l_component_code
17501       ,p_accounting_line_type_code  => l_component_type_code
17502       ,p_accounting_line_appl_id    => l_component_appl_id
17503       ,p_amb_context_code           => l_amb_context_code
17504       ,p_entity_code                => l_entity_code
17505       ,p_event_class_code           => l_event_class_code);
17506    --
17507    -- set accounting class
17508    --
17509    xla_ae_lines_pkg.SetAcctClass(
17510            p_accounting_class_code  => 'REQ_PA_BURDEN'
17511          , p_ae_header_id           => l_ae_header_id
17512          );
17513 
17514    --
17515    -- set rounding class
17516    --
17517    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17518                       'REQ_PA_BURDEN';
17519 
17520    --
17521    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17522    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17523    --
17524    -- bulk performance
17525    --
17526    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17527 
17528    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17529       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17530 
17531    -- 4955764
17532    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17533       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17534 
17535    -- 4458381 Public Sector Enh
17536    
17537    --
17538    -- set accounting attributes for the line type
17539    --
17540    l_entered_amt_idx := 27;
17541    l_accted_amt_idx  := 29;
17542    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17543    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
17544    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
17545    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
17546    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
17547    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
17548    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
17549    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
17550    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
17551    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
17552    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
17553    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
17554    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
17555    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
17556    l_rec_acct_attrs.array_num_value(7)  := p_source_41;
17557    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
17558    l_rec_acct_attrs.array_char_value(8)  := p_source_42;
17559    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
17560    l_rec_acct_attrs.array_char_value(9)  := p_source_43;
17561    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
17562    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_44);
17563    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
17564    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_45);
17565    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
17566    l_rec_acct_attrs.array_char_value(12)  := p_source_46;
17567    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
17568    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
17569    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
17570    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
17571    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
17572    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
17573    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
17574    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
17575    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
17576    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
17577    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
17578    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
17579    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
17580    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
17581    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
17582    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
17583    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
17584    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
17585    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
17586    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
17587    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
17588    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
17589    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
17590    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
17591    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
17592    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
17593    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
17594    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
17595    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
17596    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
17597    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
17598    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
17599    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
17600    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
17601    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
17602    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
17603    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
17604    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
17605    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
17606    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
17607    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
17608    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
17609    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
17610    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
17611 
17612    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17613    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17614 
17615    ---------------------------------------------------------------------------------------------------------------
17616    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17617    ---------------------------------------------------------------------------------------------------------------
17618    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17619 
17620    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17621    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17622 
17623    IF xla_accounting_cache_pkg.GetValueChar
17624          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17625          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17626    AND l_bflow_method_code = 'PRIOR_ENTRY'
17627 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17628    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17629          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17630        )
17631    THEN
17632          xla_ae_lines_pkg.BflowUpgEntry
17633            (p_business_method_code    => l_bflow_method_code
17634            ,p_business_class_code     => l_bflow_class_code
17635            ,p_balance_type            => l_balance_type_code);
17636    ELSE
17637       NULL;
17638 XLA_AE_LINES_PKG.business_flow_validation(
17639                                 p_business_method_code     => l_bflow_method_code
17640                                ,p_business_class_code      => l_bflow_class_code
17641                                ,p_inherit_description_flag => l_inherit_desc_flag);
17642    END IF;
17643 
17644    --
17645    -- call analytical criteria
17646    --
17647    -- Inherited Analytical Criteria for business flow method of Prior Entry.
17648    --
17649    -- call description
17650    --
17651    
17652 xla_ae_lines_pkg.SetLineDescription(
17653    p_ae_header_id => l_ae_header_id
17654   ,p_description  => Description_2 (
17655      p_application_id         => p_application_id
17656    , p_ae_header_id           => l_ae_header_id 
17657 , p_source_3 => p_source_3
17658 , p_source_4 => p_source_4
17659 , p_source_5 => p_source_5
17660 , p_source_6 => p_source_6
17661    )
17662 );
17663 
17664 
17665    --
17666    -- call ADRs
17667    -- Bug 4922099
17668    --
17669    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17670         (NVL(l_actual_upg_option, 'N') = 'O') OR
17671         (NVL(l_enc_upg_option, 'N') = 'O')
17672       )
17673    THEN
17674    NULL;
17675    --
17676    --
17677    
17678    --
17679    --
17680    END IF;
17681    --
17682    -- Bug 4922099
17683    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17684           (NVL(l_enc_upg_option, 'N') = 'O')
17685         ) AND
17686         (l_bflow_method_code = 'PRIOR_ENTRY')
17687       )
17688    THEN
17689       IF
17690       --
17691       1 = 1
17692       --
17693       THEN
17694       xla_accounting_err_pkg.build_message
17695                                     (p_appli_s_name            => 'XLA'
17696                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17697                                     ,p_token_1                 => 'LINE_NUMBER'
17698                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17699                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17700                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17701                                                                              l_component_type
17702                                                                             ,l_component_code
17703                                                                             ,l_component_type_code
17704                                                                             ,l_component_appl_id
17705                                                                             ,l_amb_context_code
17706                                                                             ,l_entity_code
17707                                                                             ,l_event_class_code
17708                                                                            )
17709                                     ,p_token_3                 => 'OWNER'
17710                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17711                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17712                                                                           ,p_lookup_code    => l_component_type_code
17713                                                                          )
17714                                     ,p_token_4                 => 'PRODUCT_NAME'
17715                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17716                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17717                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17718                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17719                                     ,p_ae_header_id            =>  NULL
17720                                        );
17721 
17722         IF (C_LEVEL_ERROR>= g_log_level) THEN
17723                  trace
17724                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17725                       ,p_level    => C_LEVEL_ERROR
17726                       ,p_module   => l_log_module);
17727         END IF;
17728       END IF;
17729    END IF;
17730    --
17731    --
17732    ------------------------------------------------------------------------------------------------
17733    -- 4219869 Business Flow
17734    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17735    -- Prior Entry.  Currently, the following code is always generated.
17736    ------------------------------------------------------------------------------------------------
17737    -- No ValidateCurrentLine for business flow method of Prior Entry
17738 
17739    ------------------------------------------------------------------------------------
17740    -- 4219869 Business Flow
17741    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17742    ------------------------------------------------------------------------------------
17743    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17744 
17745    ----------------------------------------------------------------------------------
17746    -- 4219869 Business Flow
17747    -- Update journal entry status -- Need to generate this within IF <condition>
17748    ----------------------------------------------------------------------------------
17749    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17750          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17751          ,p_balance_type_code => l_balance_type_code
17752          );
17753 
17754    -------------------------------------------------------------------------------------------
17755    -- 4262811 - Generate the Accrual Reversal lines
17756    -------------------------------------------------------------------------------------------
17757    BEGIN
17758       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17759                               (g_array_event(p_event_id).array_value_num('header_index'));
17760       IF l_acc_rev_flag IS NULL THEN
17761          l_acc_rev_flag := 'N';
17762       END IF;
17763    EXCEPTION
17764       WHEN OTHERS THEN
17765          l_acc_rev_flag := 'N';
17766    END;
17767    --
17768    IF (l_acc_rev_flag = 'Y') THEN
17769 
17770        -- 4645092  ------------------------------------------------------------------------------
17771        -- To allow MPA report to determine if it should generate report process
17772        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17773        ------------------------------------------------------------------------------------------
17774 
17775        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17776        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17777 
17778        --
17779        -- Update the line information that should be overwritten
17780        --
17781        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17782                                          p_header_num   => 1);
17783        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17784 
17785        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17786 
17787        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17788           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17789        END IF;
17790 
17791       --
17792       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17793       --
17794       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17795           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17796       ELSE
17797           ---------------------------------------------------------------------------------------------------
17798           -- 4262811a Switch Sign
17799           ---------------------------------------------------------------------------------------------------
17800           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17801           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17802                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17803           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17804                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17805           -- 5132302
17806           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17807                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17808 
17809       END IF;
17810 
17811       -- 4955764
17812       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17813       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17814 
17815 
17816       XLA_AE_LINES_PKG.ValidateCurrentLine;
17817       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17818 
17819       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17820                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17821                ,p_balance_type_code => l_balance_type_code);
17822 
17823    END IF;
17824 
17825    -----------------------------------------------------------------------------------------
17826    -- 4262811 Multiperiod Accounting
17827    -----------------------------------------------------------------------------------------
17828      -- No MPA option is assigned.
17829 
17830 
17831 END IF;
17832 END IF;
17833 --
17834 
17835 --
17836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17837    trace
17838       (p_msg      => 'END of AcctLineType_35'
17839       ,p_level    => C_LEVEL_PROCEDURE
17840       ,p_module   => l_log_module);
17841 END IF;
17842 --
17843 EXCEPTION
17844   WHEN xla_exceptions_pkg.application_exception THEN
17845       RAISE;
17846   WHEN OTHERS THEN
17847        xla_exceptions_pkg.raise_message
17848            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_35');
17849 END AcctLineType_35;
17850 --
17851 
17852 ---------------------------------------
17853 --
17854 -- PRIVATE FUNCTION
17855 --         AcctLineType_36
17856 --
17857 ---------------------------------------
17858 PROCEDURE AcctLineType_36 (
17859   p_application_id        IN NUMBER
17860  ,p_event_id              IN NUMBER
17861  ,p_calculate_acctd_flag  IN VARCHAR2
17862  ,p_calculate_g_l_flag    IN VARCHAR2
17863  ,p_actual_flag           IN OUT VARCHAR2
17864  ,p_balance_type_code     OUT VARCHAR2
17865  ,p_gain_or_loss_ref      OUT VARCHAR2
17866  
17867 --Project Name
17868  , p_source_3            IN VARCHAR2
17869 --Task Name
17870  , p_source_4            IN VARCHAR2
17871 --Project Expenditure Organization Identifier
17872  , p_source_5            IN NUMBER
17873 --Expenditure Type
17874  , p_source_6            IN VARCHAR2
17875 --Document Type
17876  , p_source_9            IN VARCHAR2
17877 --Budget Account
17878  , p_source_11            IN NUMBER
17879 --Main Or Backing Code
17880  , p_source_13            IN VARCHAR2
17881 --Burden Record Identifier
17882  , p_source_14            IN VARCHAR2
17883  , p_source_14_meaning    IN VARCHAR2
17884 --Burden Amount Display Method
17885  , p_source_15            IN VARCHAR2
17886 --Accounting Reversal Flag
17887  , p_source_16            IN VARCHAR2
17888 --Allocated to Application Identifier
17889  , p_source_17            IN NUMBER
17890 --Allocated to Distribution Type
17891  , p_source_18            IN VARCHAR2
17892 --Allocated to Entity Code
17893  , p_source_19            IN VARCHAR2
17894 --Allocated to First Distribution Identifier
17895  , p_source_20            IN NUMBER
17896 --Allocated to First System Transaction Identifier
17897  , p_source_21            IN NUMBER
17898 --Purchase Order Burden Applied to Application Identifier
17899  , p_source_23            IN NUMBER
17900 --PO Distribution Type
17901  , p_source_24            IN VARCHAR2
17902 --Purchase Order Burden Applied to Entity Code
17903  , p_source_25            IN VARCHAR2
17904 --Purchase Order Burden Applied to First Distribution Identifier
17905  , p_source_26            IN NUMBER
17906 --Purchase Order Burden Applied to First System Transaction Identifier
17907  , p_source_27            IN NUMBER
17908 --Purchase Order Burden Applied to Second Distribution Identifier
17909  , p_source_28            IN VARCHAR2
17910 --PO Distribution Identifier
17911  , p_source_29            IN NUMBER
17912 --Line Type Name
17913  , p_source_30            IN VARCHAR2
17914 --Encumbrance Upgrade Credit Accounting Class
17915  , p_source_31            IN VARCHAR2
17916 --Encumbrance Upgrade Credit Account
17917  , p_source_32            IN NUMBER
17918 --Entered Amount
17919  , p_source_33            IN NUMBER
17920 --Currency Code
17921  , p_source_34            IN VARCHAR2
17922 --Accounted Amount
17923  , p_source_35            IN NUMBER
17924 --Encumbrance Upgrade Debit Accounting Class
17925  , p_source_36            IN VARCHAR2
17926 --Encumbrance Upgrade Debit Account
17927  , p_source_37            IN NUMBER
17928 --Use Encumbrances Upgrade Attributes Flag
17929  , p_source_38            IN VARCHAR2
17930 --Encumbrance Upgrade Credit Encumbrance Type
17931  , p_source_39            IN NUMBER
17932 --Encumbrance Upgrade Debit Encumbrance Type
17933  , p_source_40            IN NUMBER
17934 --Backing Requisition Prevent Encumbrance Flag Flipped
17935  , p_source_67            IN VARCHAR2
17936 )
17937 IS
17938 
17939 l_component_type              VARCHAR2(80);
17940 l_component_code              VARCHAR2(30);
17941 l_component_type_code         VARCHAR2(1);
17942 l_component_appl_id           INTEGER;
17943 l_amb_context_code            VARCHAR2(30);
17944 l_entity_code                 VARCHAR2(30);
17945 l_event_class_code            VARCHAR2(30);
17946 l_ae_header_id                NUMBER;
17947 l_event_type_code             VARCHAR2(30);
17948 l_line_definition_code        VARCHAR2(30);
17949 l_line_definition_owner_code  VARCHAR2(1);
17950 --
17951 -- adr variables
17952 l_segment                     VARCHAR2(30);
17953 l_ccid                        NUMBER;
17954 l_adr_transaction_coa_id      NUMBER;
17955 l_adr_accounting_coa_id       NUMBER;
17956 l_adr_flexfield_segment_code  VARCHAR2(30);
17957 l_adr_flex_value_set_id       NUMBER;
17958 l_adr_value_type_code         VARCHAR2(30);
17959 l_adr_value_combination_id    NUMBER;
17960 l_adr_value_segment_code      VARCHAR2(30);
17961 
17962 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17963 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17964 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17965 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17966 
17967 -- 4262811 Variables ------------------------------------------------------------------------------------------
17968 l_entered_amt_idx             NUMBER;
17969 l_accted_amt_idx              NUMBER;
17970 l_acc_rev_flag                VARCHAR2(1);
17971 l_accrual_line_num            NUMBER;
17972 l_tmp_amt                     NUMBER;
17973 l_acc_rev_natural_side_code   VARCHAR2(1);
17974 
17975 l_num_entries                 NUMBER;
17976 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17977 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17978 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17979 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17980 l_recog_line_1                NUMBER;
17981 l_recog_line_2                NUMBER;
17982 
17983 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17984 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17985 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17986 
17987 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17988 
17989 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17990 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17991 
17992 ---------------------------------------------------------------------------------------------------------------
17993 
17994 
17995 --
17996 -- bulk performance
17997 --
17998 l_balance_type_code           VARCHAR2(1);
17999 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18000 l_log_module                  VARCHAR2(240);
18001 
18002 --
18003 -- Upgrade strategy
18004 --
18005 l_actual_upg_option           VARCHAR2(1);
18006 l_enc_upg_option           VARCHAR2(1);
18007 
18008 --
18009 BEGIN
18010 --
18011 IF g_log_enabled THEN
18012       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
18013 END IF;
18014 --
18015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18016 
18017       trace
18018          (p_msg      => 'BEGIN of AcctLineType_36'
18019          ,p_level    => C_LEVEL_PROCEDURE
18020          ,p_module   => l_log_module);
18021 
18022 END IF;
18023 --
18024 l_component_type             := 'AMB_JLT';
18025 l_component_code             := 'REINST_UNENC_BURDEND_REQFORPO';
18026 l_component_type_code        := 'S';
18027 l_component_appl_id          :=  201;
18028 l_amb_context_code           := 'DEFAULT';
18029 l_entity_code                := 'PURCHASE_ORDER';
18030 l_event_class_code           := 'PO_BURDEN';
18031 l_event_type_code            := 'PO_BURDEN_ALL';
18032 l_line_definition_owner_code := 'S';
18033 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
18034 --
18035 l_balance_type_code          := 'E';
18036 l_segment                     := NULL;
18037 l_ccid                        := NULL;
18038 l_adr_transaction_coa_id      := NULL;
18039 l_adr_accounting_coa_id       := NULL;
18040 l_adr_flexfield_segment_code  := NULL;
18041 l_adr_flex_value_set_id       := NULL;
18042 l_adr_value_type_code         := NULL;
18043 l_adr_value_combination_id    := NULL;
18044 l_adr_value_segment_code      := NULL;
18045 
18046 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18047 l_bflow_class_code           := '';    -- 4219869 Business Flow
18048 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18049 l_budgetary_control_flag     := 'Y';
18050 
18051 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18052 l_bflow_applied_to_amt       := NULL; -- 5132302
18053 l_entered_amt_idx            := NULL;          -- 4262811
18054 l_accted_amt_idx             := NULL;          -- 4262811
18055 l_acc_rev_flag               := NULL;          -- 4262811
18056 l_accrual_line_num           := NULL;          -- 4262811
18057 l_tmp_amt                    := NULL;          -- 4262811
18058 --
18059  
18060 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18061     l_balance_type_code <> 'B' THEN
18062 IF (NVL(
18063 xla_ae_sources_pkg.GetSystemSourceChar(
18064    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18065  , p_source_type_code      => 'Y'
18066  , p_source_application_id =>  602
18067 ),'
18068 ') =  'PO_BURDEN_UNRESERVED' OR 
18069 NVL(
18070 xla_ae_sources_pkg.GetSystemSourceChar(
18071    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18072  , p_source_type_code      => 'Y'
18073  , p_source_application_id =>  602
18074 ),'
18075 ') =  'PO_BURDEN_INV_CANCELLED' OR 
18076 NVL(
18077 xla_ae_sources_pkg.GetSystemSourceChar(
18078    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18079  , p_source_type_code      => 'Y'
18080  , p_source_application_id =>  602
18081 ),'
18082 ') =  'PO_BURDEN_REJECTED') AND 
18083 NVL(p_source_13,'
18084 ') =  'B_REQ' AND 
18085 (NVL(p_source_14,'
18086 ') =  'N' OR 
18087 NVL(p_source_14,'
18088 ') =  'O') AND 
18089 NVL(p_source_9,'
18090 ') =  'REQ' AND 
18091 NVL(p_source_15,'
18092 ') =  'S' AND 
18093 NVL(p_source_67,'
18094 ') =  'Y'
18095  THEN 
18096 
18097    --
18098    XLA_AE_LINES_PKG.SetNewLine;
18099 
18100    p_balance_type_code          := l_balance_type_code;
18101    -- set the flag so later we will know whether the gain loss line needs to be created
18102    
18103    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18104      p_actual_flag :='A';
18105    END IF;
18106 
18107    --
18108    -- bulk performance
18109    --
18110    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18111                                       p_header_num   => 0); -- 4262811
18112    --
18113    -- set accounting line options
18114    --
18115    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18116            p_natural_side_code          => 'D'
18117          , p_gain_or_loss_flag          => 'N'
18118          , p_gl_transfer_mode_code      => 'S'
18119          , p_acct_entry_type_code       => 'E'
18120          , p_switch_side_flag           => 'N'
18121          , p_merge_duplicate_code       => 'N'
18122          );
18123    --
18124    l_acc_rev_natural_side_code := 'C';  -- 4262811
18125    -- 
18126    --
18127    -- set accounting line type info
18128    --
18129    xla_ae_lines_pkg.SetAcctLineType
18130       (p_component_type             => l_component_type
18131       ,p_event_type_code            => l_event_type_code
18132       ,p_line_definition_owner_code => l_line_definition_owner_code
18133       ,p_line_definition_code       => l_line_definition_code
18134       ,p_accounting_line_code       => l_component_code
18135       ,p_accounting_line_type_code  => l_component_type_code
18136       ,p_accounting_line_appl_id    => l_component_appl_id
18137       ,p_amb_context_code           => l_amb_context_code
18138       ,p_entity_code                => l_entity_code
18139       ,p_event_class_code           => l_event_class_code);
18140    --
18141    -- set accounting class
18142    --
18143    xla_ae_lines_pkg.SetAcctClass(
18144            p_accounting_class_code  => 'REQ_PA_BURDENED'
18145          , p_ae_header_id           => l_ae_header_id
18146          );
18147 
18148    --
18149    -- set rounding class
18150    --
18151    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18152                       'REQ_PA_BURDENED';
18153 
18154    --
18155    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18156    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18157    --
18158    -- bulk performance
18159    --
18160    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18161 
18162    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18163       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18164 
18165    -- 4955764
18166    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18167       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18168 
18169    -- 4458381 Public Sector Enh
18170       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
18171    --
18172    -- set accounting attributes for the line type
18173    --
18174    l_entered_amt_idx := 27;
18175    l_accted_amt_idx  := 29;
18176    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18177    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18178    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
18179    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
18180    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
18181    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
18182    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
18183    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
18184    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
18185    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
18186    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
18187    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
18188    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
18189    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
18190    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
18191    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18192    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
18193    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
18194    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
18195    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
18196    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
18197    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18198    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
18199    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
18200    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
18201    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
18202    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
18203    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
18204    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
18205    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
18206    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
18207    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
18208    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
18209    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
18210    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
18211    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
18212    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
18213    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
18214    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
18215    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
18216    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
18217    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
18218    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
18219    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
18220    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
18221    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
18222    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
18223    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
18224    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
18225    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
18226    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
18227    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
18228    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
18229    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
18230    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
18231    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
18232    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
18233    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
18234    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
18235    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
18236    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
18237    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
18238    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
18239    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
18240    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
18241    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
18242    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
18243    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
18244    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
18245 
18246    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18247    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18248 
18249    ---------------------------------------------------------------------------------------------------------------
18250    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18251    ---------------------------------------------------------------------------------------------------------------
18252    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18253 
18254    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18255    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18256 
18257    IF xla_accounting_cache_pkg.GetValueChar
18258          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18259          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18260    AND l_bflow_method_code = 'PRIOR_ENTRY'
18261 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18262    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18263          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18264        )
18265    THEN
18266          xla_ae_lines_pkg.BflowUpgEntry
18267            (p_business_method_code    => l_bflow_method_code
18268            ,p_business_class_code     => l_bflow_class_code
18269            ,p_balance_type            => l_balance_type_code);
18270    ELSE
18271       NULL;
18272 -- No business flow processing for business flow method of NONE.
18273    END IF;
18274 
18275    --
18276    -- call analytical criteria
18277    --
18278    
18279    --
18280    -- call description
18281    --
18282    
18283 xla_ae_lines_pkg.SetLineDescription(
18284    p_ae_header_id => l_ae_header_id
18285   ,p_description  => Description_2 (
18286      p_application_id         => p_application_id
18287    , p_ae_header_id           => l_ae_header_id 
18288 , p_source_3 => p_source_3
18289 , p_source_4 => p_source_4
18290 , p_source_5 => p_source_5
18291 , p_source_6 => p_source_6
18292    )
18293 );
18294 
18295 
18296    --
18297    -- call ADRs
18298    -- Bug 4922099
18299    --
18300    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18301         (NVL(l_actual_upg_option, 'N') = 'O') OR
18302         (NVL(l_enc_upg_option, 'N') = 'O')
18303       )
18304    THEN
18305    NULL;
18306    --
18307    --
18308    
18309   l_ccid := AcctDerRule_6(
18310            p_application_id           => p_application_id
18311          , p_ae_header_id             => l_ae_header_id 
18312 , p_source_11 => p_source_11
18313          , x_transaction_coa_id       => l_adr_transaction_coa_id
18314          , x_accounting_coa_id        => l_adr_accounting_coa_id
18315          , x_value_type_code          => l_adr_value_type_code
18316          , p_side                     => 'NA'
18317    );
18318 
18319    xla_ae_lines_pkg.set_ccid(
18320     p_code_combination_id          => l_ccid
18321   , p_value_type_code              => l_adr_value_type_code
18322   , p_transaction_coa_id           => l_adr_transaction_coa_id
18323   , p_accounting_coa_id            => l_adr_accounting_coa_id
18324   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
18325   , p_adr_type_code                => 'S'
18326   , p_component_type               => l_component_type
18327   , p_component_code               => l_component_code
18328   , p_component_type_code          => l_component_type_code
18329   , p_component_appl_id            => l_component_appl_id
18330   , p_amb_context_code             => l_amb_context_code
18331   , p_side                         => 'NA'
18332   );
18333 
18334 
18335    --
18336    --
18337    END IF;
18338    --
18339    -- Bug 4922099
18340    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18341           (NVL(l_enc_upg_option, 'N') = 'O')
18342         ) AND
18343         (l_bflow_method_code = 'PRIOR_ENTRY')
18344       )
18345    THEN
18346       IF
18347       --
18348       1 = 2
18349       --
18350       THEN
18351       xla_accounting_err_pkg.build_message
18352                                     (p_appli_s_name            => 'XLA'
18353                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18354                                     ,p_token_1                 => 'LINE_NUMBER'
18355                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18356                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18357                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18358                                                                              l_component_type
18359                                                                             ,l_component_code
18360                                                                             ,l_component_type_code
18361                                                                             ,l_component_appl_id
18362                                                                             ,l_amb_context_code
18363                                                                             ,l_entity_code
18364                                                                             ,l_event_class_code
18365                                                                            )
18366                                     ,p_token_3                 => 'OWNER'
18367                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18368                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18369                                                                           ,p_lookup_code    => l_component_type_code
18370                                                                          )
18371                                     ,p_token_4                 => 'PRODUCT_NAME'
18372                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18373                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18374                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18375                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18376                                     ,p_ae_header_id            =>  NULL
18377                                        );
18378 
18379         IF (C_LEVEL_ERROR>= g_log_level) THEN
18380                  trace
18381                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18382                       ,p_level    => C_LEVEL_ERROR
18383                       ,p_module   => l_log_module);
18384         END IF;
18385       END IF;
18386    END IF;
18387    --
18388    --
18389    ------------------------------------------------------------------------------------------------
18390    -- 4219869 Business Flow
18391    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18392    -- Prior Entry.  Currently, the following code is always generated.
18393    ------------------------------------------------------------------------------------------------
18394    XLA_AE_LINES_PKG.ValidateCurrentLine;
18395 
18396    ------------------------------------------------------------------------------------
18397    -- 4219869 Business Flow
18398    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18399    ------------------------------------------------------------------------------------
18400    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18401 
18402    ----------------------------------------------------------------------------------
18403    -- 4219869 Business Flow
18404    -- Update journal entry status -- Need to generate this within IF <condition>
18405    ----------------------------------------------------------------------------------
18406    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18407          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18408          ,p_balance_type_code => l_balance_type_code
18409          );
18410 
18411    -------------------------------------------------------------------------------------------
18412    -- 4262811 - Generate the Accrual Reversal lines
18413    -------------------------------------------------------------------------------------------
18414    BEGIN
18415       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18416                               (g_array_event(p_event_id).array_value_num('header_index'));
18417       IF l_acc_rev_flag IS NULL THEN
18418          l_acc_rev_flag := 'N';
18419       END IF;
18420    EXCEPTION
18421       WHEN OTHERS THEN
18422          l_acc_rev_flag := 'N';
18423    END;
18424    --
18425    IF (l_acc_rev_flag = 'Y') THEN
18426 
18427        -- 4645092  ------------------------------------------------------------------------------
18428        -- To allow MPA report to determine if it should generate report process
18429        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18430        ------------------------------------------------------------------------------------------
18431 
18432        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18433        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18434 
18435        --
18436        -- Update the line information that should be overwritten
18437        --
18438        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18439                                          p_header_num   => 1);
18440        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18441 
18442        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18443 
18444        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18445           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18446        END IF;
18447 
18448       --
18449       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18450       --
18451       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18452           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18453       ELSE
18454           ---------------------------------------------------------------------------------------------------
18455           -- 4262811a Switch Sign
18456           ---------------------------------------------------------------------------------------------------
18457           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18458           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18459                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18460           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18461                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18462           -- 5132302
18463           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18464                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18465 
18466       END IF;
18467 
18468       -- 4955764
18469       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18470       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18471 
18472 
18473       XLA_AE_LINES_PKG.ValidateCurrentLine;
18474       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18475 
18476       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18477                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18478                ,p_balance_type_code => l_balance_type_code);
18479 
18480    END IF;
18481 
18482    -----------------------------------------------------------------------------------------
18483    -- 4262811 Multiperiod Accounting
18484    -----------------------------------------------------------------------------------------
18485      -- No MPA option is assigned.
18486 
18487 
18488 END IF;
18489 END IF;
18490 --
18491 
18492 --
18493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18494    trace
18495       (p_msg      => 'END of AcctLineType_36'
18496       ,p_level    => C_LEVEL_PROCEDURE
18497       ,p_module   => l_log_module);
18498 END IF;
18499 --
18500 EXCEPTION
18501   WHEN xla_exceptions_pkg.application_exception THEN
18502       RAISE;
18503   WHEN OTHERS THEN
18504        xla_exceptions_pkg.raise_message
18505            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_36');
18506 END AcctLineType_36;
18507 --
18508 
18509 ---------------------------------------
18510 --
18511 -- PRIVATE FUNCTION
18512 --         AcctLineType_37
18513 --
18514 ---------------------------------------
18515 PROCEDURE AcctLineType_37 (
18516   p_application_id        IN NUMBER
18517  ,p_event_id              IN NUMBER
18518  ,p_calculate_acctd_flag  IN VARCHAR2
18519  ,p_calculate_g_l_flag    IN VARCHAR2
18520  ,p_actual_flag           IN OUT VARCHAR2
18521  ,p_balance_type_code     OUT VARCHAR2
18522  ,p_gain_or_loss_ref      OUT VARCHAR2
18523  
18524 --Project Name
18525  , p_source_3            IN VARCHAR2
18526 --Task Name
18527  , p_source_4            IN VARCHAR2
18528 --Project Expenditure Organization Identifier
18529  , p_source_5            IN NUMBER
18530 --Expenditure Type
18531  , p_source_6            IN VARCHAR2
18532 --Document Type
18533  , p_source_9            IN VARCHAR2
18534 --Budget Account
18535  , p_source_11            IN NUMBER
18536 --Main Or Backing Code
18537  , p_source_13            IN VARCHAR2
18538 --Burden Record Identifier
18539  , p_source_14            IN VARCHAR2
18540  , p_source_14_meaning    IN VARCHAR2
18541 --Burden Amount Display Method
18542  , p_source_15            IN VARCHAR2
18543 --Accounting Reversal Flag
18544  , p_source_16            IN VARCHAR2
18545 --Allocated to Application Identifier
18546  , p_source_17            IN NUMBER
18547 --Allocated to Distribution Type
18548  , p_source_18            IN VARCHAR2
18549 --Allocated to Entity Code
18550  , p_source_19            IN VARCHAR2
18551 --Allocated to First Distribution Identifier
18552  , p_source_20            IN NUMBER
18553 --Allocated to First System Transaction Identifier
18554  , p_source_21            IN NUMBER
18555 --Purchase Order Burden Applied to Application Identifier
18556  , p_source_23            IN NUMBER
18557 --PO Distribution Type
18558  , p_source_24            IN VARCHAR2
18559 --Purchase Order Burden Applied to Entity Code
18560  , p_source_25            IN VARCHAR2
18561 --Purchase Order Burden Applied to First Distribution Identifier
18562  , p_source_26            IN NUMBER
18563 --Purchase Order Burden Applied to First System Transaction Identifier
18564  , p_source_27            IN NUMBER
18565 --Purchase Order Burden Applied to Second Distribution Identifier
18566  , p_source_28            IN VARCHAR2
18567 --PO Distribution Identifier
18568  , p_source_29            IN NUMBER
18569 --Line Type Name
18570  , p_source_30            IN VARCHAR2
18571 --Encumbrance Upgrade Credit Accounting Class
18572  , p_source_31            IN VARCHAR2
18573 --Encumbrance Upgrade Credit Account
18574  , p_source_32            IN NUMBER
18575 --Entered Amount
18576  , p_source_33            IN NUMBER
18577 --Currency Code
18578  , p_source_34            IN VARCHAR2
18579 --Accounted Amount
18580  , p_source_35            IN NUMBER
18581 --Encumbrance Upgrade Debit Accounting Class
18582  , p_source_36            IN VARCHAR2
18583 --Encumbrance Upgrade Debit Account
18584  , p_source_37            IN NUMBER
18585 --Use Encumbrances Upgrade Attributes Flag
18586  , p_source_38            IN VARCHAR2
18587 --Encumbrance Upgrade Credit Encumbrance Type
18588  , p_source_39            IN NUMBER
18589 --Encumbrance Upgrade Debit Encumbrance Type
18590  , p_source_40            IN NUMBER
18591 --Backing Requisition Prevent Encumbrance Flag Flipped
18592  , p_source_67            IN VARCHAR2
18593 )
18594 IS
18595 
18596 l_component_type              VARCHAR2(80);
18597 l_component_code              VARCHAR2(30);
18598 l_component_type_code         VARCHAR2(1);
18599 l_component_appl_id           INTEGER;
18600 l_amb_context_code            VARCHAR2(30);
18601 l_entity_code                 VARCHAR2(30);
18602 l_event_class_code            VARCHAR2(30);
18603 l_ae_header_id                NUMBER;
18604 l_event_type_code             VARCHAR2(30);
18605 l_line_definition_code        VARCHAR2(30);
18606 l_line_definition_owner_code  VARCHAR2(1);
18607 --
18608 -- adr variables
18609 l_segment                     VARCHAR2(30);
18610 l_ccid                        NUMBER;
18611 l_adr_transaction_coa_id      NUMBER;
18612 l_adr_accounting_coa_id       NUMBER;
18613 l_adr_flexfield_segment_code  VARCHAR2(30);
18614 l_adr_flex_value_set_id       NUMBER;
18615 l_adr_value_type_code         VARCHAR2(30);
18616 l_adr_value_combination_id    NUMBER;
18617 l_adr_value_segment_code      VARCHAR2(30);
18618 
18619 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18620 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18621 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18622 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18623 
18624 -- 4262811 Variables ------------------------------------------------------------------------------------------
18625 l_entered_amt_idx             NUMBER;
18626 l_accted_amt_idx              NUMBER;
18627 l_acc_rev_flag                VARCHAR2(1);
18628 l_accrual_line_num            NUMBER;
18629 l_tmp_amt                     NUMBER;
18630 l_acc_rev_natural_side_code   VARCHAR2(1);
18631 
18632 l_num_entries                 NUMBER;
18633 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18634 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18635 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18636 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18637 l_recog_line_1                NUMBER;
18638 l_recog_line_2                NUMBER;
18639 
18640 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18641 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18642 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18643 
18644 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18645 
18646 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18647 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18648 
18649 ---------------------------------------------------------------------------------------------------------------
18650 
18651 
18652 --
18653 -- bulk performance
18654 --
18655 l_balance_type_code           VARCHAR2(1);
18656 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18657 l_log_module                  VARCHAR2(240);
18658 
18659 --
18660 -- Upgrade strategy
18661 --
18662 l_actual_upg_option           VARCHAR2(1);
18663 l_enc_upg_option           VARCHAR2(1);
18664 
18665 --
18666 BEGIN
18667 --
18668 IF g_log_enabled THEN
18669       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
18670 END IF;
18671 --
18672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18673 
18674       trace
18675          (p_msg      => 'BEGIN of AcctLineType_37'
18676          ,p_level    => C_LEVEL_PROCEDURE
18677          ,p_module   => l_log_module);
18678 
18679 END IF;
18680 --
18681 l_component_type             := 'AMB_JLT';
18682 l_component_code             := 'REINST_UNENC_BURDEN_REQFORPO';
18683 l_component_type_code        := 'S';
18684 l_component_appl_id          :=  201;
18685 l_amb_context_code           := 'DEFAULT';
18686 l_entity_code                := 'PURCHASE_ORDER';
18687 l_event_class_code           := 'PO_BURDEN';
18688 l_event_type_code            := 'PO_BURDEN_ALL';
18689 l_line_definition_owner_code := 'S';
18690 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
18691 --
18692 l_balance_type_code          := 'E';
18693 l_segment                     := NULL;
18694 l_ccid                        := NULL;
18695 l_adr_transaction_coa_id      := NULL;
18696 l_adr_accounting_coa_id       := NULL;
18697 l_adr_flexfield_segment_code  := NULL;
18698 l_adr_flex_value_set_id       := NULL;
18699 l_adr_value_type_code         := NULL;
18700 l_adr_value_combination_id    := NULL;
18701 l_adr_value_segment_code      := NULL;
18702 
18703 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18704 l_bflow_class_code           := '';    -- 4219869 Business Flow
18705 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18706 l_budgetary_control_flag     := 'Y';
18707 
18708 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18709 l_bflow_applied_to_amt       := NULL; -- 5132302
18710 l_entered_amt_idx            := NULL;          -- 4262811
18711 l_accted_amt_idx             := NULL;          -- 4262811
18712 l_acc_rev_flag               := NULL;          -- 4262811
18713 l_accrual_line_num           := NULL;          -- 4262811
18714 l_tmp_amt                    := NULL;          -- 4262811
18715 --
18716  
18717 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18718     l_balance_type_code <> 'B' THEN
18719 IF (NVL(
18720 xla_ae_sources_pkg.GetSystemSourceChar(
18721    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18722  , p_source_type_code      => 'Y'
18723  , p_source_application_id =>  602
18724 ),'
18725 ') =  'PO_BURDEN_UNRESERVED' OR 
18726 NVL(
18727 xla_ae_sources_pkg.GetSystemSourceChar(
18728    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18729  , p_source_type_code      => 'Y'
18730  , p_source_application_id =>  602
18731 ),'
18732 ') =  'PO_BURDEN_INV_CANCELLED' OR 
18733 NVL(
18734 xla_ae_sources_pkg.GetSystemSourceChar(
18735    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18736  , p_source_type_code      => 'Y'
18737  , p_source_application_id =>  602
18738 ),'
18739 ') =  'PO_BURDEN_REJECTED') AND 
18740 NVL(p_source_13,'
18741 ') =  'B_REQ' AND 
18742 NVL(p_source_14,'
18743 ') =  'O' AND 
18744 NVL(p_source_9,'
18745 ') =  'REQ' AND 
18746 NVL(p_source_15,'
18747 ') =  'D' AND 
18748 NVL(p_source_67,'
18749 ') =  'Y'
18750  THEN 
18751 
18752    --
18753    XLA_AE_LINES_PKG.SetNewLine;
18754 
18755    p_balance_type_code          := l_balance_type_code;
18756    -- set the flag so later we will know whether the gain loss line needs to be created
18757    
18758    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18759      p_actual_flag :='A';
18760    END IF;
18761 
18762    --
18763    -- bulk performance
18764    --
18765    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18766                                       p_header_num   => 0); -- 4262811
18767    --
18768    -- set accounting line options
18769    --
18770    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18771            p_natural_side_code          => 'D'
18772          , p_gain_or_loss_flag          => 'N'
18773          , p_gl_transfer_mode_code      => 'S'
18774          , p_acct_entry_type_code       => 'E'
18775          , p_switch_side_flag           => 'N'
18776          , p_merge_duplicate_code       => 'N'
18777          );
18778    --
18779    l_acc_rev_natural_side_code := 'C';  -- 4262811
18780    -- 
18781    --
18782    -- set accounting line type info
18783    --
18784    xla_ae_lines_pkg.SetAcctLineType
18785       (p_component_type             => l_component_type
18786       ,p_event_type_code            => l_event_type_code
18787       ,p_line_definition_owner_code => l_line_definition_owner_code
18788       ,p_line_definition_code       => l_line_definition_code
18789       ,p_accounting_line_code       => l_component_code
18790       ,p_accounting_line_type_code  => l_component_type_code
18791       ,p_accounting_line_appl_id    => l_component_appl_id
18792       ,p_amb_context_code           => l_amb_context_code
18793       ,p_entity_code                => l_entity_code
18794       ,p_event_class_code           => l_event_class_code);
18795    --
18796    -- set accounting class
18797    --
18798    xla_ae_lines_pkg.SetAcctClass(
18799            p_accounting_class_code  => 'REQ_PA_BURDEN'
18800          , p_ae_header_id           => l_ae_header_id
18801          );
18802 
18803    --
18804    -- set rounding class
18805    --
18806    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18807                       'REQ_PA_BURDEN';
18808 
18809    --
18810    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18811    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18812    --
18813    -- bulk performance
18814    --
18815    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18816 
18817    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18818       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18819 
18820    -- 4955764
18821    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18822       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18823 
18824    -- 4458381 Public Sector Enh
18825       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
18826    --
18827    -- set accounting attributes for the line type
18828    --
18829    l_entered_amt_idx := 27;
18830    l_accted_amt_idx  := 29;
18831    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18832    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18833    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
18834    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
18835    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
18836    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
18837    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
18838    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
18839    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
18840    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
18841    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
18842    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
18843    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
18844    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
18845    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
18846    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18847    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
18848    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
18849    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
18850    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
18851    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
18852    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18853    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
18854    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
18855    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
18856    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
18857    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
18858    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
18859    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
18860    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
18861    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
18862    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
18863    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
18864    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
18865    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
18866    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
18867    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
18868    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
18869    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
18870    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
18871    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
18872    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
18873    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
18874    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
18875    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
18876    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
18877    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
18878    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
18879    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
18880    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
18881    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
18882    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
18883    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
18884    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
18885    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
18886    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
18887    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
18888    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
18889    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
18890    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
18891    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
18892    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
18893    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
18894    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
18895    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
18896    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
18897    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
18898    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
18899    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
18900 
18901    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18902    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18903 
18904    ---------------------------------------------------------------------------------------------------------------
18905    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18906    ---------------------------------------------------------------------------------------------------------------
18907    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18908 
18909    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18910    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18911 
18912    IF xla_accounting_cache_pkg.GetValueChar
18913          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18914          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18915    AND l_bflow_method_code = 'PRIOR_ENTRY'
18916 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18917    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18918          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18919        )
18920    THEN
18921          xla_ae_lines_pkg.BflowUpgEntry
18922            (p_business_method_code    => l_bflow_method_code
18923            ,p_business_class_code     => l_bflow_class_code
18924            ,p_balance_type            => l_balance_type_code);
18925    ELSE
18926       NULL;
18927 -- No business flow processing for business flow method of NONE.
18928    END IF;
18929 
18930    --
18931    -- call analytical criteria
18932    --
18933    
18934    --
18935    -- call description
18936    --
18937    
18938 xla_ae_lines_pkg.SetLineDescription(
18939    p_ae_header_id => l_ae_header_id
18940   ,p_description  => Description_2 (
18941      p_application_id         => p_application_id
18942    , p_ae_header_id           => l_ae_header_id 
18943 , p_source_3 => p_source_3
18944 , p_source_4 => p_source_4
18945 , p_source_5 => p_source_5
18946 , p_source_6 => p_source_6
18947    )
18948 );
18949 
18950 
18951    --
18952    -- call ADRs
18953    -- Bug 4922099
18954    --
18955    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18956         (NVL(l_actual_upg_option, 'N') = 'O') OR
18957         (NVL(l_enc_upg_option, 'N') = 'O')
18958       )
18959    THEN
18960    NULL;
18961    --
18962    --
18963    
18964   l_ccid := AcctDerRule_7(
18965            p_application_id           => p_application_id
18966          , p_ae_header_id             => l_ae_header_id 
18967 , p_source_11 => p_source_11
18968          , x_transaction_coa_id       => l_adr_transaction_coa_id
18969          , x_accounting_coa_id        => l_adr_accounting_coa_id
18970          , x_value_type_code          => l_adr_value_type_code
18971          , p_side                     => 'NA'
18972    );
18973 
18974    xla_ae_lines_pkg.set_ccid(
18975     p_code_combination_id          => l_ccid
18976   , p_value_type_code              => l_adr_value_type_code
18977   , p_transaction_coa_id           => l_adr_transaction_coa_id
18978   , p_accounting_coa_id            => l_adr_accounting_coa_id
18979   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
18980   , p_adr_type_code                => 'S'
18981   , p_component_type               => l_component_type
18982   , p_component_code               => l_component_code
18983   , p_component_type_code          => l_component_type_code
18984   , p_component_appl_id            => l_component_appl_id
18985   , p_amb_context_code             => l_amb_context_code
18986   , p_side                         => 'NA'
18987   );
18988 
18989 
18990    --
18991    --
18992    END IF;
18993    --
18994    -- Bug 4922099
18995    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18996           (NVL(l_enc_upg_option, 'N') = 'O')
18997         ) AND
18998         (l_bflow_method_code = 'PRIOR_ENTRY')
18999       )
19000    THEN
19001       IF
19002       --
19003       1 = 2
19004       --
19005       THEN
19006       xla_accounting_err_pkg.build_message
19007                                     (p_appli_s_name            => 'XLA'
19008                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19009                                     ,p_token_1                 => 'LINE_NUMBER'
19010                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19011                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19012                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19013                                                                              l_component_type
19014                                                                             ,l_component_code
19015                                                                             ,l_component_type_code
19016                                                                             ,l_component_appl_id
19017                                                                             ,l_amb_context_code
19018                                                                             ,l_entity_code
19019                                                                             ,l_event_class_code
19020                                                                            )
19021                                     ,p_token_3                 => 'OWNER'
19022                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19023                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19024                                                                           ,p_lookup_code    => l_component_type_code
19025                                                                          )
19026                                     ,p_token_4                 => 'PRODUCT_NAME'
19027                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19028                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19029                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19030                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19031                                     ,p_ae_header_id            =>  NULL
19032                                        );
19033 
19034         IF (C_LEVEL_ERROR>= g_log_level) THEN
19035                  trace
19036                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19037                       ,p_level    => C_LEVEL_ERROR
19038                       ,p_module   => l_log_module);
19039         END IF;
19040       END IF;
19041    END IF;
19042    --
19043    --
19044    ------------------------------------------------------------------------------------------------
19045    -- 4219869 Business Flow
19046    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19047    -- Prior Entry.  Currently, the following code is always generated.
19048    ------------------------------------------------------------------------------------------------
19049    XLA_AE_LINES_PKG.ValidateCurrentLine;
19050 
19051    ------------------------------------------------------------------------------------
19052    -- 4219869 Business Flow
19053    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19054    ------------------------------------------------------------------------------------
19055    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19056 
19057    ----------------------------------------------------------------------------------
19058    -- 4219869 Business Flow
19059    -- Update journal entry status -- Need to generate this within IF <condition>
19060    ----------------------------------------------------------------------------------
19061    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19062          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19063          ,p_balance_type_code => l_balance_type_code
19064          );
19065 
19066    -------------------------------------------------------------------------------------------
19067    -- 4262811 - Generate the Accrual Reversal lines
19068    -------------------------------------------------------------------------------------------
19069    BEGIN
19070       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19071                               (g_array_event(p_event_id).array_value_num('header_index'));
19072       IF l_acc_rev_flag IS NULL THEN
19073          l_acc_rev_flag := 'N';
19074       END IF;
19075    EXCEPTION
19076       WHEN OTHERS THEN
19077          l_acc_rev_flag := 'N';
19078    END;
19079    --
19080    IF (l_acc_rev_flag = 'Y') THEN
19081 
19082        -- 4645092  ------------------------------------------------------------------------------
19083        -- To allow MPA report to determine if it should generate report process
19084        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19085        ------------------------------------------------------------------------------------------
19086 
19087        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19088        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19089 
19090        --
19091        -- Update the line information that should be overwritten
19092        --
19093        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19094                                          p_header_num   => 1);
19095        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19096 
19097        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19098 
19099        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19100           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19101        END IF;
19102 
19103       --
19104       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19105       --
19106       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19107           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19108       ELSE
19109           ---------------------------------------------------------------------------------------------------
19110           -- 4262811a Switch Sign
19111           ---------------------------------------------------------------------------------------------------
19112           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19113           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19114                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19115           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19116                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19117           -- 5132302
19118           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19119                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19120 
19121       END IF;
19122 
19123       -- 4955764
19124       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19125       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19126 
19127 
19128       XLA_AE_LINES_PKG.ValidateCurrentLine;
19129       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19130 
19131       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19132                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19133                ,p_balance_type_code => l_balance_type_code);
19134 
19135    END IF;
19136 
19137    -----------------------------------------------------------------------------------------
19138    -- 4262811 Multiperiod Accounting
19139    -----------------------------------------------------------------------------------------
19140      -- No MPA option is assigned.
19141 
19142 
19143 END IF;
19144 END IF;
19145 --
19146 
19147 --
19148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19149    trace
19150       (p_msg      => 'END of AcctLineType_37'
19151       ,p_level    => C_LEVEL_PROCEDURE
19152       ,p_module   => l_log_module);
19153 END IF;
19154 --
19155 EXCEPTION
19156   WHEN xla_exceptions_pkg.application_exception THEN
19157       RAISE;
19158   WHEN OTHERS THEN
19159        xla_exceptions_pkg.raise_message
19160            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_37');
19161 END AcctLineType_37;
19162 --
19163 
19164 ---------------------------------------
19165 --
19166 -- PRIVATE FUNCTION
19167 --         AcctLineType_38
19168 --
19169 ---------------------------------------
19170 PROCEDURE AcctLineType_38 (
19171   p_application_id        IN NUMBER
19172  ,p_event_id              IN NUMBER
19173  ,p_calculate_acctd_flag  IN VARCHAR2
19174  ,p_calculate_g_l_flag    IN VARCHAR2
19175  ,p_actual_flag           IN OUT VARCHAR2
19176  ,p_balance_type_code     OUT VARCHAR2
19177  ,p_gain_or_loss_ref      OUT VARCHAR2
19178  
19179 --Budget Account
19180  , p_source_11            IN NUMBER
19181 --Main Or Backing Code
19182  , p_source_13            IN VARCHAR2
19183 --Accounting Reversal Flag
19184  , p_source_16            IN VARCHAR2
19185 --PO Distribution Identifier
19186  , p_source_29            IN NUMBER
19187 --Entered Amount
19188  , p_source_33            IN NUMBER
19189 --Currency Code
19190  , p_source_34            IN VARCHAR2
19191 --Accounted Amount
19192  , p_source_35            IN NUMBER
19193 --Allocated to Main Document Distribution Type
19194  , p_source_49            IN VARCHAR2
19195 --Allocated to Main Document Distribution Identifier
19196  , p_source_51            IN NUMBER
19197 --PO Header Identifier
19198  , p_source_52            IN NUMBER
19199 --Applied To Application Identifier
19200  , p_source_53            IN NUMBER
19201 --Applied To Distribution Link Type
19202  , p_source_54            IN VARCHAR2
19203 --Applied To Entity Code
19204  , p_source_55            IN VARCHAR2
19205 --Applied To Distribution Identifier 1
19206  , p_source_56            IN NUMBER
19207 --Applied To Header Identifier 1
19208  , p_source_57            IN NUMBER
19209 --Distribution Link Type
19210  , p_source_58            IN VARCHAR2
19211 --PO Encumbrance Upgrade Option
19212  , p_source_59            IN VARCHAR2
19213 --JFMIP Reference
19214  , p_source_60            IN VARCHAR2
19215 --PO Upgrade Encumbrance Type Identifier
19216  , p_source_61            IN NUMBER
19217 )
19218 IS
19219 
19220 l_component_type              VARCHAR2(80);
19221 l_component_code              VARCHAR2(30);
19222 l_component_type_code         VARCHAR2(1);
19223 l_component_appl_id           INTEGER;
19224 l_amb_context_code            VARCHAR2(30);
19225 l_entity_code                 VARCHAR2(30);
19226 l_event_class_code            VARCHAR2(30);
19227 l_ae_header_id                NUMBER;
19228 l_event_type_code             VARCHAR2(30);
19229 l_line_definition_code        VARCHAR2(30);
19230 l_line_definition_owner_code  VARCHAR2(1);
19231 --
19232 -- adr variables
19233 l_segment                     VARCHAR2(30);
19234 l_ccid                        NUMBER;
19235 l_adr_transaction_coa_id      NUMBER;
19236 l_adr_accounting_coa_id       NUMBER;
19237 l_adr_flexfield_segment_code  VARCHAR2(30);
19238 l_adr_flex_value_set_id       NUMBER;
19239 l_adr_value_type_code         VARCHAR2(30);
19240 l_adr_value_combination_id    NUMBER;
19241 l_adr_value_segment_code      VARCHAR2(30);
19242 
19243 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19244 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19245 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19246 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19247 
19248 -- 4262811 Variables ------------------------------------------------------------------------------------------
19249 l_entered_amt_idx             NUMBER;
19250 l_accted_amt_idx              NUMBER;
19251 l_acc_rev_flag                VARCHAR2(1);
19252 l_accrual_line_num            NUMBER;
19253 l_tmp_amt                     NUMBER;
19254 l_acc_rev_natural_side_code   VARCHAR2(1);
19255 
19256 l_num_entries                 NUMBER;
19257 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19258 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19259 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19260 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19261 l_recog_line_1                NUMBER;
19262 l_recog_line_2                NUMBER;
19263 
19264 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19265 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19266 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19267 
19268 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19269 
19270 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19271 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19272 
19273 ---------------------------------------------------------------------------------------------------------------
19274 
19275 
19276 --
19277 -- bulk performance
19278 --
19279 l_balance_type_code           VARCHAR2(1);
19280 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19281 l_log_module                  VARCHAR2(240);
19282 
19283 --
19284 -- Upgrade strategy
19285 --
19286 l_actual_upg_option           VARCHAR2(1);
19287 l_enc_upg_option           VARCHAR2(1);
19288 
19289 --
19290 BEGIN
19291 --
19292 IF g_log_enabled THEN
19293       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
19294 END IF;
19295 --
19296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19297 
19298       trace
19299          (p_msg      => 'BEGIN of AcctLineType_38'
19300          ,p_level    => C_LEVEL_PROCEDURE
19301          ,p_module   => l_log_module);
19302 
19303 END IF;
19304 --
19305 l_component_type             := 'AMB_JLT';
19306 l_component_code             := 'RELIEVE_BPA_ENC_FROM_PO';
19307 l_component_type_code        := 'S';
19308 l_component_appl_id          :=  201;
19309 l_amb_context_code           := 'DEFAULT';
19310 l_entity_code                := 'PURCHASE_ORDER';
19311 l_event_class_code           := 'PO_PA';
19312 l_event_type_code            := 'PO_PA_ALL';
19313 l_line_definition_owner_code := 'S';
19314 l_line_definition_code       := 'PO_PA_ENC_ALL';
19315 --
19316 l_balance_type_code          := 'E';
19317 l_segment                     := NULL;
19318 l_ccid                        := NULL;
19319 l_adr_transaction_coa_id      := NULL;
19320 l_adr_accounting_coa_id       := NULL;
19321 l_adr_flexfield_segment_code  := NULL;
19322 l_adr_flex_value_set_id       := NULL;
19323 l_adr_value_type_code         := NULL;
19324 l_adr_value_combination_id    := NULL;
19325 l_adr_value_segment_code      := NULL;
19326 
19327 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
19328 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
19329 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
19330 l_budgetary_control_flag     := 'Y';
19331 
19332 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19333 l_bflow_applied_to_amt       := NULL; -- 5132302
19334 l_entered_amt_idx            := NULL;          -- 4262811
19335 l_accted_amt_idx             := NULL;          -- 4262811
19336 l_acc_rev_flag               := NULL;          -- 4262811
19337 l_accrual_line_num           := NULL;          -- 4262811
19338 l_tmp_amt                    := NULL;          -- 4262811
19339 --
19340  
19341 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19342     l_balance_type_code <> 'B' THEN
19343 IF NVL(
19344 xla_ae_sources_pkg.GetSystemSourceChar(
19345    p_source_code           => 'XLA_EVENT_TYPE_CODE'
19346  , p_source_type_code      => 'Y'
19347  , p_source_application_id =>  602
19348 ),'
19349 ') =  'PO_PA_RESERVED' AND 
19350 NVL(p_source_13,'
19351 ') =  'B_PA'
19352  THEN 
19353 
19354    --
19355    XLA_AE_LINES_PKG.SetNewLine;
19356 
19357    p_balance_type_code          := l_balance_type_code;
19358    -- set the flag so later we will know whether the gain loss line needs to be created
19359    
19360    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19361      p_actual_flag :='A';
19362    END IF;
19363 
19364    --
19365    -- bulk performance
19366    --
19367    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19368                                       p_header_num   => 0); -- 4262811
19369    --
19370    -- set accounting line options
19371    --
19372    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19373            p_natural_side_code          => 'C'
19374          , p_gain_or_loss_flag          => 'N'
19375          , p_gl_transfer_mode_code      => 'S'
19376          , p_acct_entry_type_code       => 'E'
19377          , p_switch_side_flag           => 'N'
19378          , p_merge_duplicate_code       => 'N'
19379          );
19380    --
19381    l_acc_rev_natural_side_code := 'D';  -- 4262811
19382    -- 
19383    --
19384    -- set accounting line type info
19385    --
19386    xla_ae_lines_pkg.SetAcctLineType
19387       (p_component_type             => l_component_type
19388       ,p_event_type_code            => l_event_type_code
19389       ,p_line_definition_owner_code => l_line_definition_owner_code
19390       ,p_line_definition_code       => l_line_definition_code
19391       ,p_accounting_line_code       => l_component_code
19392       ,p_accounting_line_type_code  => l_component_type_code
19393       ,p_accounting_line_appl_id    => l_component_appl_id
19394       ,p_amb_context_code           => l_amb_context_code
19395       ,p_entity_code                => l_entity_code
19396       ,p_event_class_code           => l_event_class_code);
19397    --
19398    -- set accounting class
19399    --
19400    xla_ae_lines_pkg.SetAcctClass(
19401            p_accounting_class_code  => 'PURCHASE_ORDER'
19402          , p_ae_header_id           => l_ae_header_id
19403          );
19404 
19405    --
19406    -- set rounding class
19407    --
19408    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19409                       'PURCHASE_ORDER';
19410 
19411    --
19412    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19413    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19414    --
19415    -- bulk performance
19416    --
19417    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19418 
19419    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19420       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19421 
19422    -- 4955764
19423    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19424       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19425 
19426    -- 4458381 Public Sector Enh
19427    
19428    --
19429    -- set accounting attributes for the line type
19430    --
19431    l_entered_amt_idx := 23;
19432    l_accted_amt_idx  := 25;
19433    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19434    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
19435    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
19436    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
19437    l_rec_acct_attrs.array_num_value(2)  := 
19438 xla_ae_sources_pkg.GetSystemSourceNum(
19439    p_source_code           => 'XLA_EVENT_APPL_ID'
19440  , p_source_type_code      => 'Y'
19441  , p_source_application_id =>  602
19442 );
19443    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
19444    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
19445    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
19446    l_rec_acct_attrs.array_char_value(4)  := 
19447 xla_ae_sources_pkg.GetSystemSourceChar(
19448    p_source_code           => 'XLA_ENTITY_CODE'
19449  , p_source_type_code      => 'Y'
19450  , p_source_application_id =>  602
19451 );
19452    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
19453    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
19454    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
19455    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
19456    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
19457    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
19458    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
19459    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
19460    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
19461    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
19462    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
19463    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
19464    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
19465    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
19466    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
19467    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
19468    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
19469    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
19470    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
19471    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
19472    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
19473    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
19474    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
19475    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
19476    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
19477    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
19478    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
19479    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
19480    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
19481    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
19482    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
19483    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
19484    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
19485    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
19486    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
19487    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
19488    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
19489    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
19490    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
19491    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
19492    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
19493    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
19494    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
19495    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
19496    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
19497    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
19498    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
19499    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
19500    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
19501    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_29);
19502    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
19503    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
19504    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
19505    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
19506 
19507    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19508    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19509 
19510    ---------------------------------------------------------------------------------------------------------------
19511    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19512    ---------------------------------------------------------------------------------------------------------------
19513    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19514 
19515    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19516    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19517 
19518    IF xla_accounting_cache_pkg.GetValueChar
19519          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19520          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19521    AND l_bflow_method_code = 'PRIOR_ENTRY'
19522 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19523    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19524          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19525        )
19526    THEN
19527          xla_ae_lines_pkg.BflowUpgEntry
19528            (p_business_method_code    => l_bflow_method_code
19529            ,p_business_class_code     => l_bflow_class_code
19530            ,p_balance_type            => l_balance_type_code);
19531    ELSE
19532       NULL;
19533 XLA_AE_LINES_PKG.business_flow_validation(
19534                                 p_business_method_code     => l_bflow_method_code
19535                                ,p_business_class_code      => l_bflow_class_code
19536                                ,p_inherit_description_flag => l_inherit_desc_flag);
19537    END IF;
19538 
19539    --
19540    -- call analytical criteria
19541    --
19542    -- Inherited Analytical Criteria for business flow method of Prior Entry.
19543    --
19544    -- call description
19545    --
19546    -- No description or it is inherited.
19547    --
19548    -- call ADRs
19549    -- Bug 4922099
19550    --
19551    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19552         (NVL(l_actual_upg_option, 'N') = 'O') OR
19553         (NVL(l_enc_upg_option, 'N') = 'O')
19554       )
19555    THEN
19556    NULL;
19557    --
19558    --
19559    
19560    --
19561    --
19562    END IF;
19563    --
19564    -- Bug 4922099
19565    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19566           (NVL(l_enc_upg_option, 'N') = 'O')
19567         ) AND
19568         (l_bflow_method_code = 'PRIOR_ENTRY')
19569       )
19570    THEN
19571       IF
19572       --
19573       1 = 1
19574       --
19575       THEN
19576       xla_accounting_err_pkg.build_message
19577                                     (p_appli_s_name            => 'XLA'
19578                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19579                                     ,p_token_1                 => 'LINE_NUMBER'
19580                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19581                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19582                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19583                                                                              l_component_type
19584                                                                             ,l_component_code
19585                                                                             ,l_component_type_code
19586                                                                             ,l_component_appl_id
19587                                                                             ,l_amb_context_code
19588                                                                             ,l_entity_code
19589                                                                             ,l_event_class_code
19590                                                                            )
19591                                     ,p_token_3                 => 'OWNER'
19592                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19593                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19594                                                                           ,p_lookup_code    => l_component_type_code
19595                                                                          )
19596                                     ,p_token_4                 => 'PRODUCT_NAME'
19597                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19598                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19599                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19600                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19601                                     ,p_ae_header_id            =>  NULL
19602                                        );
19603 
19604         IF (C_LEVEL_ERROR>= g_log_level) THEN
19605                  trace
19606                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19607                       ,p_level    => C_LEVEL_ERROR
19608                       ,p_module   => l_log_module);
19609         END IF;
19610       END IF;
19611    END IF;
19612    --
19613    --
19614    ------------------------------------------------------------------------------------------------
19615    -- 4219869 Business Flow
19616    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19617    -- Prior Entry.  Currently, the following code is always generated.
19618    ------------------------------------------------------------------------------------------------
19619    -- No ValidateCurrentLine for business flow method of Prior Entry
19620 
19621    ------------------------------------------------------------------------------------
19622    -- 4219869 Business Flow
19623    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19624    ------------------------------------------------------------------------------------
19625    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19626 
19627    ----------------------------------------------------------------------------------
19628    -- 4219869 Business Flow
19629    -- Update journal entry status -- Need to generate this within IF <condition>
19630    ----------------------------------------------------------------------------------
19631    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19632          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19633          ,p_balance_type_code => l_balance_type_code
19634          );
19635 
19636    -------------------------------------------------------------------------------------------
19637    -- 4262811 - Generate the Accrual Reversal lines
19638    -------------------------------------------------------------------------------------------
19639    BEGIN
19640       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19641                               (g_array_event(p_event_id).array_value_num('header_index'));
19642       IF l_acc_rev_flag IS NULL THEN
19643          l_acc_rev_flag := 'N';
19644       END IF;
19645    EXCEPTION
19646       WHEN OTHERS THEN
19647          l_acc_rev_flag := 'N';
19648    END;
19649    --
19650    IF (l_acc_rev_flag = 'Y') THEN
19651 
19652        -- 4645092  ------------------------------------------------------------------------------
19653        -- To allow MPA report to determine if it should generate report process
19654        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19655        ------------------------------------------------------------------------------------------
19656 
19657        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19658        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19659 
19660        --
19661        -- Update the line information that should be overwritten
19662        --
19663        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19664                                          p_header_num   => 1);
19665        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19666 
19667        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19668 
19669        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19670           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19671        END IF;
19672 
19673       --
19674       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19675       --
19676       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19677           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19678       ELSE
19679           ---------------------------------------------------------------------------------------------------
19680           -- 4262811a Switch Sign
19681           ---------------------------------------------------------------------------------------------------
19682           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19683           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19684                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19685           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19686                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19687           -- 5132302
19688           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19689                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19690 
19691       END IF;
19692 
19693       -- 4955764
19694       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19695       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19696 
19697 
19698       XLA_AE_LINES_PKG.ValidateCurrentLine;
19699       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19700 
19701       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19702                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19703                ,p_balance_type_code => l_balance_type_code);
19704 
19705    END IF;
19706 
19707    -----------------------------------------------------------------------------------------
19708    -- 4262811 Multiperiod Accounting
19709    -----------------------------------------------------------------------------------------
19710      -- No MPA option is assigned.
19711 
19712 
19713 END IF;
19714 END IF;
19715 --
19716 
19717 --
19718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19719    trace
19720       (p_msg      => 'END of AcctLineType_38'
19721       ,p_level    => C_LEVEL_PROCEDURE
19722       ,p_module   => l_log_module);
19723 END IF;
19724 --
19725 EXCEPTION
19726   WHEN xla_exceptions_pkg.application_exception THEN
19727       RAISE;
19728   WHEN OTHERS THEN
19729        xla_exceptions_pkg.raise_message
19730            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_38');
19731 END AcctLineType_38;
19732 --
19733 
19734 ---------------------------------------
19735 --
19736 -- PRIVATE FUNCTION
19737 --         AcctLineType_39
19738 --
19739 ---------------------------------------
19740 PROCEDURE AcctLineType_39 (
19741   p_application_id        IN NUMBER
19742  ,p_event_id              IN NUMBER
19743  ,p_calculate_acctd_flag  IN VARCHAR2
19744  ,p_calculate_g_l_flag    IN VARCHAR2
19745  ,p_actual_flag           IN OUT VARCHAR2
19746  ,p_balance_type_code     OUT VARCHAR2
19747  ,p_gain_or_loss_ref      OUT VARCHAR2
19748  
19749 --Project Name
19750  , p_source_3            IN VARCHAR2
19751 --Task Name
19752  , p_source_4            IN VARCHAR2
19753 --Project Expenditure Organization Identifier
19754  , p_source_5            IN NUMBER
19755 --Expenditure Type
19756  , p_source_6            IN VARCHAR2
19757 --Document Type
19758  , p_source_9            IN VARCHAR2
19759 --Main Or Backing Code
19760  , p_source_13            IN VARCHAR2
19761 --Burden Record Identifier
19762  , p_source_14            IN VARCHAR2
19763  , p_source_14_meaning    IN VARCHAR2
19764 --Burden Amount Display Method
19765  , p_source_15            IN VARCHAR2
19766 --Accounting Reversal Flag
19767  , p_source_16            IN VARCHAR2
19768 --Allocated to Application Identifier
19769  , p_source_17            IN NUMBER
19770 --Allocated to Distribution Type
19771  , p_source_18            IN VARCHAR2
19772 --Allocated to Entity Code
19773  , p_source_19            IN VARCHAR2
19774 --Allocated to First Distribution Identifier
19775  , p_source_20            IN NUMBER
19776 --Allocated to First System Transaction Identifier
19777  , p_source_21            IN NUMBER
19778 --Allocated to Second Distribution Identifier
19779  , p_source_22            IN VARCHAR2
19780 --Purchase Order Burden Applied to Application Identifier
19781  , p_source_23            IN NUMBER
19782 --PO Distribution Type
19783  , p_source_24            IN VARCHAR2
19784 --Purchase Order Burden Applied to Entity Code
19785  , p_source_25            IN VARCHAR2
19786 --Purchase Order Burden Applied to First Distribution Identifier
19787  , p_source_26            IN NUMBER
19788 --Purchase Order Burden Applied to First System Transaction Identifier
19789  , p_source_27            IN NUMBER
19790 --Purchase Order Burden Applied to Second Distribution Identifier
19791  , p_source_28            IN VARCHAR2
19792 --PO Distribution Identifier
19793  , p_source_29            IN NUMBER
19794 --Line Type Name
19795  , p_source_30            IN VARCHAR2
19796 --Encumbrance Upgrade Credit Accounting Class
19797  , p_source_31            IN VARCHAR2
19798 --Encumbrance Upgrade Credit Account
19799  , p_source_32            IN NUMBER
19800 --Entered Amount
19801  , p_source_33            IN NUMBER
19802 --Currency Code
19803  , p_source_34            IN VARCHAR2
19804 --Accounted Amount
19805  , p_source_35            IN NUMBER
19806 --Encumbrance Upgrade Debit Accounting Class
19807  , p_source_36            IN VARCHAR2
19808 --Encumbrance Upgrade Debit Account
19809  , p_source_37            IN NUMBER
19810 --Use Encumbrances Upgrade Attributes Flag
19811  , p_source_38            IN VARCHAR2
19812 --Encumbrance Upgrade Credit Encumbrance Type
19813  , p_source_39            IN NUMBER
19814 --Encumbrance Upgrade Debit Encumbrance Type
19815  , p_source_40            IN NUMBER
19816 )
19817 IS
19818 
19819 l_component_type              VARCHAR2(80);
19820 l_component_code              VARCHAR2(30);
19821 l_component_type_code         VARCHAR2(1);
19822 l_component_appl_id           INTEGER;
19823 l_amb_context_code            VARCHAR2(30);
19824 l_entity_code                 VARCHAR2(30);
19825 l_event_class_code            VARCHAR2(30);
19826 l_ae_header_id                NUMBER;
19827 l_event_type_code             VARCHAR2(30);
19828 l_line_definition_code        VARCHAR2(30);
19829 l_line_definition_owner_code  VARCHAR2(1);
19830 --
19831 -- adr variables
19832 l_segment                     VARCHAR2(30);
19833 l_ccid                        NUMBER;
19834 l_adr_transaction_coa_id      NUMBER;
19835 l_adr_accounting_coa_id       NUMBER;
19836 l_adr_flexfield_segment_code  VARCHAR2(30);
19837 l_adr_flex_value_set_id       NUMBER;
19838 l_adr_value_type_code         VARCHAR2(30);
19839 l_adr_value_combination_id    NUMBER;
19840 l_adr_value_segment_code      VARCHAR2(30);
19841 
19842 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19843 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19844 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19845 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19846 
19847 -- 4262811 Variables ------------------------------------------------------------------------------------------
19848 l_entered_amt_idx             NUMBER;
19849 l_accted_amt_idx              NUMBER;
19850 l_acc_rev_flag                VARCHAR2(1);
19851 l_accrual_line_num            NUMBER;
19852 l_tmp_amt                     NUMBER;
19853 l_acc_rev_natural_side_code   VARCHAR2(1);
19854 
19855 l_num_entries                 NUMBER;
19856 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19857 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19858 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19859 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19860 l_recog_line_1                NUMBER;
19861 l_recog_line_2                NUMBER;
19862 
19863 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19864 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19865 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19866 
19867 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19868 
19869 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19870 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19871 
19872 ---------------------------------------------------------------------------------------------------------------
19873 
19874 
19875 --
19876 -- bulk performance
19877 --
19878 l_balance_type_code           VARCHAR2(1);
19879 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19880 l_log_module                  VARCHAR2(240);
19881 
19882 --
19883 -- Upgrade strategy
19884 --
19885 l_actual_upg_option           VARCHAR2(1);
19886 l_enc_upg_option           VARCHAR2(1);
19887 
19888 --
19889 BEGIN
19890 --
19891 IF g_log_enabled THEN
19892       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
19893 END IF;
19894 --
19895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19896 
19897       trace
19898          (p_msg      => 'BEGIN of AcctLineType_39'
19899          ,p_level    => C_LEVEL_PROCEDURE
19900          ,p_module   => l_log_module);
19901 
19902 END IF;
19903 --
19904 l_component_type             := 'AMB_JLT';
19905 l_component_code             := 'RELIEVE_BURDENED_POENC_FORREL';
19906 l_component_type_code        := 'S';
19907 l_component_appl_id          :=  201;
19908 l_amb_context_code           := 'DEFAULT';
19909 l_entity_code                := 'RELEASE';
19910 l_event_class_code           := 'RELEASE_BURDEN';
19911 l_event_type_code            := 'RELEASE_BURDEN_ALL';
19912 l_line_definition_owner_code := 'S';
19913 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
19914 --
19915 l_balance_type_code          := 'E';
19916 l_segment                     := NULL;
19917 l_ccid                        := NULL;
19918 l_adr_transaction_coa_id      := NULL;
19919 l_adr_accounting_coa_id       := NULL;
19920 l_adr_flexfield_segment_code  := NULL;
19921 l_adr_flex_value_set_id       := NULL;
19922 l_adr_value_type_code         := NULL;
19923 l_adr_value_combination_id    := NULL;
19924 l_adr_value_segment_code      := NULL;
19925 
19926 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
19927 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
19928 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19929 l_budgetary_control_flag     := 'Y';
19930 
19931 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19932 l_bflow_applied_to_amt       := NULL; -- 5132302
19933 l_entered_amt_idx            := NULL;          -- 4262811
19934 l_accted_amt_idx             := NULL;          -- 4262811
19935 l_acc_rev_flag               := NULL;          -- 4262811
19936 l_accrual_line_num           := NULL;          -- 4262811
19937 l_tmp_amt                    := NULL;          -- 4262811
19938 --
19939  
19940 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19941     l_balance_type_code <> 'B' THEN
19942 IF NVL(
19943 xla_ae_sources_pkg.GetSystemSourceChar(
19944    p_source_code           => 'XLA_EVENT_TYPE_CODE'
19945  , p_source_type_code      => 'Y'
19946  , p_source_application_id =>  602
19947 ),'
19948 ') =  'REL_BURDEN_RESERVED' AND 
19949 (NVL(p_source_13,'
19950 ') =  'B_PO' OR 
19951 NVL(p_source_13,'
19952 ') =  'B_PA') AND 
19953 (NVL(p_source_14,'
19954 ') =  'N' OR 
19955 NVL(p_source_14,'
19956 ') =  'O') AND 
19957 NVL(p_source_9,'
19958 ') =  'PO' AND 
19959 NVL(p_source_15,'
19960 ') =  'S'
19961  THEN 
19962 
19963    --
19964    XLA_AE_LINES_PKG.SetNewLine;
19965 
19966    p_balance_type_code          := l_balance_type_code;
19967    -- set the flag so later we will know whether the gain loss line needs to be created
19968    
19969    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19970      p_actual_flag :='A';
19971    END IF;
19972 
19973    --
19974    -- bulk performance
19975    --
19976    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19977                                       p_header_num   => 0); -- 4262811
19978    --
19979    -- set accounting line options
19980    --
19981    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19982            p_natural_side_code          => 'C'
19983          , p_gain_or_loss_flag          => 'N'
19984          , p_gl_transfer_mode_code      => 'S'
19985          , p_acct_entry_type_code       => 'E'
19986          , p_switch_side_flag           => 'N'
19987          , p_merge_duplicate_code       => 'N'
19988          );
19989    --
19990    l_acc_rev_natural_side_code := 'D';  -- 4262811
19991    -- 
19992    --
19993    -- set accounting line type info
19994    --
19995    xla_ae_lines_pkg.SetAcctLineType
19996       (p_component_type             => l_component_type
19997       ,p_event_type_code            => l_event_type_code
19998       ,p_line_definition_owner_code => l_line_definition_owner_code
19999       ,p_line_definition_code       => l_line_definition_code
20000       ,p_accounting_line_code       => l_component_code
20001       ,p_accounting_line_type_code  => l_component_type_code
20002       ,p_accounting_line_appl_id    => l_component_appl_id
20003       ,p_amb_context_code           => l_amb_context_code
20004       ,p_entity_code                => l_entity_code
20005       ,p_event_class_code           => l_event_class_code);
20006    --
20007    -- set accounting class
20008    --
20009    xla_ae_lines_pkg.SetAcctClass(
20010            p_accounting_class_code  => 'PO_PA_BURDENED'
20011          , p_ae_header_id           => l_ae_header_id
20012          );
20013 
20014    --
20015    -- set rounding class
20016    --
20017    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20018                       'PO_PA_BURDENED';
20019 
20020    --
20021    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20022    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20023    --
20024    -- bulk performance
20025    --
20026    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20027 
20028    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20029       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20030 
20031    -- 4955764
20032    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20033       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20034 
20035    -- 4458381 Public Sector Enh
20036    
20037    --
20038    -- set accounting attributes for the line type
20039    --
20040    l_entered_amt_idx := 28;
20041    l_accted_amt_idx  := 30;
20042    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20043    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20044    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
20045    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
20046    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
20047    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
20048    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
20049    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
20050    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
20051    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
20052    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
20053    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
20054    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
20055    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
20056    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
20057    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
20058    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
20059    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20060    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
20061    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
20062    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
20063    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
20064    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
20065    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20066    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
20067    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
20068    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
20069    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
20070    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
20071    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
20072    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
20073    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
20074    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
20075    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
20076    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
20077    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
20078    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
20079    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
20080    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
20081    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
20082    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
20083    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
20084    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
20085    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
20086    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
20087    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
20088    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
20089    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
20090    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
20091    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
20092    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
20093    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
20094    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
20095    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
20096    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
20097    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
20098    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
20099    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
20100    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
20101    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
20102    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
20103    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
20104    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
20105    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
20106    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
20107    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
20108    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
20109    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
20110    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
20111    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
20112    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
20113 
20114    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20115    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20116 
20117    ---------------------------------------------------------------------------------------------------------------
20118    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20119    ---------------------------------------------------------------------------------------------------------------
20120    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20121 
20122    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20123    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20124 
20125    IF xla_accounting_cache_pkg.GetValueChar
20126          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20127          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20128    AND l_bflow_method_code = 'PRIOR_ENTRY'
20129 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20130    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20131          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20132        )
20133    THEN
20134          xla_ae_lines_pkg.BflowUpgEntry
20135            (p_business_method_code    => l_bflow_method_code
20136            ,p_business_class_code     => l_bflow_class_code
20137            ,p_balance_type            => l_balance_type_code);
20138    ELSE
20139       NULL;
20140 XLA_AE_LINES_PKG.business_flow_validation(
20141                                 p_business_method_code     => l_bflow_method_code
20142                                ,p_business_class_code      => l_bflow_class_code
20143                                ,p_inherit_description_flag => l_inherit_desc_flag);
20144    END IF;
20145 
20146    --
20147    -- call analytical criteria
20148    --
20149    -- Inherited Analytical Criteria for business flow method of Prior Entry.
20150    --
20151    -- call description
20152    --
20153    
20154 xla_ae_lines_pkg.SetLineDescription(
20155    p_ae_header_id => l_ae_header_id
20156   ,p_description  => Description_2 (
20157      p_application_id         => p_application_id
20158    , p_ae_header_id           => l_ae_header_id 
20159 , p_source_3 => p_source_3
20160 , p_source_4 => p_source_4
20161 , p_source_5 => p_source_5
20162 , p_source_6 => p_source_6
20163    )
20164 );
20165 
20166 
20167    --
20168    -- call ADRs
20169    -- Bug 4922099
20170    --
20171    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20172         (NVL(l_actual_upg_option, 'N') = 'O') OR
20173         (NVL(l_enc_upg_option, 'N') = 'O')
20174       )
20175    THEN
20176    NULL;
20177    --
20178    --
20179    
20180    --
20181    --
20182    END IF;
20183    --
20184    -- Bug 4922099
20185    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20186           (NVL(l_enc_upg_option, 'N') = 'O')
20187         ) AND
20188         (l_bflow_method_code = 'PRIOR_ENTRY')
20189       )
20190    THEN
20191       IF
20192       --
20193       1 = 1
20194       --
20195       THEN
20196       xla_accounting_err_pkg.build_message
20197                                     (p_appli_s_name            => 'XLA'
20198                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20199                                     ,p_token_1                 => 'LINE_NUMBER'
20200                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20201                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20202                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20203                                                                              l_component_type
20204                                                                             ,l_component_code
20205                                                                             ,l_component_type_code
20206                                                                             ,l_component_appl_id
20207                                                                             ,l_amb_context_code
20208                                                                             ,l_entity_code
20209                                                                             ,l_event_class_code
20210                                                                            )
20211                                     ,p_token_3                 => 'OWNER'
20212                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20213                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20214                                                                           ,p_lookup_code    => l_component_type_code
20215                                                                          )
20216                                     ,p_token_4                 => 'PRODUCT_NAME'
20217                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20218                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20219                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20220                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20221                                     ,p_ae_header_id            =>  NULL
20222                                        );
20223 
20224         IF (C_LEVEL_ERROR>= g_log_level) THEN
20225                  trace
20226                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20227                       ,p_level    => C_LEVEL_ERROR
20228                       ,p_module   => l_log_module);
20229         END IF;
20230       END IF;
20231    END IF;
20232    --
20233    --
20234    ------------------------------------------------------------------------------------------------
20235    -- 4219869 Business Flow
20236    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20237    -- Prior Entry.  Currently, the following code is always generated.
20238    ------------------------------------------------------------------------------------------------
20239    -- No ValidateCurrentLine for business flow method of Prior Entry
20240 
20241    ------------------------------------------------------------------------------------
20242    -- 4219869 Business Flow
20243    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20244    ------------------------------------------------------------------------------------
20245    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20246 
20247    ----------------------------------------------------------------------------------
20248    -- 4219869 Business Flow
20249    -- Update journal entry status -- Need to generate this within IF <condition>
20250    ----------------------------------------------------------------------------------
20251    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20252          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20253          ,p_balance_type_code => l_balance_type_code
20254          );
20255 
20256    -------------------------------------------------------------------------------------------
20257    -- 4262811 - Generate the Accrual Reversal lines
20258    -------------------------------------------------------------------------------------------
20259    BEGIN
20260       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20261                               (g_array_event(p_event_id).array_value_num('header_index'));
20262       IF l_acc_rev_flag IS NULL THEN
20263          l_acc_rev_flag := 'N';
20264       END IF;
20265    EXCEPTION
20266       WHEN OTHERS THEN
20267          l_acc_rev_flag := 'N';
20268    END;
20269    --
20270    IF (l_acc_rev_flag = 'Y') THEN
20271 
20272        -- 4645092  ------------------------------------------------------------------------------
20273        -- To allow MPA report to determine if it should generate report process
20274        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20275        ------------------------------------------------------------------------------------------
20276 
20277        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20278        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20279 
20280        --
20281        -- Update the line information that should be overwritten
20282        --
20283        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20284                                          p_header_num   => 1);
20285        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20286 
20287        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20288 
20289        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20290           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20291        END IF;
20292 
20293       --
20294       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20295       --
20296       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20297           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20298       ELSE
20299           ---------------------------------------------------------------------------------------------------
20300           -- 4262811a Switch Sign
20301           ---------------------------------------------------------------------------------------------------
20302           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20303           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20304                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20305           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20306                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20307           -- 5132302
20308           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20309                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20310 
20311       END IF;
20312 
20313       -- 4955764
20314       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20315       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20316 
20317 
20318       XLA_AE_LINES_PKG.ValidateCurrentLine;
20319       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20320 
20321       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20322                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20323                ,p_balance_type_code => l_balance_type_code);
20324 
20325    END IF;
20326 
20327    -----------------------------------------------------------------------------------------
20328    -- 4262811 Multiperiod Accounting
20329    -----------------------------------------------------------------------------------------
20330      -- No MPA option is assigned.
20331 
20332 
20333 END IF;
20334 END IF;
20335 --
20336 
20337 --
20338 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20339    trace
20340       (p_msg      => 'END of AcctLineType_39'
20341       ,p_level    => C_LEVEL_PROCEDURE
20342       ,p_module   => l_log_module);
20343 END IF;
20344 --
20345 EXCEPTION
20346   WHEN xla_exceptions_pkg.application_exception THEN
20347       RAISE;
20348   WHEN OTHERS THEN
20349        xla_exceptions_pkg.raise_message
20350            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_39');
20351 END AcctLineType_39;
20352 --
20353 
20354 ---------------------------------------
20355 --
20356 -- PRIVATE FUNCTION
20357 --         AcctLineType_40
20358 --
20359 ---------------------------------------
20360 PROCEDURE AcctLineType_40 (
20361   p_application_id        IN NUMBER
20362  ,p_event_id              IN NUMBER
20363  ,p_calculate_acctd_flag  IN VARCHAR2
20364  ,p_calculate_g_l_flag    IN VARCHAR2
20365  ,p_actual_flag           IN OUT VARCHAR2
20366  ,p_balance_type_code     OUT VARCHAR2
20367  ,p_gain_or_loss_ref      OUT VARCHAR2
20368  
20369 --Project Name
20370  , p_source_3            IN VARCHAR2
20371 --Task Name
20372  , p_source_4            IN VARCHAR2
20373 --Project Expenditure Organization Identifier
20374  , p_source_5            IN NUMBER
20375 --Expenditure Type
20376  , p_source_6            IN VARCHAR2
20377 --Document Type
20378  , p_source_9            IN VARCHAR2
20379 --Main Or Backing Code
20380  , p_source_13            IN VARCHAR2
20381 --Burden Record Identifier
20382  , p_source_14            IN VARCHAR2
20383  , p_source_14_meaning    IN VARCHAR2
20384 --Burden Amount Display Method
20385  , p_source_15            IN VARCHAR2
20386 --Accounting Reversal Flag
20387  , p_source_16            IN VARCHAR2
20388 --Allocated to Application Identifier
20389  , p_source_17            IN NUMBER
20390 --Allocated to Distribution Type
20391  , p_source_18            IN VARCHAR2
20392 --Allocated to Entity Code
20393  , p_source_19            IN VARCHAR2
20394 --Allocated to First Distribution Identifier
20395  , p_source_20            IN NUMBER
20396 --Allocated to First System Transaction Identifier
20397  , p_source_21            IN NUMBER
20398 --PO Distribution Identifier
20399  , p_source_29            IN NUMBER
20400 --Line Type Name
20401  , p_source_30            IN VARCHAR2
20402 --Encumbrance Upgrade Credit Accounting Class
20403  , p_source_31            IN VARCHAR2
20404 --Encumbrance Upgrade Credit Account
20405  , p_source_32            IN NUMBER
20406 --Entered Amount
20407  , p_source_33            IN NUMBER
20408 --Currency Code
20409  , p_source_34            IN VARCHAR2
20410 --Accounted Amount
20411  , p_source_35            IN NUMBER
20412 --Encumbrance Upgrade Debit Accounting Class
20413  , p_source_36            IN VARCHAR2
20414 --Encumbrance Upgrade Debit Account
20415  , p_source_37            IN NUMBER
20416 --Use Encumbrances Upgrade Attributes Flag
20417  , p_source_38            IN VARCHAR2
20418 --Encumbrance Upgrade Credit Encumbrance Type
20419  , p_source_39            IN NUMBER
20420 --Encumbrance Upgrade Debit Encumbrance Type
20421  , p_source_40            IN NUMBER
20422 --Requisition Burden Applied to Application Identifier
20423  , p_source_41            IN NUMBER
20424 --Requisition Distribution Type
20425  , p_source_42            IN VARCHAR2
20426 --Requisition Burden Applied to Entity Code
20427  , p_source_43            IN VARCHAR2
20428 --Requisition Burden Applied to First Distribution Identifier
20429  , p_source_44            IN NUMBER
20430 --Requisition Burden Applied to First System Transaction Identifier
20431  , p_source_45            IN NUMBER
20432 --Requisition Burden Applied to Second Distribution Identifier
20433  , p_source_46            IN VARCHAR2
20434 --Backing Requisition Prevent Encumbrance Flag Flipped
20435  , p_source_67            IN VARCHAR2
20436 )
20437 IS
20438 
20439 l_component_type              VARCHAR2(80);
20440 l_component_code              VARCHAR2(30);
20441 l_component_type_code         VARCHAR2(1);
20442 l_component_appl_id           INTEGER;
20443 l_amb_context_code            VARCHAR2(30);
20444 l_entity_code                 VARCHAR2(30);
20445 l_event_class_code            VARCHAR2(30);
20446 l_ae_header_id                NUMBER;
20447 l_event_type_code             VARCHAR2(30);
20448 l_line_definition_code        VARCHAR2(30);
20449 l_line_definition_owner_code  VARCHAR2(1);
20450 --
20451 -- adr variables
20452 l_segment                     VARCHAR2(30);
20453 l_ccid                        NUMBER;
20454 l_adr_transaction_coa_id      NUMBER;
20455 l_adr_accounting_coa_id       NUMBER;
20456 l_adr_flexfield_segment_code  VARCHAR2(30);
20457 l_adr_flex_value_set_id       NUMBER;
20458 l_adr_value_type_code         VARCHAR2(30);
20459 l_adr_value_combination_id    NUMBER;
20460 l_adr_value_segment_code      VARCHAR2(30);
20461 
20462 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20463 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20464 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20465 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20466 
20467 -- 4262811 Variables ------------------------------------------------------------------------------------------
20468 l_entered_amt_idx             NUMBER;
20469 l_accted_amt_idx              NUMBER;
20470 l_acc_rev_flag                VARCHAR2(1);
20471 l_accrual_line_num            NUMBER;
20472 l_tmp_amt                     NUMBER;
20473 l_acc_rev_natural_side_code   VARCHAR2(1);
20474 
20475 l_num_entries                 NUMBER;
20476 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20477 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20478 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20479 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20480 l_recog_line_1                NUMBER;
20481 l_recog_line_2                NUMBER;
20482 
20483 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20484 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20485 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20486 
20487 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20488 
20489 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20490 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20491 
20492 ---------------------------------------------------------------------------------------------------------------
20493 
20494 
20495 --
20496 -- bulk performance
20497 --
20498 l_balance_type_code           VARCHAR2(1);
20499 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20500 l_log_module                  VARCHAR2(240);
20501 
20502 --
20503 -- Upgrade strategy
20504 --
20505 l_actual_upg_option           VARCHAR2(1);
20506 l_enc_upg_option           VARCHAR2(1);
20507 
20508 --
20509 BEGIN
20510 --
20511 IF g_log_enabled THEN
20512       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
20513 END IF;
20514 --
20515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20516 
20517       trace
20518          (p_msg      => 'BEGIN of AcctLineType_40'
20519          ,p_level    => C_LEVEL_PROCEDURE
20520          ,p_module   => l_log_module);
20521 
20522 END IF;
20523 --
20524 l_component_type             := 'AMB_JLT';
20525 l_component_code             := 'RELIEVE_BURDENED_REQENC_FORPO';
20526 l_component_type_code        := 'S';
20527 l_component_appl_id          :=  201;
20528 l_amb_context_code           := 'DEFAULT';
20529 l_entity_code                := 'PURCHASE_ORDER';
20530 l_event_class_code           := 'PO_BURDEN';
20531 l_event_type_code            := 'PO_BURDEN_ALL';
20532 l_line_definition_owner_code := 'S';
20533 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
20534 --
20535 l_balance_type_code          := 'E';
20536 l_segment                     := NULL;
20537 l_ccid                        := NULL;
20538 l_adr_transaction_coa_id      := NULL;
20539 l_adr_accounting_coa_id       := NULL;
20540 l_adr_flexfield_segment_code  := NULL;
20541 l_adr_flex_value_set_id       := NULL;
20542 l_adr_value_type_code         := NULL;
20543 l_adr_value_combination_id    := NULL;
20544 l_adr_value_segment_code      := NULL;
20545 
20546 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
20547 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
20548 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20549 l_budgetary_control_flag     := 'Y';
20550 
20551 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20552 l_bflow_applied_to_amt       := NULL; -- 5132302
20553 l_entered_amt_idx            := NULL;          -- 4262811
20554 l_accted_amt_idx             := NULL;          -- 4262811
20555 l_acc_rev_flag               := NULL;          -- 4262811
20556 l_accrual_line_num           := NULL;          -- 4262811
20557 l_tmp_amt                    := NULL;          -- 4262811
20558 --
20559  
20560 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20561     l_balance_type_code <> 'B' THEN
20562 IF NVL(
20563 xla_ae_sources_pkg.GetSystemSourceChar(
20564    p_source_code           => 'XLA_EVENT_TYPE_CODE'
20565  , p_source_type_code      => 'Y'
20566  , p_source_application_id =>  602
20567 ),'
20568 ') =  'PO_BURDEN_RESERVED' AND 
20569 NVL(p_source_13,'
20570 ') =  'B_REQ' AND 
20571 (NVL(p_source_14,'
20572 ') =  'N' OR 
20573 NVL(p_source_14,'
20574 ') =  'O') AND 
20575 NVL(p_source_9,'
20576 ') =  'REQ' AND 
20577 NVL(p_source_15,'
20578 ') =  'S' AND 
20579 NVL(p_source_67,'
20580 ') <>  'Y'
20581  THEN 
20582 
20583    --
20584    XLA_AE_LINES_PKG.SetNewLine;
20585 
20586    p_balance_type_code          := l_balance_type_code;
20587    -- set the flag so later we will know whether the gain loss line needs to be created
20588    
20589    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20590      p_actual_flag :='A';
20591    END IF;
20592 
20593    --
20594    -- bulk performance
20595    --
20596    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20597                                       p_header_num   => 0); -- 4262811
20598    --
20599    -- set accounting line options
20600    --
20601    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20602            p_natural_side_code          => 'C'
20603          , p_gain_or_loss_flag          => 'N'
20604          , p_gl_transfer_mode_code      => 'S'
20605          , p_acct_entry_type_code       => 'E'
20606          , p_switch_side_flag           => 'N'
20607          , p_merge_duplicate_code       => 'N'
20608          );
20609    --
20610    l_acc_rev_natural_side_code := 'D';  -- 4262811
20611    -- 
20612    --
20613    -- set accounting line type info
20614    --
20615    xla_ae_lines_pkg.SetAcctLineType
20616       (p_component_type             => l_component_type
20617       ,p_event_type_code            => l_event_type_code
20618       ,p_line_definition_owner_code => l_line_definition_owner_code
20619       ,p_line_definition_code       => l_line_definition_code
20620       ,p_accounting_line_code       => l_component_code
20621       ,p_accounting_line_type_code  => l_component_type_code
20622       ,p_accounting_line_appl_id    => l_component_appl_id
20623       ,p_amb_context_code           => l_amb_context_code
20624       ,p_entity_code                => l_entity_code
20625       ,p_event_class_code           => l_event_class_code);
20626    --
20627    -- set accounting class
20628    --
20629    xla_ae_lines_pkg.SetAcctClass(
20630            p_accounting_class_code  => 'REQ_PA_BURDENED'
20631          , p_ae_header_id           => l_ae_header_id
20632          );
20633 
20634    --
20635    -- set rounding class
20636    --
20637    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20638                       'REQ_PA_BURDENED';
20639 
20640    --
20641    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20642    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20643    --
20644    -- bulk performance
20645    --
20646    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20647 
20648    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20649       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20650 
20651    -- 4955764
20652    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20653       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20654 
20655    -- 4458381 Public Sector Enh
20656    
20657    --
20658    -- set accounting attributes for the line type
20659    --
20660    l_entered_amt_idx := 27;
20661    l_accted_amt_idx  := 29;
20662    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20663    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20664    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
20665    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
20666    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
20667    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
20668    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
20669    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
20670    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
20671    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
20672    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
20673    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
20674    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
20675    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
20676    l_rec_acct_attrs.array_num_value(7)  := p_source_41;
20677    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20678    l_rec_acct_attrs.array_char_value(8)  := p_source_42;
20679    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
20680    l_rec_acct_attrs.array_char_value(9)  := p_source_43;
20681    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
20682    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_44);
20683    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20684    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_45);
20685    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
20686    l_rec_acct_attrs.array_char_value(12)  := p_source_46;
20687    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
20688    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
20689    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
20690    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
20691    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
20692    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
20693    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
20694    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
20695    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
20696    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
20697    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
20698    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
20699    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
20700    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
20701    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
20702    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
20703    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
20704    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
20705    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
20706    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
20707    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
20708    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
20709    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
20710    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
20711    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
20712    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
20713    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
20714    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
20715    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
20716    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
20717    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
20718    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
20719    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
20720    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
20721    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
20722    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
20723    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
20724    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
20725    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
20726    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
20727    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
20728    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
20729    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
20730    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
20731 
20732    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20733    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20734 
20735    ---------------------------------------------------------------------------------------------------------------
20736    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20737    ---------------------------------------------------------------------------------------------------------------
20738    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20739 
20740    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20741    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20742 
20743    IF xla_accounting_cache_pkg.GetValueChar
20744          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20745          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20746    AND l_bflow_method_code = 'PRIOR_ENTRY'
20747 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20748    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20749          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20750        )
20751    THEN
20752          xla_ae_lines_pkg.BflowUpgEntry
20753            (p_business_method_code    => l_bflow_method_code
20754            ,p_business_class_code     => l_bflow_class_code
20755            ,p_balance_type            => l_balance_type_code);
20756    ELSE
20757       NULL;
20758 XLA_AE_LINES_PKG.business_flow_validation(
20759                                 p_business_method_code     => l_bflow_method_code
20760                                ,p_business_class_code      => l_bflow_class_code
20761                                ,p_inherit_description_flag => l_inherit_desc_flag);
20762    END IF;
20763 
20764    --
20765    -- call analytical criteria
20766    --
20767    -- Inherited Analytical Criteria for business flow method of Prior Entry.
20768    --
20769    -- call description
20770    --
20771    
20772 xla_ae_lines_pkg.SetLineDescription(
20773    p_ae_header_id => l_ae_header_id
20774   ,p_description  => Description_2 (
20775      p_application_id         => p_application_id
20776    , p_ae_header_id           => l_ae_header_id 
20777 , p_source_3 => p_source_3
20778 , p_source_4 => p_source_4
20779 , p_source_5 => p_source_5
20780 , p_source_6 => p_source_6
20781    )
20782 );
20783 
20784 
20785    --
20786    -- call ADRs
20787    -- Bug 4922099
20788    --
20789    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20790         (NVL(l_actual_upg_option, 'N') = 'O') OR
20791         (NVL(l_enc_upg_option, 'N') = 'O')
20792       )
20793    THEN
20794    NULL;
20795    --
20796    --
20797    
20798    --
20799    --
20800    END IF;
20801    --
20802    -- Bug 4922099
20803    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20804           (NVL(l_enc_upg_option, 'N') = 'O')
20805         ) AND
20806         (l_bflow_method_code = 'PRIOR_ENTRY')
20807       )
20808    THEN
20809       IF
20810       --
20811       1 = 1
20812       --
20813       THEN
20814       xla_accounting_err_pkg.build_message
20815                                     (p_appli_s_name            => 'XLA'
20816                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20817                                     ,p_token_1                 => 'LINE_NUMBER'
20818                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20819                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20820                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20821                                                                              l_component_type
20822                                                                             ,l_component_code
20823                                                                             ,l_component_type_code
20824                                                                             ,l_component_appl_id
20825                                                                             ,l_amb_context_code
20826                                                                             ,l_entity_code
20827                                                                             ,l_event_class_code
20828                                                                            )
20829                                     ,p_token_3                 => 'OWNER'
20830                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20831                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20832                                                                           ,p_lookup_code    => l_component_type_code
20833                                                                          )
20834                                     ,p_token_4                 => 'PRODUCT_NAME'
20835                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20836                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20837                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20838                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20839                                     ,p_ae_header_id            =>  NULL
20840                                        );
20841 
20842         IF (C_LEVEL_ERROR>= g_log_level) THEN
20843                  trace
20844                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20845                       ,p_level    => C_LEVEL_ERROR
20846                       ,p_module   => l_log_module);
20847         END IF;
20848       END IF;
20849    END IF;
20850    --
20851    --
20852    ------------------------------------------------------------------------------------------------
20853    -- 4219869 Business Flow
20854    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20855    -- Prior Entry.  Currently, the following code is always generated.
20856    ------------------------------------------------------------------------------------------------
20857    -- No ValidateCurrentLine for business flow method of Prior Entry
20858 
20859    ------------------------------------------------------------------------------------
20860    -- 4219869 Business Flow
20861    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20862    ------------------------------------------------------------------------------------
20863    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20864 
20865    ----------------------------------------------------------------------------------
20866    -- 4219869 Business Flow
20867    -- Update journal entry status -- Need to generate this within IF <condition>
20868    ----------------------------------------------------------------------------------
20869    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20870          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20871          ,p_balance_type_code => l_balance_type_code
20872          );
20873 
20874    -------------------------------------------------------------------------------------------
20875    -- 4262811 - Generate the Accrual Reversal lines
20876    -------------------------------------------------------------------------------------------
20877    BEGIN
20878       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20879                               (g_array_event(p_event_id).array_value_num('header_index'));
20880       IF l_acc_rev_flag IS NULL THEN
20881          l_acc_rev_flag := 'N';
20882       END IF;
20883    EXCEPTION
20884       WHEN OTHERS THEN
20885          l_acc_rev_flag := 'N';
20886    END;
20887    --
20888    IF (l_acc_rev_flag = 'Y') THEN
20889 
20890        -- 4645092  ------------------------------------------------------------------------------
20891        -- To allow MPA report to determine if it should generate report process
20892        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20893        ------------------------------------------------------------------------------------------
20894 
20895        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20896        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20897 
20898        --
20899        -- Update the line information that should be overwritten
20900        --
20901        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20902                                          p_header_num   => 1);
20903        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20904 
20905        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20906 
20907        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20908           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20909        END IF;
20910 
20911       --
20912       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20913       --
20914       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20915           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20916       ELSE
20917           ---------------------------------------------------------------------------------------------------
20918           -- 4262811a Switch Sign
20919           ---------------------------------------------------------------------------------------------------
20920           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20921           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20922                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20923           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20924                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20925           -- 5132302
20926           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20927                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20928 
20929       END IF;
20930 
20931       -- 4955764
20932       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20933       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20934 
20935 
20936       XLA_AE_LINES_PKG.ValidateCurrentLine;
20937       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20938 
20939       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20940                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20941                ,p_balance_type_code => l_balance_type_code);
20942 
20943    END IF;
20944 
20945    -----------------------------------------------------------------------------------------
20946    -- 4262811 Multiperiod Accounting
20947    -----------------------------------------------------------------------------------------
20948      -- No MPA option is assigned.
20949 
20950 
20951 END IF;
20952 END IF;
20953 --
20954 
20955 --
20956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20957    trace
20958       (p_msg      => 'END of AcctLineType_40'
20959       ,p_level    => C_LEVEL_PROCEDURE
20960       ,p_module   => l_log_module);
20961 END IF;
20962 --
20963 EXCEPTION
20964   WHEN xla_exceptions_pkg.application_exception THEN
20965       RAISE;
20966   WHEN OTHERS THEN
20967        xla_exceptions_pkg.raise_message
20968            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_40');
20969 END AcctLineType_40;
20970 --
20971 
20972 ---------------------------------------
20973 --
20974 -- PRIVATE FUNCTION
20975 --         AcctLineType_41
20976 --
20977 ---------------------------------------
20978 PROCEDURE AcctLineType_41 (
20979   p_application_id        IN NUMBER
20980  ,p_event_id              IN NUMBER
20981  ,p_calculate_acctd_flag  IN VARCHAR2
20982  ,p_calculate_g_l_flag    IN VARCHAR2
20983  ,p_actual_flag           IN OUT VARCHAR2
20984  ,p_balance_type_code     OUT VARCHAR2
20985  ,p_gain_or_loss_ref      OUT VARCHAR2
20986  
20987 --Project Name
20988  , p_source_3            IN VARCHAR2
20989 --Task Name
20990  , p_source_4            IN VARCHAR2
20991 --Project Expenditure Organization Identifier
20992  , p_source_5            IN NUMBER
20993 --Expenditure Type
20994  , p_source_6            IN VARCHAR2
20995 --Document Type
20996  , p_source_9            IN VARCHAR2
20997 --Main Or Backing Code
20998  , p_source_13            IN VARCHAR2
20999 --Burden Record Identifier
21000  , p_source_14            IN VARCHAR2
21001  , p_source_14_meaning    IN VARCHAR2
21002 --Burden Amount Display Method
21003  , p_source_15            IN VARCHAR2
21004 --Accounting Reversal Flag
21005  , p_source_16            IN VARCHAR2
21006 --Allocated to Application Identifier
21007  , p_source_17            IN NUMBER
21008 --Allocated to Distribution Type
21009  , p_source_18            IN VARCHAR2
21010 --Allocated to Entity Code
21011  , p_source_19            IN VARCHAR2
21012 --Allocated to First Distribution Identifier
21013  , p_source_20            IN NUMBER
21014 --Allocated to First System Transaction Identifier
21015  , p_source_21            IN NUMBER
21016 --Allocated to Second Distribution Identifier
21017  , p_source_22            IN VARCHAR2
21018 --PO Distribution Identifier
21019  , p_source_29            IN NUMBER
21020 --Line Type Name
21021  , p_source_30            IN VARCHAR2
21022 --Encumbrance Upgrade Credit Accounting Class
21023  , p_source_31            IN VARCHAR2
21024 --Encumbrance Upgrade Credit Account
21025  , p_source_32            IN NUMBER
21026 --Entered Amount
21027  , p_source_33            IN NUMBER
21028 --Currency Code
21029  , p_source_34            IN VARCHAR2
21030 --Accounted Amount
21031  , p_source_35            IN NUMBER
21032 --Encumbrance Upgrade Debit Accounting Class
21033  , p_source_36            IN VARCHAR2
21034 --Encumbrance Upgrade Debit Account
21035  , p_source_37            IN NUMBER
21036 --Use Encumbrances Upgrade Attributes Flag
21037  , p_source_38            IN VARCHAR2
21038 --Encumbrance Upgrade Credit Encumbrance Type
21039  , p_source_39            IN NUMBER
21040 --Encumbrance Upgrade Debit Encumbrance Type
21041  , p_source_40            IN NUMBER
21042 --Requisition Burden Applied to Application Identifier
21043  , p_source_41            IN NUMBER
21044 --Requisition Distribution Type
21045  , p_source_42            IN VARCHAR2
21046 --Requisition Burden Applied to Entity Code
21047  , p_source_43            IN VARCHAR2
21048 --Requisition Burden Applied to First Distribution Identifier
21049  , p_source_44            IN NUMBER
21050 --Requisition Burden Applied to First System Transaction Identifier
21051  , p_source_45            IN NUMBER
21052 --Requisition Burden Applied to Second Distribution Identifier
21053  , p_source_46            IN VARCHAR2
21054 )
21055 IS
21056 
21057 l_component_type              VARCHAR2(80);
21058 l_component_code              VARCHAR2(30);
21059 l_component_type_code         VARCHAR2(1);
21060 l_component_appl_id           INTEGER;
21061 l_amb_context_code            VARCHAR2(30);
21062 l_entity_code                 VARCHAR2(30);
21063 l_event_class_code            VARCHAR2(30);
21064 l_ae_header_id                NUMBER;
21065 l_event_type_code             VARCHAR2(30);
21066 l_line_definition_code        VARCHAR2(30);
21067 l_line_definition_owner_code  VARCHAR2(1);
21068 --
21069 -- adr variables
21070 l_segment                     VARCHAR2(30);
21071 l_ccid                        NUMBER;
21072 l_adr_transaction_coa_id      NUMBER;
21073 l_adr_accounting_coa_id       NUMBER;
21074 l_adr_flexfield_segment_code  VARCHAR2(30);
21075 l_adr_flex_value_set_id       NUMBER;
21076 l_adr_value_type_code         VARCHAR2(30);
21077 l_adr_value_combination_id    NUMBER;
21078 l_adr_value_segment_code      VARCHAR2(30);
21079 
21080 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21081 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21082 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21083 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21084 
21085 -- 4262811 Variables ------------------------------------------------------------------------------------------
21086 l_entered_amt_idx             NUMBER;
21087 l_accted_amt_idx              NUMBER;
21088 l_acc_rev_flag                VARCHAR2(1);
21089 l_accrual_line_num            NUMBER;
21090 l_tmp_amt                     NUMBER;
21091 l_acc_rev_natural_side_code   VARCHAR2(1);
21092 
21093 l_num_entries                 NUMBER;
21094 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21095 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21096 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21097 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21098 l_recog_line_1                NUMBER;
21099 l_recog_line_2                NUMBER;
21100 
21101 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21102 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21103 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21104 
21105 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21106 
21107 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21108 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21109 
21110 ---------------------------------------------------------------------------------------------------------------
21111 
21112 
21113 --
21114 -- bulk performance
21115 --
21116 l_balance_type_code           VARCHAR2(1);
21117 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21118 l_log_module                  VARCHAR2(240);
21119 
21120 --
21121 -- Upgrade strategy
21122 --
21123 l_actual_upg_option           VARCHAR2(1);
21124 l_enc_upg_option           VARCHAR2(1);
21125 
21126 --
21127 BEGIN
21128 --
21129 IF g_log_enabled THEN
21130       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
21131 END IF;
21132 --
21133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21134 
21135       trace
21136          (p_msg      => 'BEGIN of AcctLineType_41'
21137          ,p_level    => C_LEVEL_PROCEDURE
21138          ,p_module   => l_log_module);
21139 
21140 END IF;
21141 --
21142 l_component_type             := 'AMB_JLT';
21143 l_component_code             := 'RELIEVE_BURDENED_REQENC_FORREL';
21144 l_component_type_code        := 'S';
21145 l_component_appl_id          :=  201;
21146 l_amb_context_code           := 'DEFAULT';
21147 l_entity_code                := 'RELEASE';
21148 l_event_class_code           := 'RELEASE_BURDEN';
21149 l_event_type_code            := 'RELEASE_BURDEN_ALL';
21150 l_line_definition_owner_code := 'S';
21151 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
21152 --
21153 l_balance_type_code          := 'E';
21154 l_segment                     := NULL;
21155 l_ccid                        := NULL;
21156 l_adr_transaction_coa_id      := NULL;
21157 l_adr_accounting_coa_id       := NULL;
21158 l_adr_flexfield_segment_code  := NULL;
21159 l_adr_flex_value_set_id       := NULL;
21160 l_adr_value_type_code         := NULL;
21161 l_adr_value_combination_id    := NULL;
21162 l_adr_value_segment_code      := NULL;
21163 
21164 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
21165 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
21166 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21167 l_budgetary_control_flag     := 'Y';
21168 
21169 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21170 l_bflow_applied_to_amt       := NULL; -- 5132302
21171 l_entered_amt_idx            := NULL;          -- 4262811
21172 l_accted_amt_idx             := NULL;          -- 4262811
21173 l_acc_rev_flag               := NULL;          -- 4262811
21174 l_accrual_line_num           := NULL;          -- 4262811
21175 l_tmp_amt                    := NULL;          -- 4262811
21176 --
21177  
21178 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21179     l_balance_type_code <> 'B' THEN
21180 IF NVL(
21181 xla_ae_sources_pkg.GetSystemSourceChar(
21182    p_source_code           => 'XLA_EVENT_TYPE_CODE'
21183  , p_source_type_code      => 'Y'
21184  , p_source_application_id =>  602
21185 ),'
21186 ') =  'REL_BURDEN_RESERVED' AND 
21187 NVL(p_source_13,'
21188 ') =  'B_REQ' AND 
21189 (NVL(p_source_14,'
21190 ') =  'N' OR 
21191 NVL(p_source_14,'
21192 ') =  'O') AND 
21193 NVL(p_source_9,'
21194 ') =  'REQ' AND 
21195 NVL(p_source_15,'
21196 ') =  'S'
21197  THEN 
21198 
21199    --
21200    XLA_AE_LINES_PKG.SetNewLine;
21201 
21202    p_balance_type_code          := l_balance_type_code;
21203    -- set the flag so later we will know whether the gain loss line needs to be created
21204    
21205    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21206      p_actual_flag :='A';
21207    END IF;
21208 
21209    --
21210    -- bulk performance
21211    --
21212    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21213                                       p_header_num   => 0); -- 4262811
21214    --
21215    -- set accounting line options
21216    --
21217    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21218            p_natural_side_code          => 'C'
21219          , p_gain_or_loss_flag          => 'N'
21220          , p_gl_transfer_mode_code      => 'S'
21221          , p_acct_entry_type_code       => 'E'
21222          , p_switch_side_flag           => 'N'
21223          , p_merge_duplicate_code       => 'N'
21224          );
21225    --
21226    l_acc_rev_natural_side_code := 'D';  -- 4262811
21227    -- 
21228    --
21229    -- set accounting line type info
21230    --
21231    xla_ae_lines_pkg.SetAcctLineType
21232       (p_component_type             => l_component_type
21233       ,p_event_type_code            => l_event_type_code
21234       ,p_line_definition_owner_code => l_line_definition_owner_code
21235       ,p_line_definition_code       => l_line_definition_code
21236       ,p_accounting_line_code       => l_component_code
21237       ,p_accounting_line_type_code  => l_component_type_code
21238       ,p_accounting_line_appl_id    => l_component_appl_id
21239       ,p_amb_context_code           => l_amb_context_code
21240       ,p_entity_code                => l_entity_code
21241       ,p_event_class_code           => l_event_class_code);
21242    --
21243    -- set accounting class
21244    --
21245    xla_ae_lines_pkg.SetAcctClass(
21246            p_accounting_class_code  => 'REQ_PA_BURDENED'
21247          , p_ae_header_id           => l_ae_header_id
21248          );
21249 
21250    --
21251    -- set rounding class
21252    --
21253    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21254                       'REQ_PA_BURDENED';
21255 
21256    --
21257    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21258    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21259    --
21260    -- bulk performance
21261    --
21262    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21263 
21264    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21265       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21266 
21267    -- 4955764
21268    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21269       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21270 
21271    -- 4458381 Public Sector Enh
21272    
21273    --
21274    -- set accounting attributes for the line type
21275    --
21276    l_entered_amt_idx := 28;
21277    l_accted_amt_idx  := 30;
21278    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21279    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21280    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
21281    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
21282    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
21283    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
21284    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
21285    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
21286    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
21287    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
21288    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
21289    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
21290    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
21291    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
21292    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
21293    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
21294    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
21295    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
21296    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
21297    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
21298    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
21299    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
21300    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
21301    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
21302    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
21303    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
21304    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
21305    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
21306    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
21307    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
21308    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
21309    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
21310    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
21311    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
21312    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
21313    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
21314    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
21315    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
21316    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
21317    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
21318    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
21319    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
21320    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
21321    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
21322    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
21323    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
21324    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
21325    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
21326    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
21327    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
21328    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
21329    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
21330    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
21331    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
21332    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
21333    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
21334    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
21335    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
21336    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
21337    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
21338    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
21339    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
21340    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
21341    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
21342    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
21343    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
21344    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
21345    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
21346    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
21347    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
21348    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
21349 
21350    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21351    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21352 
21353    ---------------------------------------------------------------------------------------------------------------
21354    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21355    ---------------------------------------------------------------------------------------------------------------
21356    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21357 
21358    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21359    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21360 
21361    IF xla_accounting_cache_pkg.GetValueChar
21362          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21363          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21364    AND l_bflow_method_code = 'PRIOR_ENTRY'
21365 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21366    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21367          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21368        )
21369    THEN
21370          xla_ae_lines_pkg.BflowUpgEntry
21371            (p_business_method_code    => l_bflow_method_code
21372            ,p_business_class_code     => l_bflow_class_code
21373            ,p_balance_type            => l_balance_type_code);
21374    ELSE
21375       NULL;
21376 XLA_AE_LINES_PKG.business_flow_validation(
21377                                 p_business_method_code     => l_bflow_method_code
21378                                ,p_business_class_code      => l_bflow_class_code
21379                                ,p_inherit_description_flag => l_inherit_desc_flag);
21380    END IF;
21381 
21382    --
21383    -- call analytical criteria
21384    --
21385    -- Inherited Analytical Criteria for business flow method of Prior Entry.
21386    --
21387    -- call description
21388    --
21389    
21390 xla_ae_lines_pkg.SetLineDescription(
21391    p_ae_header_id => l_ae_header_id
21392   ,p_description  => Description_2 (
21393      p_application_id         => p_application_id
21394    , p_ae_header_id           => l_ae_header_id 
21395 , p_source_3 => p_source_3
21396 , p_source_4 => p_source_4
21397 , p_source_5 => p_source_5
21398 , p_source_6 => p_source_6
21399    )
21400 );
21401 
21402 
21403    --
21404    -- call ADRs
21405    -- Bug 4922099
21406    --
21407    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21408         (NVL(l_actual_upg_option, 'N') = 'O') OR
21409         (NVL(l_enc_upg_option, 'N') = 'O')
21410       )
21411    THEN
21412    NULL;
21413    --
21414    --
21415    
21416    --
21417    --
21418    END IF;
21419    --
21420    -- Bug 4922099
21421    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21422           (NVL(l_enc_upg_option, 'N') = 'O')
21423         ) AND
21424         (l_bflow_method_code = 'PRIOR_ENTRY')
21425       )
21426    THEN
21427       IF
21428       --
21429       1 = 1
21430       --
21431       THEN
21432       xla_accounting_err_pkg.build_message
21433                                     (p_appli_s_name            => 'XLA'
21434                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21435                                     ,p_token_1                 => 'LINE_NUMBER'
21436                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21437                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21438                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21439                                                                              l_component_type
21440                                                                             ,l_component_code
21441                                                                             ,l_component_type_code
21442                                                                             ,l_component_appl_id
21443                                                                             ,l_amb_context_code
21444                                                                             ,l_entity_code
21445                                                                             ,l_event_class_code
21446                                                                            )
21447                                     ,p_token_3                 => 'OWNER'
21448                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21449                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21450                                                                           ,p_lookup_code    => l_component_type_code
21451                                                                          )
21452                                     ,p_token_4                 => 'PRODUCT_NAME'
21453                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21454                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21455                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21456                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21457                                     ,p_ae_header_id            =>  NULL
21458                                        );
21459 
21460         IF (C_LEVEL_ERROR>= g_log_level) THEN
21461                  trace
21462                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21463                       ,p_level    => C_LEVEL_ERROR
21464                       ,p_module   => l_log_module);
21465         END IF;
21466       END IF;
21467    END IF;
21468    --
21469    --
21470    ------------------------------------------------------------------------------------------------
21471    -- 4219869 Business Flow
21472    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21473    -- Prior Entry.  Currently, the following code is always generated.
21474    ------------------------------------------------------------------------------------------------
21475    -- No ValidateCurrentLine for business flow method of Prior Entry
21476 
21477    ------------------------------------------------------------------------------------
21478    -- 4219869 Business Flow
21479    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21480    ------------------------------------------------------------------------------------
21481    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21482 
21483    ----------------------------------------------------------------------------------
21484    -- 4219869 Business Flow
21485    -- Update journal entry status -- Need to generate this within IF <condition>
21486    ----------------------------------------------------------------------------------
21487    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21488          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21489          ,p_balance_type_code => l_balance_type_code
21490          );
21491 
21492    -------------------------------------------------------------------------------------------
21493    -- 4262811 - Generate the Accrual Reversal lines
21494    -------------------------------------------------------------------------------------------
21495    BEGIN
21496       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21497                               (g_array_event(p_event_id).array_value_num('header_index'));
21498       IF l_acc_rev_flag IS NULL THEN
21499          l_acc_rev_flag := 'N';
21500       END IF;
21501    EXCEPTION
21502       WHEN OTHERS THEN
21503          l_acc_rev_flag := 'N';
21504    END;
21505    --
21506    IF (l_acc_rev_flag = 'Y') THEN
21507 
21508        -- 4645092  ------------------------------------------------------------------------------
21509        -- To allow MPA report to determine if it should generate report process
21510        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21511        ------------------------------------------------------------------------------------------
21512 
21513        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21514        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21515 
21516        --
21517        -- Update the line information that should be overwritten
21518        --
21519        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21520                                          p_header_num   => 1);
21521        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21522 
21523        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21524 
21525        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21526           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21527        END IF;
21528 
21529       --
21530       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21531       --
21532       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21533           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21534       ELSE
21535           ---------------------------------------------------------------------------------------------------
21536           -- 4262811a Switch Sign
21537           ---------------------------------------------------------------------------------------------------
21538           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21539           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21540                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21541           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21542                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21543           -- 5132302
21544           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21545                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21546 
21547       END IF;
21548 
21549       -- 4955764
21550       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21551       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21552 
21553 
21554       XLA_AE_LINES_PKG.ValidateCurrentLine;
21555       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21556 
21557       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21558                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21559                ,p_balance_type_code => l_balance_type_code);
21560 
21561    END IF;
21562 
21563    -----------------------------------------------------------------------------------------
21564    -- 4262811 Multiperiod Accounting
21565    -----------------------------------------------------------------------------------------
21566      -- No MPA option is assigned.
21567 
21568 
21569 END IF;
21570 END IF;
21571 --
21572 
21573 --
21574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21575    trace
21576       (p_msg      => 'END of AcctLineType_41'
21577       ,p_level    => C_LEVEL_PROCEDURE
21578       ,p_module   => l_log_module);
21579 END IF;
21580 --
21581 EXCEPTION
21582   WHEN xla_exceptions_pkg.application_exception THEN
21583       RAISE;
21584   WHEN OTHERS THEN
21585        xla_exceptions_pkg.raise_message
21586            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_41');
21587 END AcctLineType_41;
21588 --
21589 
21590 ---------------------------------------
21591 --
21592 -- PRIVATE FUNCTION
21593 --         AcctLineType_42
21594 --
21595 ---------------------------------------
21596 PROCEDURE AcctLineType_42 (
21597   p_application_id        IN NUMBER
21598  ,p_event_id              IN NUMBER
21599  ,p_calculate_acctd_flag  IN VARCHAR2
21600  ,p_calculate_g_l_flag    IN VARCHAR2
21601  ,p_actual_flag           IN OUT VARCHAR2
21602  ,p_balance_type_code     OUT VARCHAR2
21603  ,p_gain_or_loss_ref      OUT VARCHAR2
21604  
21605 --Project Name
21606  , p_source_3            IN VARCHAR2
21607 --Task Name
21608  , p_source_4            IN VARCHAR2
21609 --Project Expenditure Organization Identifier
21610  , p_source_5            IN NUMBER
21611 --Expenditure Type
21612  , p_source_6            IN VARCHAR2
21613 --Document Type
21614  , p_source_9            IN VARCHAR2
21615 --Main Or Backing Code
21616  , p_source_13            IN VARCHAR2
21617 --Burden Record Identifier
21618  , p_source_14            IN VARCHAR2
21619  , p_source_14_meaning    IN VARCHAR2
21620 --Burden Amount Display Method
21621  , p_source_15            IN VARCHAR2
21622 --Accounting Reversal Flag
21623  , p_source_16            IN VARCHAR2
21624 --Allocated to Application Identifier
21625  , p_source_17            IN NUMBER
21626 --Allocated to Distribution Type
21627  , p_source_18            IN VARCHAR2
21628 --Allocated to Entity Code
21629  , p_source_19            IN VARCHAR2
21630 --Allocated to First Distribution Identifier
21631  , p_source_20            IN NUMBER
21632 --Allocated to First System Transaction Identifier
21633  , p_source_21            IN NUMBER
21634 --Allocated to Second Distribution Identifier
21635  , p_source_22            IN VARCHAR2
21636 --Purchase Order Burden Applied to Application Identifier
21637  , p_source_23            IN NUMBER
21638 --PO Distribution Type
21639  , p_source_24            IN VARCHAR2
21640 --Purchase Order Burden Applied to Entity Code
21641  , p_source_25            IN VARCHAR2
21642 --Purchase Order Burden Applied to First Distribution Identifier
21643  , p_source_26            IN NUMBER
21644 --Purchase Order Burden Applied to First System Transaction Identifier
21645  , p_source_27            IN NUMBER
21646 --Purchase Order Burden Applied to Second Distribution Identifier
21647  , p_source_28            IN VARCHAR2
21648 --PO Distribution Identifier
21649  , p_source_29            IN NUMBER
21650 --Line Type Name
21651  , p_source_30            IN VARCHAR2
21652 --Encumbrance Upgrade Credit Accounting Class
21653  , p_source_31            IN VARCHAR2
21654 --Encumbrance Upgrade Credit Account
21655  , p_source_32            IN NUMBER
21656 --Entered Amount
21657  , p_source_33            IN NUMBER
21658 --Currency Code
21659  , p_source_34            IN VARCHAR2
21660 --Accounted Amount
21661  , p_source_35            IN NUMBER
21662 --Encumbrance Upgrade Debit Accounting Class
21663  , p_source_36            IN VARCHAR2
21664 --Encumbrance Upgrade Debit Account
21665  , p_source_37            IN NUMBER
21666 --Use Encumbrances Upgrade Attributes Flag
21667  , p_source_38            IN VARCHAR2
21668 --Encumbrance Upgrade Credit Encumbrance Type
21669  , p_source_39            IN NUMBER
21670 --Encumbrance Upgrade Debit Encumbrance Type
21671  , p_source_40            IN NUMBER
21672 )
21673 IS
21674 
21675 l_component_type              VARCHAR2(80);
21676 l_component_code              VARCHAR2(30);
21677 l_component_type_code         VARCHAR2(1);
21678 l_component_appl_id           INTEGER;
21679 l_amb_context_code            VARCHAR2(30);
21680 l_entity_code                 VARCHAR2(30);
21681 l_event_class_code            VARCHAR2(30);
21682 l_ae_header_id                NUMBER;
21683 l_event_type_code             VARCHAR2(30);
21684 l_line_definition_code        VARCHAR2(30);
21685 l_line_definition_owner_code  VARCHAR2(1);
21686 --
21687 -- adr variables
21688 l_segment                     VARCHAR2(30);
21689 l_ccid                        NUMBER;
21690 l_adr_transaction_coa_id      NUMBER;
21691 l_adr_accounting_coa_id       NUMBER;
21692 l_adr_flexfield_segment_code  VARCHAR2(30);
21693 l_adr_flex_value_set_id       NUMBER;
21694 l_adr_value_type_code         VARCHAR2(30);
21695 l_adr_value_combination_id    NUMBER;
21696 l_adr_value_segment_code      VARCHAR2(30);
21697 
21698 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21699 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21700 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21701 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21702 
21703 -- 4262811 Variables ------------------------------------------------------------------------------------------
21704 l_entered_amt_idx             NUMBER;
21705 l_accted_amt_idx              NUMBER;
21706 l_acc_rev_flag                VARCHAR2(1);
21707 l_accrual_line_num            NUMBER;
21708 l_tmp_amt                     NUMBER;
21709 l_acc_rev_natural_side_code   VARCHAR2(1);
21710 
21711 l_num_entries                 NUMBER;
21712 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21713 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21714 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21715 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21716 l_recog_line_1                NUMBER;
21717 l_recog_line_2                NUMBER;
21718 
21719 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21720 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21721 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21722 
21723 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21724 
21725 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21726 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21727 
21728 ---------------------------------------------------------------------------------------------------------------
21729 
21730 
21731 --
21732 -- bulk performance
21733 --
21734 l_balance_type_code           VARCHAR2(1);
21735 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21736 l_log_module                  VARCHAR2(240);
21737 
21738 --
21739 -- Upgrade strategy
21740 --
21741 l_actual_upg_option           VARCHAR2(1);
21742 l_enc_upg_option           VARCHAR2(1);
21743 
21744 --
21745 BEGIN
21746 --
21747 IF g_log_enabled THEN
21748       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
21749 END IF;
21750 --
21751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21752 
21753       trace
21754          (p_msg      => 'BEGIN of AcctLineType_42'
21755          ,p_level    => C_LEVEL_PROCEDURE
21756          ,p_module   => l_log_module);
21757 
21758 END IF;
21759 --
21760 l_component_type             := 'AMB_JLT';
21761 l_component_code             := 'RELIEVE_BURDEN_PO_ENC_FOR_REL';
21762 l_component_type_code        := 'S';
21763 l_component_appl_id          :=  201;
21764 l_amb_context_code           := 'DEFAULT';
21765 l_entity_code                := 'RELEASE';
21766 l_event_class_code           := 'RELEASE_BURDEN';
21767 l_event_type_code            := 'RELEASE_BURDEN_ALL';
21768 l_line_definition_owner_code := 'S';
21769 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
21770 --
21771 l_balance_type_code          := 'E';
21772 l_segment                     := NULL;
21773 l_ccid                        := NULL;
21774 l_adr_transaction_coa_id      := NULL;
21775 l_adr_accounting_coa_id       := NULL;
21776 l_adr_flexfield_segment_code  := NULL;
21777 l_adr_flex_value_set_id       := NULL;
21778 l_adr_value_type_code         := NULL;
21779 l_adr_value_combination_id    := NULL;
21780 l_adr_value_segment_code      := NULL;
21781 
21782 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
21783 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
21784 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21785 l_budgetary_control_flag     := 'Y';
21786 
21787 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21788 l_bflow_applied_to_amt       := NULL; -- 5132302
21789 l_entered_amt_idx            := NULL;          -- 4262811
21790 l_accted_amt_idx             := NULL;          -- 4262811
21791 l_acc_rev_flag               := NULL;          -- 4262811
21792 l_accrual_line_num           := NULL;          -- 4262811
21793 l_tmp_amt                    := NULL;          -- 4262811
21794 --
21795  
21796 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21797     l_balance_type_code <> 'B' THEN
21798 IF NVL(
21799 xla_ae_sources_pkg.GetSystemSourceChar(
21800    p_source_code           => 'XLA_EVENT_TYPE_CODE'
21801  , p_source_type_code      => 'Y'
21802  , p_source_application_id =>  602
21803 ),'
21804 ') =  'REL_BURDEN_RESERVED' AND 
21805 (NVL(p_source_13,'
21806 ') =  'B_PO' OR 
21807 NVL(p_source_13,'
21808 ') =  'B_PA') AND 
21809 NVL(p_source_14,'
21810 ') =  'O' AND 
21811 NVL(p_source_9,'
21812 ') =  'PO' AND 
21813 NVL(p_source_15,'
21814 ') =  'D'
21815  THEN 
21816 
21817    --
21818    XLA_AE_LINES_PKG.SetNewLine;
21819 
21820    p_balance_type_code          := l_balance_type_code;
21821    -- set the flag so later we will know whether the gain loss line needs to be created
21822    
21823    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21824      p_actual_flag :='A';
21825    END IF;
21826 
21827    --
21828    -- bulk performance
21829    --
21830    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21831                                       p_header_num   => 0); -- 4262811
21832    --
21833    -- set accounting line options
21834    --
21835    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21836            p_natural_side_code          => 'C'
21837          , p_gain_or_loss_flag          => 'N'
21838          , p_gl_transfer_mode_code      => 'S'
21839          , p_acct_entry_type_code       => 'E'
21840          , p_switch_side_flag           => 'N'
21841          , p_merge_duplicate_code       => 'N'
21842          );
21843    --
21844    l_acc_rev_natural_side_code := 'D';  -- 4262811
21845    -- 
21846    --
21847    -- set accounting line type info
21848    --
21849    xla_ae_lines_pkg.SetAcctLineType
21850       (p_component_type             => l_component_type
21851       ,p_event_type_code            => l_event_type_code
21852       ,p_line_definition_owner_code => l_line_definition_owner_code
21853       ,p_line_definition_code       => l_line_definition_code
21854       ,p_accounting_line_code       => l_component_code
21855       ,p_accounting_line_type_code  => l_component_type_code
21856       ,p_accounting_line_appl_id    => l_component_appl_id
21857       ,p_amb_context_code           => l_amb_context_code
21858       ,p_entity_code                => l_entity_code
21859       ,p_event_class_code           => l_event_class_code);
21860    --
21861    -- set accounting class
21862    --
21863    xla_ae_lines_pkg.SetAcctClass(
21864            p_accounting_class_code  => 'PO_PA_BURDEN'
21865          , p_ae_header_id           => l_ae_header_id
21866          );
21867 
21868    --
21869    -- set rounding class
21870    --
21871    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21872                       'PO_PA_BURDEN';
21873 
21874    --
21875    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21876    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21877    --
21878    -- bulk performance
21879    --
21880    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21881 
21882    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21883       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21884 
21885    -- 4955764
21886    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21887       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21888 
21889    -- 4458381 Public Sector Enh
21890    
21891    --
21892    -- set accounting attributes for the line type
21893    --
21894    l_entered_amt_idx := 28;
21895    l_accted_amt_idx  := 30;
21896    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21897    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21898    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
21899    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
21900    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
21901    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
21902    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
21903    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
21904    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
21905    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
21906    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
21907    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
21908    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
21909    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
21910    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
21911    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
21912    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
21913    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
21914    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
21915    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
21916    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
21917    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
21918    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
21919    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
21920    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
21921    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
21922    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
21923    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
21924    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
21925    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
21926    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
21927    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
21928    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
21929    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
21930    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
21931    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
21932    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
21933    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
21934    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
21935    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
21936    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
21937    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
21938    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
21939    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
21940    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
21941    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
21942    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
21943    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
21944    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
21945    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
21946    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
21947    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
21948    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
21949    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
21950    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
21951    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
21952    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
21953    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
21954    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
21955    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
21956    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
21957    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
21958    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
21959    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
21960    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
21961    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
21962    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
21963    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
21964    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
21965    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
21966    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
21967 
21968    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21969    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21970 
21971    ---------------------------------------------------------------------------------------------------------------
21972    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21973    ---------------------------------------------------------------------------------------------------------------
21974    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21975 
21976    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21977    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21978 
21979    IF xla_accounting_cache_pkg.GetValueChar
21980          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21981          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21982    AND l_bflow_method_code = 'PRIOR_ENTRY'
21983 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21984    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21985          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21986        )
21987    THEN
21988          xla_ae_lines_pkg.BflowUpgEntry
21989            (p_business_method_code    => l_bflow_method_code
21990            ,p_business_class_code     => l_bflow_class_code
21991            ,p_balance_type            => l_balance_type_code);
21992    ELSE
21993       NULL;
21994 XLA_AE_LINES_PKG.business_flow_validation(
21995                                 p_business_method_code     => l_bflow_method_code
21996                                ,p_business_class_code      => l_bflow_class_code
21997                                ,p_inherit_description_flag => l_inherit_desc_flag);
21998    END IF;
21999 
22000    --
22001    -- call analytical criteria
22002    --
22003    -- Inherited Analytical Criteria for business flow method of Prior Entry.
22004    --
22005    -- call description
22006    --
22007    
22008 xla_ae_lines_pkg.SetLineDescription(
22009    p_ae_header_id => l_ae_header_id
22010   ,p_description  => Description_2 (
22011      p_application_id         => p_application_id
22012    , p_ae_header_id           => l_ae_header_id 
22013 , p_source_3 => p_source_3
22014 , p_source_4 => p_source_4
22015 , p_source_5 => p_source_5
22016 , p_source_6 => p_source_6
22017    )
22018 );
22019 
22020 
22021    --
22022    -- call ADRs
22023    -- Bug 4922099
22024    --
22025    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22026         (NVL(l_actual_upg_option, 'N') = 'O') OR
22027         (NVL(l_enc_upg_option, 'N') = 'O')
22028       )
22029    THEN
22030    NULL;
22031    --
22032    --
22033    
22034    --
22035    --
22036    END IF;
22037    --
22038    -- Bug 4922099
22039    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22040           (NVL(l_enc_upg_option, 'N') = 'O')
22041         ) AND
22042         (l_bflow_method_code = 'PRIOR_ENTRY')
22043       )
22044    THEN
22045       IF
22046       --
22047       1 = 1
22048       --
22049       THEN
22050       xla_accounting_err_pkg.build_message
22051                                     (p_appli_s_name            => 'XLA'
22052                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22053                                     ,p_token_1                 => 'LINE_NUMBER'
22054                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22055                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22056                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22057                                                                              l_component_type
22058                                                                             ,l_component_code
22059                                                                             ,l_component_type_code
22060                                                                             ,l_component_appl_id
22061                                                                             ,l_amb_context_code
22062                                                                             ,l_entity_code
22063                                                                             ,l_event_class_code
22064                                                                            )
22065                                     ,p_token_3                 => 'OWNER'
22066                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22067                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22068                                                                           ,p_lookup_code    => l_component_type_code
22069                                                                          )
22070                                     ,p_token_4                 => 'PRODUCT_NAME'
22071                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22072                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22073                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22074                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22075                                     ,p_ae_header_id            =>  NULL
22076                                        );
22077 
22078         IF (C_LEVEL_ERROR>= g_log_level) THEN
22079                  trace
22080                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22081                       ,p_level    => C_LEVEL_ERROR
22082                       ,p_module   => l_log_module);
22083         END IF;
22084       END IF;
22085    END IF;
22086    --
22087    --
22088    ------------------------------------------------------------------------------------------------
22089    -- 4219869 Business Flow
22090    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22091    -- Prior Entry.  Currently, the following code is always generated.
22092    ------------------------------------------------------------------------------------------------
22093    -- No ValidateCurrentLine for business flow method of Prior Entry
22094 
22095    ------------------------------------------------------------------------------------
22096    -- 4219869 Business Flow
22097    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22098    ------------------------------------------------------------------------------------
22099    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22100 
22101    ----------------------------------------------------------------------------------
22102    -- 4219869 Business Flow
22103    -- Update journal entry status -- Need to generate this within IF <condition>
22104    ----------------------------------------------------------------------------------
22105    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22106          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22107          ,p_balance_type_code => l_balance_type_code
22108          );
22109 
22110    -------------------------------------------------------------------------------------------
22111    -- 4262811 - Generate the Accrual Reversal lines
22112    -------------------------------------------------------------------------------------------
22113    BEGIN
22114       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22115                               (g_array_event(p_event_id).array_value_num('header_index'));
22116       IF l_acc_rev_flag IS NULL THEN
22117          l_acc_rev_flag := 'N';
22118       END IF;
22119    EXCEPTION
22120       WHEN OTHERS THEN
22121          l_acc_rev_flag := 'N';
22122    END;
22123    --
22124    IF (l_acc_rev_flag = 'Y') THEN
22125 
22126        -- 4645092  ------------------------------------------------------------------------------
22127        -- To allow MPA report to determine if it should generate report process
22128        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22129        ------------------------------------------------------------------------------------------
22130 
22131        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22132        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22133 
22134        --
22135        -- Update the line information that should be overwritten
22136        --
22137        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22138                                          p_header_num   => 1);
22139        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22140 
22141        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22142 
22143        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22144           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22145        END IF;
22146 
22147       --
22148       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22149       --
22150       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22151           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22152       ELSE
22153           ---------------------------------------------------------------------------------------------------
22154           -- 4262811a Switch Sign
22155           ---------------------------------------------------------------------------------------------------
22156           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22157           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22158                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22159           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22160                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22161           -- 5132302
22162           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22163                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22164 
22165       END IF;
22166 
22167       -- 4955764
22168       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22169       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22170 
22171 
22172       XLA_AE_LINES_PKG.ValidateCurrentLine;
22173       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22174 
22175       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22176                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22177                ,p_balance_type_code => l_balance_type_code);
22178 
22179    END IF;
22180 
22181    -----------------------------------------------------------------------------------------
22182    -- 4262811 Multiperiod Accounting
22183    -----------------------------------------------------------------------------------------
22184      -- No MPA option is assigned.
22185 
22186 
22187 END IF;
22188 END IF;
22189 --
22190 
22191 --
22192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22193    trace
22194       (p_msg      => 'END of AcctLineType_42'
22195       ,p_level    => C_LEVEL_PROCEDURE
22196       ,p_module   => l_log_module);
22197 END IF;
22198 --
22199 EXCEPTION
22200   WHEN xla_exceptions_pkg.application_exception THEN
22201       RAISE;
22202   WHEN OTHERS THEN
22203        xla_exceptions_pkg.raise_message
22204            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_42');
22205 END AcctLineType_42;
22206 --
22207 
22208 ---------------------------------------
22209 --
22210 -- PRIVATE FUNCTION
22211 --         AcctLineType_43
22212 --
22213 ---------------------------------------
22214 PROCEDURE AcctLineType_43 (
22215   p_application_id        IN NUMBER
22216  ,p_event_id              IN NUMBER
22217  ,p_calculate_acctd_flag  IN VARCHAR2
22218  ,p_calculate_g_l_flag    IN VARCHAR2
22219  ,p_actual_flag           IN OUT VARCHAR2
22220  ,p_balance_type_code     OUT VARCHAR2
22221  ,p_gain_or_loss_ref      OUT VARCHAR2
22222  
22223 --Project Name
22224  , p_source_3            IN VARCHAR2
22225 --Task Name
22226  , p_source_4            IN VARCHAR2
22227 --Project Expenditure Organization Identifier
22228  , p_source_5            IN NUMBER
22229 --Expenditure Type
22230  , p_source_6            IN VARCHAR2
22231 --Document Type
22232  , p_source_9            IN VARCHAR2
22233 --Main Or Backing Code
22234  , p_source_13            IN VARCHAR2
22235 --Burden Record Identifier
22236  , p_source_14            IN VARCHAR2
22237  , p_source_14_meaning    IN VARCHAR2
22238 --Burden Amount Display Method
22239  , p_source_15            IN VARCHAR2
22240 --Accounting Reversal Flag
22241  , p_source_16            IN VARCHAR2
22242 --Allocated to Application Identifier
22243  , p_source_17            IN NUMBER
22244 --Allocated to Distribution Type
22245  , p_source_18            IN VARCHAR2
22246 --Allocated to Entity Code
22247  , p_source_19            IN VARCHAR2
22248 --Allocated to First Distribution Identifier
22249  , p_source_20            IN NUMBER
22250 --Allocated to First System Transaction Identifier
22251  , p_source_21            IN NUMBER
22252 --PO Distribution Identifier
22253  , p_source_29            IN NUMBER
22254 --Line Type Name
22255  , p_source_30            IN VARCHAR2
22256 --Encumbrance Upgrade Credit Accounting Class
22257  , p_source_31            IN VARCHAR2
22258 --Encumbrance Upgrade Credit Account
22259  , p_source_32            IN NUMBER
22260 --Entered Amount
22261  , p_source_33            IN NUMBER
22262 --Currency Code
22263  , p_source_34            IN VARCHAR2
22264 --Accounted Amount
22265  , p_source_35            IN NUMBER
22266 --Encumbrance Upgrade Debit Accounting Class
22267  , p_source_36            IN VARCHAR2
22268 --Encumbrance Upgrade Debit Account
22269  , p_source_37            IN NUMBER
22270 --Use Encumbrances Upgrade Attributes Flag
22271  , p_source_38            IN VARCHAR2
22272 --Encumbrance Upgrade Credit Encumbrance Type
22273  , p_source_39            IN NUMBER
22274 --Encumbrance Upgrade Debit Encumbrance Type
22275  , p_source_40            IN NUMBER
22276 --Requisition Burden Applied to Application Identifier
22277  , p_source_41            IN NUMBER
22278 --Requisition Distribution Type
22279  , p_source_42            IN VARCHAR2
22280 --Requisition Burden Applied to Entity Code
22281  , p_source_43            IN VARCHAR2
22282 --Requisition Burden Applied to First Distribution Identifier
22283  , p_source_44            IN NUMBER
22284 --Requisition Burden Applied to First System Transaction Identifier
22285  , p_source_45            IN NUMBER
22286 --Requisition Burden Applied to Second Distribution Identifier
22287  , p_source_46            IN VARCHAR2
22288 --Backing Requisition Prevent Encumbrance Flag Flipped
22289  , p_source_67            IN VARCHAR2
22290 )
22291 IS
22292 
22293 l_component_type              VARCHAR2(80);
22294 l_component_code              VARCHAR2(30);
22295 l_component_type_code         VARCHAR2(1);
22296 l_component_appl_id           INTEGER;
22297 l_amb_context_code            VARCHAR2(30);
22298 l_entity_code                 VARCHAR2(30);
22299 l_event_class_code            VARCHAR2(30);
22300 l_ae_header_id                NUMBER;
22301 l_event_type_code             VARCHAR2(30);
22302 l_line_definition_code        VARCHAR2(30);
22303 l_line_definition_owner_code  VARCHAR2(1);
22304 --
22305 -- adr variables
22306 l_segment                     VARCHAR2(30);
22307 l_ccid                        NUMBER;
22308 l_adr_transaction_coa_id      NUMBER;
22309 l_adr_accounting_coa_id       NUMBER;
22310 l_adr_flexfield_segment_code  VARCHAR2(30);
22311 l_adr_flex_value_set_id       NUMBER;
22312 l_adr_value_type_code         VARCHAR2(30);
22313 l_adr_value_combination_id    NUMBER;
22314 l_adr_value_segment_code      VARCHAR2(30);
22315 
22316 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22317 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22318 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22319 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22320 
22321 -- 4262811 Variables ------------------------------------------------------------------------------------------
22322 l_entered_amt_idx             NUMBER;
22323 l_accted_amt_idx              NUMBER;
22324 l_acc_rev_flag                VARCHAR2(1);
22325 l_accrual_line_num            NUMBER;
22326 l_tmp_amt                     NUMBER;
22327 l_acc_rev_natural_side_code   VARCHAR2(1);
22328 
22329 l_num_entries                 NUMBER;
22330 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22331 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22332 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22333 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22334 l_recog_line_1                NUMBER;
22335 l_recog_line_2                NUMBER;
22336 
22337 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22338 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22339 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22340 
22341 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22342 
22343 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22344 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22345 
22346 ---------------------------------------------------------------------------------------------------------------
22347 
22348 
22349 --
22350 -- bulk performance
22351 --
22352 l_balance_type_code           VARCHAR2(1);
22353 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22354 l_log_module                  VARCHAR2(240);
22355 
22356 --
22357 -- Upgrade strategy
22358 --
22359 l_actual_upg_option           VARCHAR2(1);
22360 l_enc_upg_option           VARCHAR2(1);
22361 
22362 --
22363 BEGIN
22364 --
22365 IF g_log_enabled THEN
22366       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
22367 END IF;
22368 --
22369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22370 
22371       trace
22372          (p_msg      => 'BEGIN of AcctLineType_43'
22373          ,p_level    => C_LEVEL_PROCEDURE
22374          ,p_module   => l_log_module);
22375 
22376 END IF;
22377 --
22378 l_component_type             := 'AMB_JLT';
22379 l_component_code             := 'RELIEVE_BURDEN_REQENC_FORPO';
22380 l_component_type_code        := 'S';
22381 l_component_appl_id          :=  201;
22382 l_amb_context_code           := 'DEFAULT';
22383 l_entity_code                := 'PURCHASE_ORDER';
22384 l_event_class_code           := 'PO_BURDEN';
22385 l_event_type_code            := 'PO_BURDEN_ALL';
22386 l_line_definition_owner_code := 'S';
22387 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
22388 --
22389 l_balance_type_code          := 'E';
22390 l_segment                     := NULL;
22391 l_ccid                        := NULL;
22392 l_adr_transaction_coa_id      := NULL;
22393 l_adr_accounting_coa_id       := NULL;
22394 l_adr_flexfield_segment_code  := NULL;
22395 l_adr_flex_value_set_id       := NULL;
22396 l_adr_value_type_code         := NULL;
22397 l_adr_value_combination_id    := NULL;
22398 l_adr_value_segment_code      := NULL;
22399 
22400 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
22401 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
22402 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22403 l_budgetary_control_flag     := 'Y';
22404 
22405 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22406 l_bflow_applied_to_amt       := NULL; -- 5132302
22407 l_entered_amt_idx            := NULL;          -- 4262811
22408 l_accted_amt_idx             := NULL;          -- 4262811
22409 l_acc_rev_flag               := NULL;          -- 4262811
22410 l_accrual_line_num           := NULL;          -- 4262811
22411 l_tmp_amt                    := NULL;          -- 4262811
22412 --
22413  
22414 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22415     l_balance_type_code <> 'B' THEN
22416 IF NVL(
22417 xla_ae_sources_pkg.GetSystemSourceChar(
22418    p_source_code           => 'XLA_EVENT_TYPE_CODE'
22419  , p_source_type_code      => 'Y'
22420  , p_source_application_id =>  602
22421 ),'
22422 ') =  'PO_BURDEN_RESERVED' AND 
22423 NVL(p_source_13,'
22424 ') =  'B_REQ' AND 
22425 NVL(p_source_14,'
22426 ') =  'O' AND 
22427 NVL(p_source_9,'
22428 ') =  'REQ' AND 
22429 NVL(p_source_15,'
22430 ') =  'D' AND 
22431 NVL(p_source_67,'
22432 ') <>  'Y'
22433  THEN 
22434 
22435    --
22436    XLA_AE_LINES_PKG.SetNewLine;
22437 
22438    p_balance_type_code          := l_balance_type_code;
22439    -- set the flag so later we will know whether the gain loss line needs to be created
22440    
22441    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22442      p_actual_flag :='A';
22443    END IF;
22444 
22445    --
22446    -- bulk performance
22447    --
22448    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22449                                       p_header_num   => 0); -- 4262811
22450    --
22451    -- set accounting line options
22452    --
22453    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22454            p_natural_side_code          => 'C'
22455          , p_gain_or_loss_flag          => 'N'
22456          , p_gl_transfer_mode_code      => 'S'
22457          , p_acct_entry_type_code       => 'E'
22458          , p_switch_side_flag           => 'N'
22459          , p_merge_duplicate_code       => 'N'
22460          );
22461    --
22462    l_acc_rev_natural_side_code := 'D';  -- 4262811
22463    -- 
22464    --
22465    -- set accounting line type info
22466    --
22467    xla_ae_lines_pkg.SetAcctLineType
22468       (p_component_type             => l_component_type
22469       ,p_event_type_code            => l_event_type_code
22470       ,p_line_definition_owner_code => l_line_definition_owner_code
22471       ,p_line_definition_code       => l_line_definition_code
22472       ,p_accounting_line_code       => l_component_code
22473       ,p_accounting_line_type_code  => l_component_type_code
22474       ,p_accounting_line_appl_id    => l_component_appl_id
22475       ,p_amb_context_code           => l_amb_context_code
22476       ,p_entity_code                => l_entity_code
22477       ,p_event_class_code           => l_event_class_code);
22478    --
22479    -- set accounting class
22480    --
22481    xla_ae_lines_pkg.SetAcctClass(
22482            p_accounting_class_code  => 'REQ_PA_BURDEN'
22483          , p_ae_header_id           => l_ae_header_id
22484          );
22485 
22486    --
22487    -- set rounding class
22488    --
22489    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22490                       'REQ_PA_BURDEN';
22491 
22492    --
22493    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22494    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22495    --
22496    -- bulk performance
22497    --
22498    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22499 
22500    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22501       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22502 
22503    -- 4955764
22504    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22505       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22506 
22507    -- 4458381 Public Sector Enh
22508    
22509    --
22510    -- set accounting attributes for the line type
22511    --
22512    l_entered_amt_idx := 27;
22513    l_accted_amt_idx  := 29;
22514    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22515    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22516    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
22517    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
22518    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
22519    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
22520    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
22521    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
22522    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
22523    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
22524    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
22525    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
22526    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
22527    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
22528    l_rec_acct_attrs.array_num_value(7)  := p_source_41;
22529    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
22530    l_rec_acct_attrs.array_char_value(8)  := p_source_42;
22531    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
22532    l_rec_acct_attrs.array_char_value(9)  := p_source_43;
22533    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
22534    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_44);
22535    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
22536    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_45);
22537    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
22538    l_rec_acct_attrs.array_char_value(12)  := p_source_46;
22539    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
22540    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
22541    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
22542    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
22543    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
22544    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
22545    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
22546    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
22547    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
22548    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
22549    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
22550    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
22551    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
22552    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
22553    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
22554    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
22555    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
22556    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
22557    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
22558    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
22559    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
22560    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
22561    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
22562    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
22563    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
22564    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
22565    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
22566    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
22567    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
22568    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
22569    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
22570    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
22571    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
22572    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
22573    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
22574    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
22575    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
22576    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
22577    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
22578    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
22579    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
22580    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
22581    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
22582    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
22583 
22584    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22585    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22586 
22587    ---------------------------------------------------------------------------------------------------------------
22588    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22589    ---------------------------------------------------------------------------------------------------------------
22590    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22591 
22592    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22593    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22594 
22595    IF xla_accounting_cache_pkg.GetValueChar
22596          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22597          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22598    AND l_bflow_method_code = 'PRIOR_ENTRY'
22599 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22600    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22601          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22602        )
22603    THEN
22604          xla_ae_lines_pkg.BflowUpgEntry
22605            (p_business_method_code    => l_bflow_method_code
22606            ,p_business_class_code     => l_bflow_class_code
22607            ,p_balance_type            => l_balance_type_code);
22608    ELSE
22609       NULL;
22610 XLA_AE_LINES_PKG.business_flow_validation(
22611                                 p_business_method_code     => l_bflow_method_code
22612                                ,p_business_class_code      => l_bflow_class_code
22613                                ,p_inherit_description_flag => l_inherit_desc_flag);
22614    END IF;
22615 
22616    --
22617    -- call analytical criteria
22618    --
22619    -- Inherited Analytical Criteria for business flow method of Prior Entry.
22620    --
22621    -- call description
22622    --
22623    
22624 xla_ae_lines_pkg.SetLineDescription(
22625    p_ae_header_id => l_ae_header_id
22626   ,p_description  => Description_2 (
22627      p_application_id         => p_application_id
22628    , p_ae_header_id           => l_ae_header_id 
22629 , p_source_3 => p_source_3
22630 , p_source_4 => p_source_4
22631 , p_source_5 => p_source_5
22632 , p_source_6 => p_source_6
22633    )
22634 );
22635 
22636 
22637    --
22638    -- call ADRs
22639    -- Bug 4922099
22640    --
22641    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22642         (NVL(l_actual_upg_option, 'N') = 'O') OR
22643         (NVL(l_enc_upg_option, 'N') = 'O')
22644       )
22645    THEN
22646    NULL;
22647    --
22648    --
22649    
22650    --
22651    --
22652    END IF;
22653    --
22654    -- Bug 4922099
22655    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22656           (NVL(l_enc_upg_option, 'N') = 'O')
22657         ) AND
22658         (l_bflow_method_code = 'PRIOR_ENTRY')
22659       )
22660    THEN
22661       IF
22662       --
22663       1 = 1
22664       --
22665       THEN
22666       xla_accounting_err_pkg.build_message
22667                                     (p_appli_s_name            => 'XLA'
22668                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22669                                     ,p_token_1                 => 'LINE_NUMBER'
22670                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22671                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22672                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22673                                                                              l_component_type
22674                                                                             ,l_component_code
22675                                                                             ,l_component_type_code
22676                                                                             ,l_component_appl_id
22677                                                                             ,l_amb_context_code
22678                                                                             ,l_entity_code
22679                                                                             ,l_event_class_code
22680                                                                            )
22681                                     ,p_token_3                 => 'OWNER'
22682                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22683                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22684                                                                           ,p_lookup_code    => l_component_type_code
22685                                                                          )
22686                                     ,p_token_4                 => 'PRODUCT_NAME'
22687                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22688                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22689                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22690                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22691                                     ,p_ae_header_id            =>  NULL
22692                                        );
22693 
22694         IF (C_LEVEL_ERROR>= g_log_level) THEN
22695                  trace
22696                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22697                       ,p_level    => C_LEVEL_ERROR
22698                       ,p_module   => l_log_module);
22699         END IF;
22700       END IF;
22701    END IF;
22702    --
22703    --
22704    ------------------------------------------------------------------------------------------------
22705    -- 4219869 Business Flow
22706    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22707    -- Prior Entry.  Currently, the following code is always generated.
22708    ------------------------------------------------------------------------------------------------
22709    -- No ValidateCurrentLine for business flow method of Prior Entry
22710 
22711    ------------------------------------------------------------------------------------
22712    -- 4219869 Business Flow
22713    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22714    ------------------------------------------------------------------------------------
22715    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22716 
22717    ----------------------------------------------------------------------------------
22718    -- 4219869 Business Flow
22719    -- Update journal entry status -- Need to generate this within IF <condition>
22720    ----------------------------------------------------------------------------------
22721    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22722          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22723          ,p_balance_type_code => l_balance_type_code
22724          );
22725 
22726    -------------------------------------------------------------------------------------------
22727    -- 4262811 - Generate the Accrual Reversal lines
22728    -------------------------------------------------------------------------------------------
22729    BEGIN
22730       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22731                               (g_array_event(p_event_id).array_value_num('header_index'));
22732       IF l_acc_rev_flag IS NULL THEN
22733          l_acc_rev_flag := 'N';
22734       END IF;
22735    EXCEPTION
22736       WHEN OTHERS THEN
22737          l_acc_rev_flag := 'N';
22738    END;
22739    --
22740    IF (l_acc_rev_flag = 'Y') THEN
22741 
22742        -- 4645092  ------------------------------------------------------------------------------
22743        -- To allow MPA report to determine if it should generate report process
22744        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22745        ------------------------------------------------------------------------------------------
22746 
22747        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22748        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22749 
22750        --
22751        -- Update the line information that should be overwritten
22752        --
22753        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22754                                          p_header_num   => 1);
22755        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22756 
22757        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22758 
22759        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22760           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22761        END IF;
22762 
22763       --
22764       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22765       --
22766       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22767           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22768       ELSE
22769           ---------------------------------------------------------------------------------------------------
22770           -- 4262811a Switch Sign
22771           ---------------------------------------------------------------------------------------------------
22772           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22773           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22774                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22775           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22776                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22777           -- 5132302
22778           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22779                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22780 
22781       END IF;
22782 
22783       -- 4955764
22784       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22785       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22786 
22787 
22788       XLA_AE_LINES_PKG.ValidateCurrentLine;
22789       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22790 
22791       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22792                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22793                ,p_balance_type_code => l_balance_type_code);
22794 
22795    END IF;
22796 
22797    -----------------------------------------------------------------------------------------
22798    -- 4262811 Multiperiod Accounting
22799    -----------------------------------------------------------------------------------------
22800      -- No MPA option is assigned.
22801 
22802 
22803 END IF;
22804 END IF;
22805 --
22806 
22807 --
22808 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22809    trace
22810       (p_msg      => 'END of AcctLineType_43'
22811       ,p_level    => C_LEVEL_PROCEDURE
22812       ,p_module   => l_log_module);
22813 END IF;
22814 --
22815 EXCEPTION
22816   WHEN xla_exceptions_pkg.application_exception THEN
22817       RAISE;
22818   WHEN OTHERS THEN
22819        xla_exceptions_pkg.raise_message
22820            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_43');
22821 END AcctLineType_43;
22822 --
22823 
22824 ---------------------------------------
22825 --
22826 -- PRIVATE FUNCTION
22827 --         AcctLineType_44
22828 --
22829 ---------------------------------------
22830 PROCEDURE AcctLineType_44 (
22831   p_application_id        IN NUMBER
22832  ,p_event_id              IN NUMBER
22833  ,p_calculate_acctd_flag  IN VARCHAR2
22834  ,p_calculate_g_l_flag    IN VARCHAR2
22835  ,p_actual_flag           IN OUT VARCHAR2
22836  ,p_balance_type_code     OUT VARCHAR2
22837  ,p_gain_or_loss_ref      OUT VARCHAR2
22838  
22839 --Project Name
22840  , p_source_3            IN VARCHAR2
22841 --Task Name
22842  , p_source_4            IN VARCHAR2
22843 --Project Expenditure Organization Identifier
22844  , p_source_5            IN NUMBER
22845 --Expenditure Type
22846  , p_source_6            IN VARCHAR2
22847 --Document Type
22848  , p_source_9            IN VARCHAR2
22849 --Main Or Backing Code
22850  , p_source_13            IN VARCHAR2
22851 --Burden Record Identifier
22852  , p_source_14            IN VARCHAR2
22853  , p_source_14_meaning    IN VARCHAR2
22854 --Burden Amount Display Method
22855  , p_source_15            IN VARCHAR2
22856 --Accounting Reversal Flag
22857  , p_source_16            IN VARCHAR2
22858 --Allocated to Application Identifier
22859  , p_source_17            IN NUMBER
22860 --Allocated to Distribution Type
22861  , p_source_18            IN VARCHAR2
22862 --Allocated to Entity Code
22863  , p_source_19            IN VARCHAR2
22864 --Allocated to First Distribution Identifier
22865  , p_source_20            IN NUMBER
22866 --Allocated to First System Transaction Identifier
22867  , p_source_21            IN NUMBER
22868 --Allocated to Second Distribution Identifier
22869  , p_source_22            IN VARCHAR2
22870 --PO Distribution Identifier
22871  , p_source_29            IN NUMBER
22872 --Line Type Name
22873  , p_source_30            IN VARCHAR2
22874 --Encumbrance Upgrade Credit Accounting Class
22875  , p_source_31            IN VARCHAR2
22876 --Encumbrance Upgrade Credit Account
22877  , p_source_32            IN NUMBER
22878 --Entered Amount
22879  , p_source_33            IN NUMBER
22880 --Currency Code
22881  , p_source_34            IN VARCHAR2
22882 --Accounted Amount
22883  , p_source_35            IN NUMBER
22884 --Encumbrance Upgrade Debit Accounting Class
22885  , p_source_36            IN VARCHAR2
22886 --Encumbrance Upgrade Debit Account
22887  , p_source_37            IN NUMBER
22888 --Use Encumbrances Upgrade Attributes Flag
22889  , p_source_38            IN VARCHAR2
22890 --Encumbrance Upgrade Credit Encumbrance Type
22891  , p_source_39            IN NUMBER
22892 --Encumbrance Upgrade Debit Encumbrance Type
22893  , p_source_40            IN NUMBER
22894 --Requisition Burden Applied to Application Identifier
22895  , p_source_41            IN NUMBER
22896 --Requisition Distribution Type
22897  , p_source_42            IN VARCHAR2
22898 --Requisition Burden Applied to Entity Code
22899  , p_source_43            IN VARCHAR2
22900 --Requisition Burden Applied to First Distribution Identifier
22901  , p_source_44            IN NUMBER
22902 --Requisition Burden Applied to First System Transaction Identifier
22903  , p_source_45            IN NUMBER
22904 --Requisition Burden Applied to Second Distribution Identifier
22905  , p_source_46            IN VARCHAR2
22906 )
22907 IS
22908 
22909 l_component_type              VARCHAR2(80);
22910 l_component_code              VARCHAR2(30);
22911 l_component_type_code         VARCHAR2(1);
22912 l_component_appl_id           INTEGER;
22913 l_amb_context_code            VARCHAR2(30);
22914 l_entity_code                 VARCHAR2(30);
22915 l_event_class_code            VARCHAR2(30);
22916 l_ae_header_id                NUMBER;
22917 l_event_type_code             VARCHAR2(30);
22918 l_line_definition_code        VARCHAR2(30);
22919 l_line_definition_owner_code  VARCHAR2(1);
22920 --
22921 -- adr variables
22922 l_segment                     VARCHAR2(30);
22923 l_ccid                        NUMBER;
22924 l_adr_transaction_coa_id      NUMBER;
22925 l_adr_accounting_coa_id       NUMBER;
22926 l_adr_flexfield_segment_code  VARCHAR2(30);
22927 l_adr_flex_value_set_id       NUMBER;
22928 l_adr_value_type_code         VARCHAR2(30);
22929 l_adr_value_combination_id    NUMBER;
22930 l_adr_value_segment_code      VARCHAR2(30);
22931 
22932 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22933 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22934 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22935 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22936 
22937 -- 4262811 Variables ------------------------------------------------------------------------------------------
22938 l_entered_amt_idx             NUMBER;
22939 l_accted_amt_idx              NUMBER;
22940 l_acc_rev_flag                VARCHAR2(1);
22941 l_accrual_line_num            NUMBER;
22942 l_tmp_amt                     NUMBER;
22943 l_acc_rev_natural_side_code   VARCHAR2(1);
22944 
22945 l_num_entries                 NUMBER;
22946 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22947 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22948 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22949 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22950 l_recog_line_1                NUMBER;
22951 l_recog_line_2                NUMBER;
22952 
22953 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22954 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22955 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22956 
22957 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22958 
22959 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22960 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22961 
22962 ---------------------------------------------------------------------------------------------------------------
22963 
22964 
22965 --
22966 -- bulk performance
22967 --
22968 l_balance_type_code           VARCHAR2(1);
22969 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22970 l_log_module                  VARCHAR2(240);
22971 
22972 --
22973 -- Upgrade strategy
22974 --
22975 l_actual_upg_option           VARCHAR2(1);
22976 l_enc_upg_option           VARCHAR2(1);
22977 
22978 --
22979 BEGIN
22980 --
22981 IF g_log_enabled THEN
22982       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
22983 END IF;
22984 --
22985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22986 
22987       trace
22988          (p_msg      => 'BEGIN of AcctLineType_44'
22989          ,p_level    => C_LEVEL_PROCEDURE
22990          ,p_module   => l_log_module);
22991 
22992 END IF;
22993 --
22994 l_component_type             := 'AMB_JLT';
22995 l_component_code             := 'RELIEVE_BURDEN_REQ_ENC_FOR_REL';
22996 l_component_type_code        := 'S';
22997 l_component_appl_id          :=  201;
22998 l_amb_context_code           := 'DEFAULT';
22999 l_entity_code                := 'RELEASE';
23000 l_event_class_code           := 'RELEASE_BURDEN';
23001 l_event_type_code            := 'RELEASE_BURDEN_ALL';
23002 l_line_definition_owner_code := 'S';
23003 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
23004 --
23005 l_balance_type_code          := 'E';
23006 l_segment                     := NULL;
23007 l_ccid                        := NULL;
23008 l_adr_transaction_coa_id      := NULL;
23009 l_adr_accounting_coa_id       := NULL;
23010 l_adr_flexfield_segment_code  := NULL;
23011 l_adr_flex_value_set_id       := NULL;
23012 l_adr_value_type_code         := NULL;
23013 l_adr_value_combination_id    := NULL;
23014 l_adr_value_segment_code      := NULL;
23015 
23016 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
23017 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
23018 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23019 l_budgetary_control_flag     := 'Y';
23020 
23021 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23022 l_bflow_applied_to_amt       := NULL; -- 5132302
23023 l_entered_amt_idx            := NULL;          -- 4262811
23024 l_accted_amt_idx             := NULL;          -- 4262811
23025 l_acc_rev_flag               := NULL;          -- 4262811
23026 l_accrual_line_num           := NULL;          -- 4262811
23027 l_tmp_amt                    := NULL;          -- 4262811
23028 --
23029  
23030 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23031     l_balance_type_code <> 'B' THEN
23032 IF NVL(
23033 xla_ae_sources_pkg.GetSystemSourceChar(
23034    p_source_code           => 'XLA_EVENT_TYPE_CODE'
23035  , p_source_type_code      => 'Y'
23036  , p_source_application_id =>  602
23037 ),'
23038 ') =  'REL_BURDEN_RESERVED' AND 
23039 NVL(p_source_13,'
23040 ') =  'B_REQ' AND 
23041 NVL(p_source_14,'
23042 ') =  'O' AND 
23043 NVL(p_source_9,'
23044 ') =  'REQ' AND 
23045 NVL(p_source_15,'
23046 ') =  'D'
23047  THEN 
23048 
23049    --
23050    XLA_AE_LINES_PKG.SetNewLine;
23051 
23052    p_balance_type_code          := l_balance_type_code;
23053    -- set the flag so later we will know whether the gain loss line needs to be created
23054    
23055    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23056      p_actual_flag :='A';
23057    END IF;
23058 
23059    --
23060    -- bulk performance
23061    --
23062    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23063                                       p_header_num   => 0); -- 4262811
23064    --
23065    -- set accounting line options
23066    --
23067    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23068            p_natural_side_code          => 'C'
23069          , p_gain_or_loss_flag          => 'N'
23070          , p_gl_transfer_mode_code      => 'S'
23071          , p_acct_entry_type_code       => 'E'
23072          , p_switch_side_flag           => 'N'
23073          , p_merge_duplicate_code       => 'N'
23074          );
23075    --
23076    l_acc_rev_natural_side_code := 'D';  -- 4262811
23077    -- 
23078    --
23079    -- set accounting line type info
23080    --
23081    xla_ae_lines_pkg.SetAcctLineType
23082       (p_component_type             => l_component_type
23083       ,p_event_type_code            => l_event_type_code
23084       ,p_line_definition_owner_code => l_line_definition_owner_code
23085       ,p_line_definition_code       => l_line_definition_code
23086       ,p_accounting_line_code       => l_component_code
23087       ,p_accounting_line_type_code  => l_component_type_code
23088       ,p_accounting_line_appl_id    => l_component_appl_id
23089       ,p_amb_context_code           => l_amb_context_code
23090       ,p_entity_code                => l_entity_code
23091       ,p_event_class_code           => l_event_class_code);
23092    --
23093    -- set accounting class
23094    --
23095    xla_ae_lines_pkg.SetAcctClass(
23096            p_accounting_class_code  => 'REQ_PA_BURDEN'
23097          , p_ae_header_id           => l_ae_header_id
23098          );
23099 
23100    --
23101    -- set rounding class
23102    --
23103    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23104                       'REQ_PA_BURDEN';
23105 
23106    --
23107    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23108    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23109    --
23110    -- bulk performance
23111    --
23112    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23113 
23114    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23115       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23116 
23117    -- 4955764
23118    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23119       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23120 
23121    -- 4458381 Public Sector Enh
23122    
23123    --
23124    -- set accounting attributes for the line type
23125    --
23126    l_entered_amt_idx := 28;
23127    l_accted_amt_idx  := 30;
23128    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23129    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23130    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
23131    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
23132    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
23133    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
23134    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
23135    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
23136    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
23137    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
23138    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
23139    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
23140    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
23141    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
23142    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
23143    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
23144    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
23145    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23146    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
23147    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
23148    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
23149    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
23150    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
23151    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23152    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
23153    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
23154    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
23155    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
23156    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
23157    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
23158    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
23159    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
23160    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
23161    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
23162    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
23163    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
23164    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
23165    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
23166    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
23167    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
23168    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
23169    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
23170    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
23171    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
23172    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
23173    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
23174    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
23175    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
23176    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
23177    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
23178    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
23179    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
23180    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
23181    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
23182    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
23183    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
23184    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
23185    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
23186    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
23187    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
23188    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
23189    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
23190    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
23191    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
23192    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
23193    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
23194    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
23195    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
23196    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
23197    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
23198    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
23199 
23200    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23201    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23202 
23203    ---------------------------------------------------------------------------------------------------------------
23204    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23205    ---------------------------------------------------------------------------------------------------------------
23206    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23207 
23208    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23209    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23210 
23211    IF xla_accounting_cache_pkg.GetValueChar
23212          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23213          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23214    AND l_bflow_method_code = 'PRIOR_ENTRY'
23215 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23216    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23217          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23218        )
23219    THEN
23220          xla_ae_lines_pkg.BflowUpgEntry
23221            (p_business_method_code    => l_bflow_method_code
23222            ,p_business_class_code     => l_bflow_class_code
23223            ,p_balance_type            => l_balance_type_code);
23224    ELSE
23225       NULL;
23226 XLA_AE_LINES_PKG.business_flow_validation(
23227                                 p_business_method_code     => l_bflow_method_code
23228                                ,p_business_class_code      => l_bflow_class_code
23229                                ,p_inherit_description_flag => l_inherit_desc_flag);
23230    END IF;
23231 
23232    --
23233    -- call analytical criteria
23234    --
23235    -- Inherited Analytical Criteria for business flow method of Prior Entry.
23236    --
23237    -- call description
23238    --
23239    
23240 xla_ae_lines_pkg.SetLineDescription(
23241    p_ae_header_id => l_ae_header_id
23242   ,p_description  => Description_2 (
23243      p_application_id         => p_application_id
23244    , p_ae_header_id           => l_ae_header_id 
23245 , p_source_3 => p_source_3
23246 , p_source_4 => p_source_4
23247 , p_source_5 => p_source_5
23248 , p_source_6 => p_source_6
23249    )
23250 );
23251 
23252 
23253    --
23254    -- call ADRs
23255    -- Bug 4922099
23256    --
23257    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23258         (NVL(l_actual_upg_option, 'N') = 'O') OR
23259         (NVL(l_enc_upg_option, 'N') = 'O')
23260       )
23261    THEN
23262    NULL;
23263    --
23264    --
23265    
23266    --
23267    --
23268    END IF;
23269    --
23270    -- Bug 4922099
23271    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23272           (NVL(l_enc_upg_option, 'N') = 'O')
23273         ) AND
23274         (l_bflow_method_code = 'PRIOR_ENTRY')
23275       )
23276    THEN
23277       IF
23278       --
23279       1 = 1
23280       --
23281       THEN
23282       xla_accounting_err_pkg.build_message
23283                                     (p_appli_s_name            => 'XLA'
23284                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23285                                     ,p_token_1                 => 'LINE_NUMBER'
23286                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23287                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23288                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23289                                                                              l_component_type
23290                                                                             ,l_component_code
23291                                                                             ,l_component_type_code
23292                                                                             ,l_component_appl_id
23293                                                                             ,l_amb_context_code
23294                                                                             ,l_entity_code
23295                                                                             ,l_event_class_code
23296                                                                            )
23297                                     ,p_token_3                 => 'OWNER'
23298                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23299                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23300                                                                           ,p_lookup_code    => l_component_type_code
23301                                                                          )
23302                                     ,p_token_4                 => 'PRODUCT_NAME'
23303                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23304                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23305                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23306                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23307                                     ,p_ae_header_id            =>  NULL
23308                                        );
23309 
23310         IF (C_LEVEL_ERROR>= g_log_level) THEN
23311                  trace
23312                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23313                       ,p_level    => C_LEVEL_ERROR
23314                       ,p_module   => l_log_module);
23315         END IF;
23316       END IF;
23317    END IF;
23318    --
23319    --
23320    ------------------------------------------------------------------------------------------------
23321    -- 4219869 Business Flow
23322    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23323    -- Prior Entry.  Currently, the following code is always generated.
23324    ------------------------------------------------------------------------------------------------
23325    -- No ValidateCurrentLine for business flow method of Prior Entry
23326 
23327    ------------------------------------------------------------------------------------
23328    -- 4219869 Business Flow
23329    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23330    ------------------------------------------------------------------------------------
23331    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23332 
23333    ----------------------------------------------------------------------------------
23334    -- 4219869 Business Flow
23335    -- Update journal entry status -- Need to generate this within IF <condition>
23336    ----------------------------------------------------------------------------------
23337    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23338          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23339          ,p_balance_type_code => l_balance_type_code
23340          );
23341 
23342    -------------------------------------------------------------------------------------------
23343    -- 4262811 - Generate the Accrual Reversal lines
23344    -------------------------------------------------------------------------------------------
23345    BEGIN
23346       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23347                               (g_array_event(p_event_id).array_value_num('header_index'));
23348       IF l_acc_rev_flag IS NULL THEN
23349          l_acc_rev_flag := 'N';
23350       END IF;
23351    EXCEPTION
23352       WHEN OTHERS THEN
23353          l_acc_rev_flag := 'N';
23354    END;
23355    --
23356    IF (l_acc_rev_flag = 'Y') THEN
23357 
23358        -- 4645092  ------------------------------------------------------------------------------
23359        -- To allow MPA report to determine if it should generate report process
23360        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23361        ------------------------------------------------------------------------------------------
23362 
23363        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23364        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23365 
23366        --
23367        -- Update the line information that should be overwritten
23368        --
23369        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23370                                          p_header_num   => 1);
23371        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23372 
23373        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23374 
23375        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23376           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23377        END IF;
23378 
23379       --
23380       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23381       --
23382       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23383           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23384       ELSE
23385           ---------------------------------------------------------------------------------------------------
23386           -- 4262811a Switch Sign
23387           ---------------------------------------------------------------------------------------------------
23388           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23389           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23390                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23391           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23392                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23393           -- 5132302
23394           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23395                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23396 
23397       END IF;
23398 
23399       -- 4955764
23400       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23401       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23402 
23403 
23404       XLA_AE_LINES_PKG.ValidateCurrentLine;
23405       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23406 
23407       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23408                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23409                ,p_balance_type_code => l_balance_type_code);
23410 
23411    END IF;
23412 
23413    -----------------------------------------------------------------------------------------
23414    -- 4262811 Multiperiod Accounting
23415    -----------------------------------------------------------------------------------------
23416      -- No MPA option is assigned.
23417 
23418 
23419 END IF;
23420 END IF;
23421 --
23422 
23423 --
23424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23425    trace
23426       (p_msg      => 'END of AcctLineType_44'
23427       ,p_level    => C_LEVEL_PROCEDURE
23428       ,p_module   => l_log_module);
23429 END IF;
23430 --
23431 EXCEPTION
23432   WHEN xla_exceptions_pkg.application_exception THEN
23433       RAISE;
23434   WHEN OTHERS THEN
23435        xla_exceptions_pkg.raise_message
23436            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_44');
23437 END AcctLineType_44;
23438 --
23439 
23440 ---------------------------------------
23441 --
23442 -- PRIVATE FUNCTION
23443 --         AcctLineType_45
23444 --
23445 ---------------------------------------
23446 PROCEDURE AcctLineType_45 (
23447   p_application_id        IN NUMBER
23448  ,p_event_id              IN NUMBER
23449  ,p_calculate_acctd_flag  IN VARCHAR2
23450  ,p_calculate_g_l_flag    IN VARCHAR2
23451  ,p_actual_flag           IN OUT VARCHAR2
23452  ,p_balance_type_code     OUT VARCHAR2
23453  ,p_gain_or_loss_ref      OUT VARCHAR2
23454  
23455 --Budget Account
23456  , p_source_11            IN NUMBER
23457 --Main Or Backing Code
23458  , p_source_13            IN VARCHAR2
23459 --Accounting Reversal Flag
23460  , p_source_16            IN VARCHAR2
23461 --PO Distribution Identifier
23462  , p_source_29            IN NUMBER
23463 --Entered Amount
23464  , p_source_33            IN NUMBER
23465 --Currency Code
23466  , p_source_34            IN VARCHAR2
23467 --Accounted Amount
23468  , p_source_35            IN NUMBER
23469 --Allocated to Main Document Distribution Type
23470  , p_source_49            IN VARCHAR2
23471 --Allocated to Main Document Distribution Identifier
23472  , p_source_51            IN NUMBER
23473 --Applied To Application Identifier
23474  , p_source_53            IN NUMBER
23475 --Applied To Distribution Link Type
23476  , p_source_54            IN VARCHAR2
23477 --Applied To Entity Code
23478  , p_source_55            IN VARCHAR2
23479 --Applied To Distribution Identifier 1
23480  , p_source_56            IN NUMBER
23481 --Applied To Header Identifier 1
23482  , p_source_57            IN NUMBER
23483 --Distribution Link Type
23484  , p_source_58            IN VARCHAR2
23485 --PO Encumbrance Upgrade Option
23486  , p_source_59            IN VARCHAR2
23487 --JFMIP Reference
23488  , p_source_60            IN VARCHAR2
23489 --PO Upgrade Encumbrance Type Identifier
23490  , p_source_61            IN NUMBER
23491 --PO Release Identifier
23492  , p_source_66            IN NUMBER
23493 )
23494 IS
23495 
23496 l_component_type              VARCHAR2(80);
23497 l_component_code              VARCHAR2(30);
23498 l_component_type_code         VARCHAR2(1);
23499 l_component_appl_id           INTEGER;
23500 l_amb_context_code            VARCHAR2(30);
23501 l_entity_code                 VARCHAR2(30);
23502 l_event_class_code            VARCHAR2(30);
23503 l_ae_header_id                NUMBER;
23504 l_event_type_code             VARCHAR2(30);
23505 l_line_definition_code        VARCHAR2(30);
23506 l_line_definition_owner_code  VARCHAR2(1);
23507 --
23508 -- adr variables
23509 l_segment                     VARCHAR2(30);
23510 l_ccid                        NUMBER;
23511 l_adr_transaction_coa_id      NUMBER;
23512 l_adr_accounting_coa_id       NUMBER;
23513 l_adr_flexfield_segment_code  VARCHAR2(30);
23514 l_adr_flex_value_set_id       NUMBER;
23515 l_adr_value_type_code         VARCHAR2(30);
23516 l_adr_value_combination_id    NUMBER;
23517 l_adr_value_segment_code      VARCHAR2(30);
23518 
23519 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23520 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23521 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23522 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23523 
23524 -- 4262811 Variables ------------------------------------------------------------------------------------------
23525 l_entered_amt_idx             NUMBER;
23526 l_accted_amt_idx              NUMBER;
23527 l_acc_rev_flag                VARCHAR2(1);
23528 l_accrual_line_num            NUMBER;
23529 l_tmp_amt                     NUMBER;
23530 l_acc_rev_natural_side_code   VARCHAR2(1);
23531 
23532 l_num_entries                 NUMBER;
23533 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23534 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23535 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23536 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23537 l_recog_line_1                NUMBER;
23538 l_recog_line_2                NUMBER;
23539 
23540 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23541 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23542 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23543 
23544 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23545 
23546 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23547 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23548 
23549 ---------------------------------------------------------------------------------------------------------------
23550 
23551 
23552 --
23553 -- bulk performance
23554 --
23555 l_balance_type_code           VARCHAR2(1);
23556 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23557 l_log_module                  VARCHAR2(240);
23558 
23559 --
23560 -- Upgrade strategy
23561 --
23562 l_actual_upg_option           VARCHAR2(1);
23563 l_enc_upg_option           VARCHAR2(1);
23564 
23565 --
23566 BEGIN
23567 --
23568 IF g_log_enabled THEN
23569       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
23570 END IF;
23571 --
23572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23573 
23574       trace
23575          (p_msg      => 'BEGIN of AcctLineType_45'
23576          ,p_level    => C_LEVEL_PROCEDURE
23577          ,p_module   => l_log_module);
23578 
23579 END IF;
23580 --
23581 l_component_type             := 'AMB_JLT';
23582 l_component_code             := 'RELIEVE_PO_PA_ENC_FROM_RELEASE';
23583 l_component_type_code        := 'S';
23584 l_component_appl_id          :=  201;
23585 l_amb_context_code           := 'DEFAULT';
23586 l_entity_code                := 'RELEASE';
23587 l_event_class_code           := 'RELEASE';
23588 l_event_type_code            := 'RELEASE_ALL';
23589 l_line_definition_owner_code := 'S';
23590 l_line_definition_code       := 'RELEASE_ENC_ALL';
23591 --
23592 l_balance_type_code          := 'E';
23593 l_segment                     := NULL;
23594 l_ccid                        := NULL;
23595 l_adr_transaction_coa_id      := NULL;
23596 l_adr_accounting_coa_id       := NULL;
23597 l_adr_flexfield_segment_code  := NULL;
23598 l_adr_flex_value_set_id       := NULL;
23599 l_adr_value_type_code         := NULL;
23600 l_adr_value_combination_id    := NULL;
23601 l_adr_value_segment_code      := NULL;
23602 
23603 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
23604 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
23605 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
23606 l_budgetary_control_flag     := 'Y';
23607 
23608 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23609 l_bflow_applied_to_amt       := NULL; -- 5132302
23610 l_entered_amt_idx            := NULL;          -- 4262811
23611 l_accted_amt_idx             := NULL;          -- 4262811
23612 l_acc_rev_flag               := NULL;          -- 4262811
23613 l_accrual_line_num           := NULL;          -- 4262811
23614 l_tmp_amt                    := NULL;          -- 4262811
23615 --
23616  
23617 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23618     l_balance_type_code <> 'B' THEN
23619 IF NVL(
23620 xla_ae_sources_pkg.GetSystemSourceChar(
23621    p_source_code           => 'XLA_EVENT_TYPE_CODE'
23622  , p_source_type_code      => 'Y'
23623  , p_source_application_id =>  602
23624 ),'
23625 ') =  'RELEASE_RESERVED' AND 
23626 (NVL(p_source_13,'
23627 ') =  'B_PO' OR 
23628 NVL(p_source_13,'
23629 ') =  'B_PA')
23630  THEN 
23631 
23632    --
23633    XLA_AE_LINES_PKG.SetNewLine;
23634 
23635    p_balance_type_code          := l_balance_type_code;
23636    -- set the flag so later we will know whether the gain loss line needs to be created
23637    
23638    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23639      p_actual_flag :='A';
23640    END IF;
23641 
23642    --
23643    -- bulk performance
23644    --
23645    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23646                                       p_header_num   => 0); -- 4262811
23647    --
23648    -- set accounting line options
23649    --
23650    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23651            p_natural_side_code          => 'C'
23652          , p_gain_or_loss_flag          => 'N'
23653          , p_gl_transfer_mode_code      => 'S'
23654          , p_acct_entry_type_code       => 'E'
23655          , p_switch_side_flag           => 'N'
23656          , p_merge_duplicate_code       => 'N'
23657          );
23658    --
23659    l_acc_rev_natural_side_code := 'D';  -- 4262811
23660    -- 
23661    --
23662    -- set accounting line type info
23663    --
23664    xla_ae_lines_pkg.SetAcctLineType
23665       (p_component_type             => l_component_type
23666       ,p_event_type_code            => l_event_type_code
23667       ,p_line_definition_owner_code => l_line_definition_owner_code
23668       ,p_line_definition_code       => l_line_definition_code
23669       ,p_accounting_line_code       => l_component_code
23670       ,p_accounting_line_type_code  => l_component_type_code
23671       ,p_accounting_line_appl_id    => l_component_appl_id
23672       ,p_amb_context_code           => l_amb_context_code
23673       ,p_entity_code                => l_entity_code
23674       ,p_event_class_code           => l_event_class_code);
23675    --
23676    -- set accounting class
23677    --
23678    xla_ae_lines_pkg.SetAcctClass(
23679            p_accounting_class_code  => 'PURCHASE_ORDER'
23680          , p_ae_header_id           => l_ae_header_id
23681          );
23682 
23683    --
23684    -- set rounding class
23685    --
23686    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23687                       'PURCHASE_ORDER';
23688 
23689    --
23690    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23691    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23692    --
23693    -- bulk performance
23694    --
23695    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23696 
23697    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23698       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23699 
23700    -- 4955764
23701    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23702       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23703 
23704    -- 4458381 Public Sector Enh
23705    
23706    --
23707    -- set accounting attributes for the line type
23708    --
23709    l_entered_amt_idx := 23;
23710    l_accted_amt_idx  := 25;
23711    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23712    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23713    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
23714    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
23715    l_rec_acct_attrs.array_num_value(2)  := 
23716 xla_ae_sources_pkg.GetSystemSourceNum(
23717    p_source_code           => 'XLA_EVENT_APPL_ID'
23718  , p_source_type_code      => 'Y'
23719  , p_source_application_id =>  602
23720 );
23721    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
23722    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
23723    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
23724    l_rec_acct_attrs.array_char_value(4)  := 
23725 xla_ae_sources_pkg.GetSystemSourceChar(
23726    p_source_code           => 'XLA_ENTITY_CODE'
23727  , p_source_type_code      => 'Y'
23728  , p_source_application_id =>  602
23729 );
23730    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
23731    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
23732    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
23733    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
23734    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
23735    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
23736    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23737    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
23738    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
23739    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
23740    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
23741    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
23742    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23743    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
23744    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
23745    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
23746    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
23747    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
23748    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
23749    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
23750    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
23751    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
23752    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
23753    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
23754    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
23755    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
23756    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
23757    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
23758    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
23759    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
23760    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
23761    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
23762    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
23763    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
23764    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
23765    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
23766    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
23767    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
23768    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
23769    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
23770    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
23771    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
23772    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
23773    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
23774    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
23775    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
23776    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
23777    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
23778    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
23779    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
23780    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
23781    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
23782    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
23783    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
23784 
23785    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23786    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23787 
23788    ---------------------------------------------------------------------------------------------------------------
23789    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23790    ---------------------------------------------------------------------------------------------------------------
23791    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23792 
23793    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23794    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23795 
23796    IF xla_accounting_cache_pkg.GetValueChar
23797          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23798          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23799    AND l_bflow_method_code = 'PRIOR_ENTRY'
23800 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23801    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23802          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23803        )
23804    THEN
23805          xla_ae_lines_pkg.BflowUpgEntry
23806            (p_business_method_code    => l_bflow_method_code
23807            ,p_business_class_code     => l_bflow_class_code
23808            ,p_balance_type            => l_balance_type_code);
23809    ELSE
23810       NULL;
23811 XLA_AE_LINES_PKG.business_flow_validation(
23812                                 p_business_method_code     => l_bflow_method_code
23813                                ,p_business_class_code      => l_bflow_class_code
23814                                ,p_inherit_description_flag => l_inherit_desc_flag);
23815    END IF;
23816 
23817    --
23818    -- call analytical criteria
23819    --
23820    -- Inherited Analytical Criteria for business flow method of Prior Entry.
23821    --
23822    -- call description
23823    --
23824    -- No description or it is inherited.
23825    --
23826    -- call ADRs
23827    -- Bug 4922099
23828    --
23829    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23830         (NVL(l_actual_upg_option, 'N') = 'O') OR
23831         (NVL(l_enc_upg_option, 'N') = 'O')
23832       )
23833    THEN
23834    NULL;
23835    --
23836    --
23837    
23838    --
23839    --
23840    END IF;
23841    --
23842    -- Bug 4922099
23843    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23844           (NVL(l_enc_upg_option, 'N') = 'O')
23845         ) AND
23846         (l_bflow_method_code = 'PRIOR_ENTRY')
23847       )
23848    THEN
23849       IF
23850       --
23851       1 = 1
23852       --
23853       THEN
23854       xla_accounting_err_pkg.build_message
23855                                     (p_appli_s_name            => 'XLA'
23856                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23857                                     ,p_token_1                 => 'LINE_NUMBER'
23858                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23859                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23860                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23861                                                                              l_component_type
23862                                                                             ,l_component_code
23863                                                                             ,l_component_type_code
23864                                                                             ,l_component_appl_id
23865                                                                             ,l_amb_context_code
23866                                                                             ,l_entity_code
23867                                                                             ,l_event_class_code
23868                                                                            )
23869                                     ,p_token_3                 => 'OWNER'
23870                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23871                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23872                                                                           ,p_lookup_code    => l_component_type_code
23873                                                                          )
23874                                     ,p_token_4                 => 'PRODUCT_NAME'
23875                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23876                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23877                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23878                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23879                                     ,p_ae_header_id            =>  NULL
23880                                        );
23881 
23882         IF (C_LEVEL_ERROR>= g_log_level) THEN
23883                  trace
23884                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23885                       ,p_level    => C_LEVEL_ERROR
23886                       ,p_module   => l_log_module);
23887         END IF;
23888       END IF;
23889    END IF;
23890    --
23891    --
23892    ------------------------------------------------------------------------------------------------
23893    -- 4219869 Business Flow
23894    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23895    -- Prior Entry.  Currently, the following code is always generated.
23896    ------------------------------------------------------------------------------------------------
23897    -- No ValidateCurrentLine for business flow method of Prior Entry
23898 
23899    ------------------------------------------------------------------------------------
23900    -- 4219869 Business Flow
23901    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23902    ------------------------------------------------------------------------------------
23903    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23904 
23905    ----------------------------------------------------------------------------------
23906    -- 4219869 Business Flow
23907    -- Update journal entry status -- Need to generate this within IF <condition>
23908    ----------------------------------------------------------------------------------
23909    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23910          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23911          ,p_balance_type_code => l_balance_type_code
23912          );
23913 
23914    -------------------------------------------------------------------------------------------
23915    -- 4262811 - Generate the Accrual Reversal lines
23916    -------------------------------------------------------------------------------------------
23917    BEGIN
23918       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23919                               (g_array_event(p_event_id).array_value_num('header_index'));
23920       IF l_acc_rev_flag IS NULL THEN
23921          l_acc_rev_flag := 'N';
23922       END IF;
23923    EXCEPTION
23924       WHEN OTHERS THEN
23925          l_acc_rev_flag := 'N';
23926    END;
23927    --
23928    IF (l_acc_rev_flag = 'Y') THEN
23929 
23930        -- 4645092  ------------------------------------------------------------------------------
23931        -- To allow MPA report to determine if it should generate report process
23932        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23933        ------------------------------------------------------------------------------------------
23934 
23935        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23936        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23937 
23938        --
23939        -- Update the line information that should be overwritten
23940        --
23941        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23942                                          p_header_num   => 1);
23943        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23944 
23945        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23946 
23947        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23948           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23949        END IF;
23950 
23951       --
23952       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23953       --
23954       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23955           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23956       ELSE
23957           ---------------------------------------------------------------------------------------------------
23958           -- 4262811a Switch Sign
23959           ---------------------------------------------------------------------------------------------------
23960           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23961           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23962                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23963           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23964                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23965           -- 5132302
23966           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23967                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23968 
23969       END IF;
23970 
23971       -- 4955764
23972       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23973       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23974 
23975 
23976       XLA_AE_LINES_PKG.ValidateCurrentLine;
23977       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23978 
23979       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23980                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23981                ,p_balance_type_code => l_balance_type_code);
23982 
23983    END IF;
23984 
23985    -----------------------------------------------------------------------------------------
23986    -- 4262811 Multiperiod Accounting
23987    -----------------------------------------------------------------------------------------
23988      -- No MPA option is assigned.
23989 
23990 
23991 END IF;
23992 END IF;
23993 --
23994 
23995 --
23996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23997    trace
23998       (p_msg      => 'END of AcctLineType_45'
23999       ,p_level    => C_LEVEL_PROCEDURE
24000       ,p_module   => l_log_module);
24001 END IF;
24002 --
24003 EXCEPTION
24004   WHEN xla_exceptions_pkg.application_exception THEN
24005       RAISE;
24006   WHEN OTHERS THEN
24007        xla_exceptions_pkg.raise_message
24008            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_45');
24009 END AcctLineType_45;
24010 --
24011 
24012 ---------------------------------------
24013 --
24014 -- PRIVATE FUNCTION
24015 --         AcctLineType_46
24016 --
24017 ---------------------------------------
24018 PROCEDURE AcctLineType_46 (
24019   p_application_id        IN NUMBER
24020  ,p_event_id              IN NUMBER
24021  ,p_calculate_acctd_flag  IN VARCHAR2
24022  ,p_calculate_g_l_flag    IN VARCHAR2
24023  ,p_actual_flag           IN OUT VARCHAR2
24024  ,p_balance_type_code     OUT VARCHAR2
24025  ,p_gain_or_loss_ref      OUT VARCHAR2
24026  
24027 --Project Name
24028  , p_source_3            IN VARCHAR2
24029 --Task Name
24030  , p_source_4            IN VARCHAR2
24031 --Project Expenditure Organization Identifier
24032  , p_source_5            IN NUMBER
24033 --Expenditure Type
24034  , p_source_6            IN VARCHAR2
24035 --Main Or Backing Code
24036  , p_source_13            IN VARCHAR2
24037 --Accounting Reversal Flag
24038  , p_source_16            IN VARCHAR2
24039 --Allocated to Application Identifier
24040  , p_source_17            IN NUMBER
24041 --Allocated to Distribution Type
24042  , p_source_18            IN VARCHAR2
24043 --Allocated to Entity Code
24044  , p_source_19            IN VARCHAR2
24045 --Allocated to First Distribution Identifier
24046  , p_source_20            IN NUMBER
24047 --Allocated to First System Transaction Identifier
24048  , p_source_21            IN NUMBER
24049 --Allocated to Second Distribution Identifier
24050  , p_source_22            IN VARCHAR2
24051 --PO Distribution Identifier
24052  , p_source_29            IN NUMBER
24053 --Line Type Name
24054  , p_source_30            IN VARCHAR2
24055 --Encumbrance Upgrade Credit Accounting Class
24056  , p_source_31            IN VARCHAR2
24057 --Encumbrance Upgrade Credit Account
24058  , p_source_32            IN NUMBER
24059 --Entered Amount
24060  , p_source_33            IN NUMBER
24061 --Currency Code
24062  , p_source_34            IN VARCHAR2
24063 --Accounted Amount
24064  , p_source_35            IN NUMBER
24065 --Encumbrance Upgrade Debit Accounting Class
24066  , p_source_36            IN VARCHAR2
24067 --Encumbrance Upgrade Debit Account
24068  , p_source_37            IN NUMBER
24069 --Use Encumbrances Upgrade Attributes Flag
24070  , p_source_38            IN VARCHAR2
24071 --Encumbrance Upgrade Credit Encumbrance Type
24072  , p_source_39            IN NUMBER
24073 --Encumbrance Upgrade Debit Encumbrance Type
24074  , p_source_40            IN NUMBER
24075 --Project Encumbrance Applied to Application Identifier
24076  , p_source_68            IN NUMBER
24077 --Project Encumbrance Applied to Distribution Type
24078  , p_source_69            IN VARCHAR2
24079 --Project Encumbrance Applied to Entity Code
24080  , p_source_70            IN VARCHAR2
24081 --Project Encumbrance Applied to First Distribution Identifier
24082  , p_source_71            IN NUMBER
24083 --Project Encumbrance Applied to First System Transaction Identifier
24084  , p_source_72            IN NUMBER
24085 --Project Encumbrance Applied to Second Distribution Identifier
24086  , p_source_73            IN VARCHAR2
24087 )
24088 IS
24089 
24090 l_component_type              VARCHAR2(80);
24091 l_component_code              VARCHAR2(30);
24092 l_component_type_code         VARCHAR2(1);
24093 l_component_appl_id           INTEGER;
24094 l_amb_context_code            VARCHAR2(30);
24095 l_entity_code                 VARCHAR2(30);
24096 l_event_class_code            VARCHAR2(30);
24097 l_ae_header_id                NUMBER;
24098 l_event_type_code             VARCHAR2(30);
24099 l_line_definition_code        VARCHAR2(30);
24100 l_line_definition_owner_code  VARCHAR2(1);
24101 --
24102 -- adr variables
24103 l_segment                     VARCHAR2(30);
24104 l_ccid                        NUMBER;
24105 l_adr_transaction_coa_id      NUMBER;
24106 l_adr_accounting_coa_id       NUMBER;
24107 l_adr_flexfield_segment_code  VARCHAR2(30);
24108 l_adr_flex_value_set_id       NUMBER;
24109 l_adr_value_type_code         VARCHAR2(30);
24110 l_adr_value_combination_id    NUMBER;
24111 l_adr_value_segment_code      VARCHAR2(30);
24112 
24113 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24114 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24115 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24116 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24117 
24118 -- 4262811 Variables ------------------------------------------------------------------------------------------
24119 l_entered_amt_idx             NUMBER;
24120 l_accted_amt_idx              NUMBER;
24121 l_acc_rev_flag                VARCHAR2(1);
24122 l_accrual_line_num            NUMBER;
24123 l_tmp_amt                     NUMBER;
24124 l_acc_rev_natural_side_code   VARCHAR2(1);
24125 
24126 l_num_entries                 NUMBER;
24127 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24128 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24129 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24130 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24131 l_recog_line_1                NUMBER;
24132 l_recog_line_2                NUMBER;
24133 
24134 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24135 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24136 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24137 
24138 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24139 
24140 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24141 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24142 
24143 ---------------------------------------------------------------------------------------------------------------
24144 
24145 
24146 --
24147 -- bulk performance
24148 --
24149 l_balance_type_code           VARCHAR2(1);
24150 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24151 l_log_module                  VARCHAR2(240);
24152 
24153 --
24154 -- Upgrade strategy
24155 --
24156 l_actual_upg_option           VARCHAR2(1);
24157 l_enc_upg_option           VARCHAR2(1);
24158 
24159 --
24160 BEGIN
24161 --
24162 IF g_log_enabled THEN
24163       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
24164 END IF;
24165 --
24166 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24167 
24168       trace
24169          (p_msg      => 'BEGIN of AcctLineType_46'
24170          ,p_level    => C_LEVEL_PROCEDURE
24171          ,p_module   => l_log_module);
24172 
24173 END IF;
24174 --
24175 l_component_type             := 'AMB_JLT';
24176 l_component_code             := 'RELIEVE_PROJ_ENC';
24177 l_component_type_code        := 'S';
24178 l_component_appl_id          :=  201;
24179 l_amb_context_code           := 'DEFAULT';
24180 l_entity_code                := 'RELEASE';
24181 l_event_class_code           := 'RELEASE_BURDEN';
24182 l_event_type_code            := 'RELEASE_BURDEN_ALL';
24183 l_line_definition_owner_code := 'S';
24184 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
24185 --
24186 l_balance_type_code          := 'E';
24187 l_segment                     := NULL;
24188 l_ccid                        := NULL;
24189 l_adr_transaction_coa_id      := NULL;
24190 l_adr_accounting_coa_id       := NULL;
24191 l_adr_flexfield_segment_code  := NULL;
24192 l_adr_flex_value_set_id       := NULL;
24193 l_adr_value_type_code         := NULL;
24194 l_adr_value_combination_id    := NULL;
24195 l_adr_value_segment_code      := NULL;
24196 
24197 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
24198 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
24199 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24200 l_budgetary_control_flag     := 'Y';
24201 
24202 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24203 l_bflow_applied_to_amt       := NULL; -- 5132302
24204 l_entered_amt_idx            := NULL;          -- 4262811
24205 l_accted_amt_idx             := NULL;          -- 4262811
24206 l_acc_rev_flag               := NULL;          -- 4262811
24207 l_accrual_line_num           := NULL;          -- 4262811
24208 l_tmp_amt                    := NULL;          -- 4262811
24209 --
24210  
24211 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24212     l_balance_type_code <> 'B' THEN
24213 IF ((NVL(
24214 xla_ae_sources_pkg.GetSystemSourceChar(
24215    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24216  , p_source_type_code      => 'Y'
24217  , p_source_application_id =>  602
24218 ),'
24219 ') =  'REL_BURDEN_CANCELLED' OR 
24220 NVL(
24221 xla_ae_sources_pkg.GetSystemSourceChar(
24222    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24223  , p_source_type_code      => 'Y'
24224  , p_source_application_id =>  602
24225 ),'
24226 ') =  'REL_BURDEN_CR_MEMO_CANCELLED' OR 
24227 NVL(
24228 xla_ae_sources_pkg.GetSystemSourceChar(
24229    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24230  , p_source_type_code      => 'Y'
24231  , p_source_application_id =>  602
24232 ),'
24233 ') =  'REL_BURDEN_RESERVED' OR 
24234 NVL(
24235 xla_ae_sources_pkg.GetSystemSourceChar(
24236    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24237  , p_source_type_code      => 'Y'
24238  , p_source_application_id =>  602
24239 ),'
24240 ') =  'REL_BURDEN_REOPEN_FINAL_CLOSED') AND 
24241 NVL(p_source_13,'
24242 ') =  'M'
24243 ) OR ((NVL(
24244 xla_ae_sources_pkg.GetSystemSourceChar(
24245    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24246  , p_source_type_code      => 'Y'
24247  , p_source_application_id =>  602
24248 ),'
24249 ') =  'REL_BURDEN_UNRESERVED' OR 
24250 NVL(
24251 xla_ae_sources_pkg.GetSystemSourceChar(
24252    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24253  , p_source_type_code      => 'Y'
24254  , p_source_application_id =>  602
24255 ),'
24256 ') =  'REL_BURDEN_INV_CANCELLED' OR 
24257 NVL(
24258 xla_ae_sources_pkg.GetSystemSourceChar(
24259    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24260  , p_source_type_code      => 'Y'
24261  , p_source_application_id =>  602
24262 ),'
24263 ') =  'REL_BURDEN_REJECTED') AND 
24264 (NVL(p_source_13,'
24265 ') =  'B_PO' OR 
24266 NVL(p_source_13,'
24267 ') =  'B_PA' OR 
24268 NVL(p_source_13,'
24269 ') =  'B_REQ')
24270 ) THEN 
24271 
24272    --
24273    XLA_AE_LINES_PKG.SetNewLine;
24274 
24275    p_balance_type_code          := l_balance_type_code;
24276    -- set the flag so later we will know whether the gain loss line needs to be created
24277    
24278    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24279      p_actual_flag :='A';
24280    END IF;
24281 
24282    --
24283    -- bulk performance
24284    --
24285    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24286                                       p_header_num   => 0); -- 4262811
24287    --
24288    -- set accounting line options
24289    --
24290    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24291            p_natural_side_code          => 'C'
24292          , p_gain_or_loss_flag          => 'N'
24293          , p_gl_transfer_mode_code      => 'S'
24294          , p_acct_entry_type_code       => 'E'
24295          , p_switch_side_flag           => 'N'
24296          , p_merge_duplicate_code       => 'N'
24297          );
24298    --
24299    l_acc_rev_natural_side_code := 'D';  -- 4262811
24300    -- 
24301    --
24302    -- set accounting line type info
24303    --
24304    xla_ae_lines_pkg.SetAcctLineType
24305       (p_component_type             => l_component_type
24306       ,p_event_type_code            => l_event_type_code
24307       ,p_line_definition_owner_code => l_line_definition_owner_code
24308       ,p_line_definition_code       => l_line_definition_code
24309       ,p_accounting_line_code       => l_component_code
24310       ,p_accounting_line_type_code  => l_component_type_code
24311       ,p_accounting_line_appl_id    => l_component_appl_id
24312       ,p_amb_context_code           => l_amb_context_code
24313       ,p_entity_code                => l_entity_code
24314       ,p_event_class_code           => l_event_class_code);
24315    --
24316    -- set accounting class
24317    --
24318    xla_ae_lines_pkg.SetAcctClass(
24319            p_accounting_class_code  => 'PA_BUDGET_ENC'
24320          , p_ae_header_id           => l_ae_header_id
24321          );
24322 
24323    --
24324    -- set rounding class
24325    --
24326    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24327                       'PA_BUDGET_ENC';
24328 
24329    --
24330    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24331    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24332    --
24333    -- bulk performance
24334    --
24335    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24336 
24337    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24338       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24339 
24340    -- 4955764
24341    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24342       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24343 
24344    -- 4458381 Public Sector Enh
24345    
24346    --
24347    -- set accounting attributes for the line type
24348    --
24349    l_entered_amt_idx := 28;
24350    l_accted_amt_idx  := 30;
24351    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24352    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24353    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
24354    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
24355    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
24356    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
24357    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
24358    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
24359    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
24360    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
24361    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
24362    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
24363    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
24364    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
24365    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
24366    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
24367    l_rec_acct_attrs.array_num_value(8)  := p_source_68;
24368    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
24369    l_rec_acct_attrs.array_char_value(9)  := p_source_69;
24370    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
24371    l_rec_acct_attrs.array_char_value(10)  := p_source_70;
24372    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
24373    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_71);
24374    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
24375    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_72);
24376    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
24377    l_rec_acct_attrs.array_char_value(13)  := p_source_73;
24378    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
24379    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
24380    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
24381    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
24382    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
24383    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
24384    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
24385    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
24386    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
24387    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
24388    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
24389    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
24390    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
24391    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
24392    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
24393    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
24394    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
24395    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
24396    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
24397    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
24398    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
24399    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
24400    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
24401    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
24402    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
24403    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
24404    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
24405    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
24406    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
24407    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
24408    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
24409    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
24410    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
24411    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
24412    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
24413    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
24414    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
24415    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
24416    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
24417    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
24418    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
24419    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
24420    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
24421    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
24422 
24423    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24424    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24425 
24426    ---------------------------------------------------------------------------------------------------------------
24427    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24428    ---------------------------------------------------------------------------------------------------------------
24429    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24430 
24431    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24432    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24433 
24434    IF xla_accounting_cache_pkg.GetValueChar
24435          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24436          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24437    AND l_bflow_method_code = 'PRIOR_ENTRY'
24438 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24439    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24440          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24441        )
24442    THEN
24443          xla_ae_lines_pkg.BflowUpgEntry
24444            (p_business_method_code    => l_bflow_method_code
24445            ,p_business_class_code     => l_bflow_class_code
24446            ,p_balance_type            => l_balance_type_code);
24447    ELSE
24448       NULL;
24449 XLA_AE_LINES_PKG.business_flow_validation(
24450                                 p_business_method_code     => l_bflow_method_code
24451                                ,p_business_class_code      => l_bflow_class_code
24452                                ,p_inherit_description_flag => l_inherit_desc_flag);
24453    END IF;
24454 
24455    --
24456    -- call analytical criteria
24457    --
24458    -- Inherited Analytical Criteria for business flow method of Prior Entry.
24459    --
24460    -- call description
24461    --
24462    
24463 xla_ae_lines_pkg.SetLineDescription(
24464    p_ae_header_id => l_ae_header_id
24465   ,p_description  => Description_2 (
24466      p_application_id         => p_application_id
24467    , p_ae_header_id           => l_ae_header_id 
24468 , p_source_3 => p_source_3
24469 , p_source_4 => p_source_4
24470 , p_source_5 => p_source_5
24471 , p_source_6 => p_source_6
24472    )
24473 );
24474 
24475 
24476    --
24477    -- call ADRs
24478    -- Bug 4922099
24479    --
24480    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24481         (NVL(l_actual_upg_option, 'N') = 'O') OR
24482         (NVL(l_enc_upg_option, 'N') = 'O')
24483       )
24484    THEN
24485    NULL;
24486    --
24487    --
24488    
24489    --
24490    --
24491    END IF;
24492    --
24493    -- Bug 4922099
24494    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24495           (NVL(l_enc_upg_option, 'N') = 'O')
24496         ) AND
24497         (l_bflow_method_code = 'PRIOR_ENTRY')
24498       )
24499    THEN
24500       IF
24501       --
24502       1 = 1
24503       --
24504       THEN
24505       xla_accounting_err_pkg.build_message
24506                                     (p_appli_s_name            => 'XLA'
24507                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24508                                     ,p_token_1                 => 'LINE_NUMBER'
24509                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24510                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24511                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24512                                                                              l_component_type
24513                                                                             ,l_component_code
24514                                                                             ,l_component_type_code
24515                                                                             ,l_component_appl_id
24516                                                                             ,l_amb_context_code
24517                                                                             ,l_entity_code
24518                                                                             ,l_event_class_code
24519                                                                            )
24520                                     ,p_token_3                 => 'OWNER'
24521                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24522                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24523                                                                           ,p_lookup_code    => l_component_type_code
24524                                                                          )
24525                                     ,p_token_4                 => 'PRODUCT_NAME'
24526                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24527                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24528                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24529                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24530                                     ,p_ae_header_id            =>  NULL
24531                                        );
24532 
24533         IF (C_LEVEL_ERROR>= g_log_level) THEN
24534                  trace
24535                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24536                       ,p_level    => C_LEVEL_ERROR
24537                       ,p_module   => l_log_module);
24538         END IF;
24539       END IF;
24540    END IF;
24541    --
24542    --
24543    ------------------------------------------------------------------------------------------------
24544    -- 4219869 Business Flow
24545    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24546    -- Prior Entry.  Currently, the following code is always generated.
24547    ------------------------------------------------------------------------------------------------
24548    -- No ValidateCurrentLine for business flow method of Prior Entry
24549 
24550    ------------------------------------------------------------------------------------
24551    -- 4219869 Business Flow
24552    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24553    ------------------------------------------------------------------------------------
24554    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24555 
24556    ----------------------------------------------------------------------------------
24557    -- 4219869 Business Flow
24558    -- Update journal entry status -- Need to generate this within IF <condition>
24559    ----------------------------------------------------------------------------------
24560    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24561          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24562          ,p_balance_type_code => l_balance_type_code
24563          );
24564 
24565    -------------------------------------------------------------------------------------------
24566    -- 4262811 - Generate the Accrual Reversal lines
24567    -------------------------------------------------------------------------------------------
24568    BEGIN
24569       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24570                               (g_array_event(p_event_id).array_value_num('header_index'));
24571       IF l_acc_rev_flag IS NULL THEN
24572          l_acc_rev_flag := 'N';
24573       END IF;
24574    EXCEPTION
24575       WHEN OTHERS THEN
24576          l_acc_rev_flag := 'N';
24577    END;
24578    --
24579    IF (l_acc_rev_flag = 'Y') THEN
24580 
24581        -- 4645092  ------------------------------------------------------------------------------
24582        -- To allow MPA report to determine if it should generate report process
24583        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24584        ------------------------------------------------------------------------------------------
24585 
24586        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24587        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24588 
24589        --
24590        -- Update the line information that should be overwritten
24591        --
24592        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24593                                          p_header_num   => 1);
24594        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24595 
24596        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24597 
24598        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24599           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24600        END IF;
24601 
24602       --
24603       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24604       --
24605       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24606           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24607       ELSE
24608           ---------------------------------------------------------------------------------------------------
24609           -- 4262811a Switch Sign
24610           ---------------------------------------------------------------------------------------------------
24611           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24612           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24613                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24614           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24615                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24616           -- 5132302
24617           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24618                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24619 
24620       END IF;
24621 
24622       -- 4955764
24623       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24624       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24625 
24626 
24627       XLA_AE_LINES_PKG.ValidateCurrentLine;
24628       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24629 
24630       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24631                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24632                ,p_balance_type_code => l_balance_type_code);
24633 
24634    END IF;
24635 
24636    -----------------------------------------------------------------------------------------
24637    -- 4262811 Multiperiod Accounting
24638    -----------------------------------------------------------------------------------------
24639      -- No MPA option is assigned.
24640 
24641 
24642 END IF;
24643 END IF;
24644 --
24645 
24646 --
24647 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24648    trace
24649       (p_msg      => 'END of AcctLineType_46'
24650       ,p_level    => C_LEVEL_PROCEDURE
24651       ,p_module   => l_log_module);
24652 END IF;
24653 --
24654 EXCEPTION
24655   WHEN xla_exceptions_pkg.application_exception THEN
24656       RAISE;
24657   WHEN OTHERS THEN
24658        xla_exceptions_pkg.raise_message
24659            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_46');
24660 END AcctLineType_46;
24661 --
24662 
24663 ---------------------------------------
24664 --
24665 -- PRIVATE FUNCTION
24666 --         AcctLineType_47
24667 --
24668 ---------------------------------------
24669 PROCEDURE AcctLineType_47 (
24670   p_application_id        IN NUMBER
24671  ,p_event_id              IN NUMBER
24672  ,p_calculate_acctd_flag  IN VARCHAR2
24673  ,p_calculate_g_l_flag    IN VARCHAR2
24674  ,p_actual_flag           IN OUT VARCHAR2
24675  ,p_balance_type_code     OUT VARCHAR2
24676  ,p_gain_or_loss_ref      OUT VARCHAR2
24677  
24678 --Project Name
24679  , p_source_3            IN VARCHAR2
24680 --Task Name
24681  , p_source_4            IN VARCHAR2
24682 --Project Expenditure Organization Identifier
24683  , p_source_5            IN NUMBER
24684 --Expenditure Type
24685  , p_source_6            IN VARCHAR2
24686 --Main Or Backing Code
24687  , p_source_13            IN VARCHAR2
24688 --Accounting Reversal Flag
24689  , p_source_16            IN VARCHAR2
24690 --Allocated to Application Identifier
24691  , p_source_17            IN NUMBER
24692 --Allocated to Distribution Type
24693  , p_source_18            IN VARCHAR2
24694 --Allocated to Entity Code
24695  , p_source_19            IN VARCHAR2
24696 --Allocated to First Distribution Identifier
24697  , p_source_20            IN NUMBER
24698 --Allocated to First System Transaction Identifier
24699  , p_source_21            IN NUMBER
24700 --Allocated to Second Distribution Identifier
24701  , p_source_22            IN VARCHAR2
24702 --Line Type Name
24703  , p_source_30            IN VARCHAR2
24704 --Encumbrance Upgrade Credit Accounting Class
24705  , p_source_31            IN VARCHAR2
24706 --Encumbrance Upgrade Credit Account
24707  , p_source_32            IN NUMBER
24708 --Entered Amount
24709  , p_source_33            IN NUMBER
24710 --Currency Code
24711  , p_source_34            IN VARCHAR2
24712 --Accounted Amount
24713  , p_source_35            IN NUMBER
24714 --Encumbrance Upgrade Debit Accounting Class
24715  , p_source_36            IN VARCHAR2
24716 --Encumbrance Upgrade Debit Account
24717  , p_source_37            IN NUMBER
24718 --Use Encumbrances Upgrade Attributes Flag
24719  , p_source_38            IN VARCHAR2
24720 --Encumbrance Upgrade Credit Encumbrance Type
24721  , p_source_39            IN NUMBER
24722 --Encumbrance Upgrade Debit Encumbrance Type
24723  , p_source_40            IN NUMBER
24724 --Requisition Distribution Identifier
24725  , p_source_47            IN NUMBER
24726 --Project Encumbrance Applied to Application Identifier
24727  , p_source_68            IN NUMBER
24728 --Project Encumbrance Applied to Distribution Type
24729  , p_source_69            IN VARCHAR2
24730 --Project Encumbrance Applied to Entity Code
24731  , p_source_70            IN VARCHAR2
24732 --Project Encumbrance Applied to First Distribution Identifier
24733  , p_source_71            IN NUMBER
24734 --Project Encumbrance Applied to First System Transaction Identifier
24735  , p_source_72            IN NUMBER
24736 --Project Encumbrance Applied to Second Distribution Identifier
24737  , p_source_73            IN VARCHAR2
24738 --Document Distribution Type
24739  , p_source_74            IN VARCHAR2
24740 )
24741 IS
24742 
24743 l_component_type              VARCHAR2(80);
24744 l_component_code              VARCHAR2(30);
24745 l_component_type_code         VARCHAR2(1);
24746 l_component_appl_id           INTEGER;
24747 l_amb_context_code            VARCHAR2(30);
24748 l_entity_code                 VARCHAR2(30);
24749 l_event_class_code            VARCHAR2(30);
24750 l_ae_header_id                NUMBER;
24751 l_event_type_code             VARCHAR2(30);
24752 l_line_definition_code        VARCHAR2(30);
24753 l_line_definition_owner_code  VARCHAR2(1);
24754 --
24755 -- adr variables
24756 l_segment                     VARCHAR2(30);
24757 l_ccid                        NUMBER;
24758 l_adr_transaction_coa_id      NUMBER;
24759 l_adr_accounting_coa_id       NUMBER;
24760 l_adr_flexfield_segment_code  VARCHAR2(30);
24761 l_adr_flex_value_set_id       NUMBER;
24762 l_adr_value_type_code         VARCHAR2(30);
24763 l_adr_value_combination_id    NUMBER;
24764 l_adr_value_segment_code      VARCHAR2(30);
24765 
24766 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24767 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24768 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24769 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24770 
24771 -- 4262811 Variables ------------------------------------------------------------------------------------------
24772 l_entered_amt_idx             NUMBER;
24773 l_accted_amt_idx              NUMBER;
24774 l_acc_rev_flag                VARCHAR2(1);
24775 l_accrual_line_num            NUMBER;
24776 l_tmp_amt                     NUMBER;
24777 l_acc_rev_natural_side_code   VARCHAR2(1);
24778 
24779 l_num_entries                 NUMBER;
24780 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24781 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24782 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24783 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24784 l_recog_line_1                NUMBER;
24785 l_recog_line_2                NUMBER;
24786 
24787 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24788 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24789 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24790 
24791 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24792 
24793 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24794 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24795 
24796 ---------------------------------------------------------------------------------------------------------------
24797 
24798 
24799 --
24800 -- bulk performance
24801 --
24802 l_balance_type_code           VARCHAR2(1);
24803 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24804 l_log_module                  VARCHAR2(240);
24805 
24806 --
24807 -- Upgrade strategy
24808 --
24809 l_actual_upg_option           VARCHAR2(1);
24810 l_enc_upg_option           VARCHAR2(1);
24811 
24812 --
24813 BEGIN
24814 --
24815 IF g_log_enabled THEN
24816       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
24817 END IF;
24818 --
24819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24820 
24821       trace
24822          (p_msg      => 'BEGIN of AcctLineType_47'
24823          ,p_level    => C_LEVEL_PROCEDURE
24824          ,p_module   => l_log_module);
24825 
24826 END IF;
24827 --
24828 l_component_type             := 'AMB_JLT';
24829 l_component_code             := 'RELIEVE_PROJ_ENC';
24830 l_component_type_code        := 'S';
24831 l_component_appl_id          :=  201;
24832 l_amb_context_code           := 'DEFAULT';
24833 l_entity_code                := 'REQUISITION';
24834 l_event_class_code           := 'REQUISITION_BURDEN';
24835 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
24836 l_line_definition_owner_code := 'S';
24837 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
24838 --
24839 l_balance_type_code          := 'E';
24840 l_segment                     := NULL;
24841 l_ccid                        := NULL;
24842 l_adr_transaction_coa_id      := NULL;
24843 l_adr_accounting_coa_id       := NULL;
24844 l_adr_flexfield_segment_code  := NULL;
24845 l_adr_flex_value_set_id       := NULL;
24846 l_adr_value_type_code         := NULL;
24847 l_adr_value_combination_id    := NULL;
24848 l_adr_value_segment_code      := NULL;
24849 
24850 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
24851 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
24852 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24853 l_budgetary_control_flag     := 'Y';
24854 
24855 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24856 l_bflow_applied_to_amt       := NULL; -- 5132302
24857 l_entered_amt_idx            := NULL;          -- 4262811
24858 l_accted_amt_idx             := NULL;          -- 4262811
24859 l_acc_rev_flag               := NULL;          -- 4262811
24860 l_accrual_line_num           := NULL;          -- 4262811
24861 l_tmp_amt                    := NULL;          -- 4262811
24862 --
24863  
24864 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24865     l_balance_type_code <> 'B' THEN
24866 IF (NVL(
24867 xla_ae_sources_pkg.GetSystemSourceChar(
24868    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24869  , p_source_type_code      => 'Y'
24870  , p_source_application_id =>  602
24871 ),'
24872 ') =  'REQ_BURDEN_RESERVED' OR 
24873 NVL(
24874 xla_ae_sources_pkg.GetSystemSourceChar(
24875    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24876  , p_source_type_code      => 'Y'
24877  , p_source_application_id =>  602
24878 ),'
24879 ') =  'REQ_BURDEN_CANCELLED' OR 
24880 (NVL(
24881 xla_ae_sources_pkg.GetSystemSourceChar(
24882    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24883  , p_source_type_code      => 'Y'
24884  , p_source_application_id =>  602
24885 ),'
24886 ') =  'REQ_BURDEN_ADJUSTED' AND 
24887 NVL(p_source_74,'
24888 ') =  'REQUISITION_ADJUSTED_NEW')
24889 ) AND NVL(p_source_13,'
24890 ') =  'M'
24891  THEN 
24892 
24893    --
24894    XLA_AE_LINES_PKG.SetNewLine;
24895 
24896    p_balance_type_code          := l_balance_type_code;
24897    -- set the flag so later we will know whether the gain loss line needs to be created
24898    
24899    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24900      p_actual_flag :='A';
24901    END IF;
24902 
24903    --
24904    -- bulk performance
24905    --
24906    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24907                                       p_header_num   => 0); -- 4262811
24908    --
24909    -- set accounting line options
24910    --
24911    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24912            p_natural_side_code          => 'C'
24913          , p_gain_or_loss_flag          => 'N'
24914          , p_gl_transfer_mode_code      => 'S'
24915          , p_acct_entry_type_code       => 'E'
24916          , p_switch_side_flag           => 'N'
24917          , p_merge_duplicate_code       => 'N'
24918          );
24919    --
24920    l_acc_rev_natural_side_code := 'D';  -- 4262811
24921    -- 
24922    --
24923    -- set accounting line type info
24924    --
24925    xla_ae_lines_pkg.SetAcctLineType
24926       (p_component_type             => l_component_type
24927       ,p_event_type_code            => l_event_type_code
24928       ,p_line_definition_owner_code => l_line_definition_owner_code
24929       ,p_line_definition_code       => l_line_definition_code
24930       ,p_accounting_line_code       => l_component_code
24931       ,p_accounting_line_type_code  => l_component_type_code
24932       ,p_accounting_line_appl_id    => l_component_appl_id
24933       ,p_amb_context_code           => l_amb_context_code
24934       ,p_entity_code                => l_entity_code
24935       ,p_event_class_code           => l_event_class_code);
24936    --
24937    -- set accounting class
24938    --
24939    xla_ae_lines_pkg.SetAcctClass(
24940            p_accounting_class_code  => 'PA_BUDGET_ENC'
24941          , p_ae_header_id           => l_ae_header_id
24942          );
24943 
24944    --
24945    -- set rounding class
24946    --
24947    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24948                       'PA_BUDGET_ENC';
24949 
24950    --
24951    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24952    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24953    --
24954    -- bulk performance
24955    --
24956    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24957 
24958    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24959       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24960 
24961    -- 4955764
24962    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24963       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24964 
24965    -- 4458381 Public Sector Enh
24966    
24967    --
24968    -- set accounting attributes for the line type
24969    --
24970    l_entered_amt_idx := 28;
24971    l_accted_amt_idx  := 30;
24972    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24973    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24974    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
24975    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
24976    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
24977    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
24978    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
24979    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
24980    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
24981    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
24982    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
24983    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
24984    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
24985    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
24986    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
24987    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
24988    l_rec_acct_attrs.array_num_value(8)  := p_source_68;
24989    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
24990    l_rec_acct_attrs.array_char_value(9)  := p_source_69;
24991    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
24992    l_rec_acct_attrs.array_char_value(10)  := p_source_70;
24993    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
24994    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_71);
24995    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
24996    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_72);
24997    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
24998    l_rec_acct_attrs.array_char_value(13)  := p_source_73;
24999    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
25000    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
25001    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
25002    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
25003    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
25004    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
25005    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
25006    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
25007    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
25008    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
25009    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
25010    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
25011    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
25012    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
25013    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
25014    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
25015    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
25016    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
25017    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
25018    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
25019    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
25020    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
25021    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
25022    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
25023    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
25024    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
25025    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
25026    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
25027    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
25028    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
25029    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
25030    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
25031    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
25032    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
25033    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
25034    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
25035    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
25036    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
25037    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
25038    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
25039    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
25040    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
25041    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
25042    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
25043 
25044    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25045    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25046 
25047    ---------------------------------------------------------------------------------------------------------------
25048    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25049    ---------------------------------------------------------------------------------------------------------------
25050    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25051 
25052    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25053    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25054 
25055    IF xla_accounting_cache_pkg.GetValueChar
25056          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25057          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25058    AND l_bflow_method_code = 'PRIOR_ENTRY'
25059 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25060    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25061          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25062        )
25063    THEN
25064          xla_ae_lines_pkg.BflowUpgEntry
25065            (p_business_method_code    => l_bflow_method_code
25066            ,p_business_class_code     => l_bflow_class_code
25067            ,p_balance_type            => l_balance_type_code);
25068    ELSE
25069       NULL;
25070 XLA_AE_LINES_PKG.business_flow_validation(
25071                                 p_business_method_code     => l_bflow_method_code
25072                                ,p_business_class_code      => l_bflow_class_code
25073                                ,p_inherit_description_flag => l_inherit_desc_flag);
25074    END IF;
25075 
25076    --
25077    -- call analytical criteria
25078    --
25079    -- Inherited Analytical Criteria for business flow method of Prior Entry.
25080    --
25081    -- call description
25082    --
25083    
25084 xla_ae_lines_pkg.SetLineDescription(
25085    p_ae_header_id => l_ae_header_id
25086   ,p_description  => Description_2 (
25087      p_application_id         => p_application_id
25088    , p_ae_header_id           => l_ae_header_id 
25089 , p_source_3 => p_source_3
25090 , p_source_4 => p_source_4
25091 , p_source_5 => p_source_5
25092 , p_source_6 => p_source_6
25093    )
25094 );
25095 
25096 
25097    --
25098    -- call ADRs
25099    -- Bug 4922099
25100    --
25101    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25102         (NVL(l_actual_upg_option, 'N') = 'O') OR
25103         (NVL(l_enc_upg_option, 'N') = 'O')
25104       )
25105    THEN
25106    NULL;
25107    --
25108    --
25109    
25110    --
25111    --
25112    END IF;
25113    --
25114    -- Bug 4922099
25115    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25116           (NVL(l_enc_upg_option, 'N') = 'O')
25117         ) AND
25118         (l_bflow_method_code = 'PRIOR_ENTRY')
25119       )
25120    THEN
25121       IF
25122       --
25123       1 = 1
25124       --
25125       THEN
25126       xla_accounting_err_pkg.build_message
25127                                     (p_appli_s_name            => 'XLA'
25128                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25129                                     ,p_token_1                 => 'LINE_NUMBER'
25130                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25131                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25132                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25133                                                                              l_component_type
25134                                                                             ,l_component_code
25135                                                                             ,l_component_type_code
25136                                                                             ,l_component_appl_id
25137                                                                             ,l_amb_context_code
25138                                                                             ,l_entity_code
25139                                                                             ,l_event_class_code
25140                                                                            )
25141                                     ,p_token_3                 => 'OWNER'
25142                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25143                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25144                                                                           ,p_lookup_code    => l_component_type_code
25145                                                                          )
25146                                     ,p_token_4                 => 'PRODUCT_NAME'
25147                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25148                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25149                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25150                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25151                                     ,p_ae_header_id            =>  NULL
25152                                        );
25153 
25154         IF (C_LEVEL_ERROR>= g_log_level) THEN
25155                  trace
25156                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25157                       ,p_level    => C_LEVEL_ERROR
25158                       ,p_module   => l_log_module);
25159         END IF;
25160       END IF;
25161    END IF;
25162    --
25163    --
25164    ------------------------------------------------------------------------------------------------
25165    -- 4219869 Business Flow
25166    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25167    -- Prior Entry.  Currently, the following code is always generated.
25168    ------------------------------------------------------------------------------------------------
25169    -- No ValidateCurrentLine for business flow method of Prior Entry
25170 
25171    ------------------------------------------------------------------------------------
25172    -- 4219869 Business Flow
25173    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25174    ------------------------------------------------------------------------------------
25175    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25176 
25177    ----------------------------------------------------------------------------------
25178    -- 4219869 Business Flow
25179    -- Update journal entry status -- Need to generate this within IF <condition>
25180    ----------------------------------------------------------------------------------
25181    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25182          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25183          ,p_balance_type_code => l_balance_type_code
25184          );
25185 
25186    -------------------------------------------------------------------------------------------
25187    -- 4262811 - Generate the Accrual Reversal lines
25188    -------------------------------------------------------------------------------------------
25189    BEGIN
25190       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25191                               (g_array_event(p_event_id).array_value_num('header_index'));
25192       IF l_acc_rev_flag IS NULL THEN
25193          l_acc_rev_flag := 'N';
25194       END IF;
25195    EXCEPTION
25196       WHEN OTHERS THEN
25197          l_acc_rev_flag := 'N';
25198    END;
25199    --
25200    IF (l_acc_rev_flag = 'Y') THEN
25201 
25202        -- 4645092  ------------------------------------------------------------------------------
25203        -- To allow MPA report to determine if it should generate report process
25204        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25205        ------------------------------------------------------------------------------------------
25206 
25207        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25208        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25209 
25210        --
25211        -- Update the line information that should be overwritten
25212        --
25213        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25214                                          p_header_num   => 1);
25215        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25216 
25217        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25218 
25219        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25220           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25221        END IF;
25222 
25223       --
25224       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25225       --
25226       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25227           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25228       ELSE
25229           ---------------------------------------------------------------------------------------------------
25230           -- 4262811a Switch Sign
25231           ---------------------------------------------------------------------------------------------------
25232           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25233           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25234                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25235           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25236                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25237           -- 5132302
25238           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25239                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25240 
25241       END IF;
25242 
25243       -- 4955764
25244       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25245       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25246 
25247 
25248       XLA_AE_LINES_PKG.ValidateCurrentLine;
25249       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25250 
25251       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25252                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25253                ,p_balance_type_code => l_balance_type_code);
25254 
25255    END IF;
25256 
25257    -----------------------------------------------------------------------------------------
25258    -- 4262811 Multiperiod Accounting
25259    -----------------------------------------------------------------------------------------
25260      -- No MPA option is assigned.
25261 
25262 
25263 END IF;
25264 END IF;
25265 --
25266 
25267 --
25268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25269    trace
25270       (p_msg      => 'END of AcctLineType_47'
25271       ,p_level    => C_LEVEL_PROCEDURE
25272       ,p_module   => l_log_module);
25273 END IF;
25274 --
25275 EXCEPTION
25276   WHEN xla_exceptions_pkg.application_exception THEN
25277       RAISE;
25278   WHEN OTHERS THEN
25279        xla_exceptions_pkg.raise_message
25280            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_47');
25281 END AcctLineType_47;
25282 --
25283 
25284 ---------------------------------------
25285 --
25286 -- PRIVATE FUNCTION
25287 --         AcctLineType_48
25288 --
25289 ---------------------------------------
25290 PROCEDURE AcctLineType_48 (
25291   p_application_id        IN NUMBER
25292  ,p_event_id              IN NUMBER
25293  ,p_calculate_acctd_flag  IN VARCHAR2
25294  ,p_calculate_g_l_flag    IN VARCHAR2
25295  ,p_actual_flag           IN OUT VARCHAR2
25296  ,p_balance_type_code     OUT VARCHAR2
25297  ,p_gain_or_loss_ref      OUT VARCHAR2
25298  
25299 --Project Name
25300  , p_source_3            IN VARCHAR2
25301 --Task Name
25302  , p_source_4            IN VARCHAR2
25303 --Project Expenditure Organization Identifier
25304  , p_source_5            IN NUMBER
25305 --Expenditure Type
25306  , p_source_6            IN VARCHAR2
25307 --Main Or Backing Code
25308  , p_source_13            IN VARCHAR2
25309 --Accounting Reversal Flag
25310  , p_source_16            IN VARCHAR2
25311 --Allocated to Application Identifier
25312  , p_source_17            IN NUMBER
25313 --Allocated to Distribution Type
25314  , p_source_18            IN VARCHAR2
25315 --Allocated to Entity Code
25316  , p_source_19            IN VARCHAR2
25317 --Allocated to First Distribution Identifier
25318  , p_source_20            IN NUMBER
25319 --Allocated to First System Transaction Identifier
25320  , p_source_21            IN NUMBER
25321 --PO Distribution Identifier
25322  , p_source_29            IN NUMBER
25323 --Line Type Name
25324  , p_source_30            IN VARCHAR2
25325 --Encumbrance Upgrade Credit Accounting Class
25326  , p_source_31            IN VARCHAR2
25327 --Encumbrance Upgrade Credit Account
25328  , p_source_32            IN NUMBER
25329 --Entered Amount
25330  , p_source_33            IN NUMBER
25331 --Currency Code
25332  , p_source_34            IN VARCHAR2
25333 --Accounted Amount
25334  , p_source_35            IN NUMBER
25335 --Encumbrance Upgrade Debit Accounting Class
25336  , p_source_36            IN VARCHAR2
25337 --Encumbrance Upgrade Debit Account
25338  , p_source_37            IN NUMBER
25339 --Use Encumbrances Upgrade Attributes Flag
25340  , p_source_38            IN VARCHAR2
25341 --Encumbrance Upgrade Credit Encumbrance Type
25342  , p_source_39            IN NUMBER
25343 --Encumbrance Upgrade Debit Encumbrance Type
25344  , p_source_40            IN NUMBER
25345 --Project Encumbrance Applied to Application Identifier
25346  , p_source_68            IN NUMBER
25347 --Project Encumbrance Applied to Distribution Type
25348  , p_source_69            IN VARCHAR2
25349 --Project Encumbrance Applied to Entity Code
25350  , p_source_70            IN VARCHAR2
25351 --Project Encumbrance Applied to First Distribution Identifier
25352  , p_source_71            IN NUMBER
25353 --Project Encumbrance Applied to First System Transaction Identifier
25354  , p_source_72            IN NUMBER
25355 --Project Encumbrance Applied to Second Distribution Identifier
25356  , p_source_73            IN VARCHAR2
25357 )
25358 IS
25359 
25360 l_component_type              VARCHAR2(80);
25361 l_component_code              VARCHAR2(30);
25362 l_component_type_code         VARCHAR2(1);
25363 l_component_appl_id           INTEGER;
25364 l_amb_context_code            VARCHAR2(30);
25365 l_entity_code                 VARCHAR2(30);
25366 l_event_class_code            VARCHAR2(30);
25367 l_ae_header_id                NUMBER;
25368 l_event_type_code             VARCHAR2(30);
25369 l_line_definition_code        VARCHAR2(30);
25370 l_line_definition_owner_code  VARCHAR2(1);
25371 --
25372 -- adr variables
25373 l_segment                     VARCHAR2(30);
25374 l_ccid                        NUMBER;
25375 l_adr_transaction_coa_id      NUMBER;
25376 l_adr_accounting_coa_id       NUMBER;
25377 l_adr_flexfield_segment_code  VARCHAR2(30);
25378 l_adr_flex_value_set_id       NUMBER;
25379 l_adr_value_type_code         VARCHAR2(30);
25380 l_adr_value_combination_id    NUMBER;
25381 l_adr_value_segment_code      VARCHAR2(30);
25382 
25383 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25384 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25385 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25386 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25387 
25388 -- 4262811 Variables ------------------------------------------------------------------------------------------
25389 l_entered_amt_idx             NUMBER;
25390 l_accted_amt_idx              NUMBER;
25391 l_acc_rev_flag                VARCHAR2(1);
25392 l_accrual_line_num            NUMBER;
25393 l_tmp_amt                     NUMBER;
25394 l_acc_rev_natural_side_code   VARCHAR2(1);
25395 
25396 l_num_entries                 NUMBER;
25397 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25398 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25399 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25400 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25401 l_recog_line_1                NUMBER;
25402 l_recog_line_2                NUMBER;
25403 
25404 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25405 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25406 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25407 
25408 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25409 
25410 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25411 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25412 
25413 ---------------------------------------------------------------------------------------------------------------
25414 
25415 
25416 --
25417 -- bulk performance
25418 --
25419 l_balance_type_code           VARCHAR2(1);
25420 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25421 l_log_module                  VARCHAR2(240);
25422 
25423 --
25424 -- Upgrade strategy
25425 --
25426 l_actual_upg_option           VARCHAR2(1);
25427 l_enc_upg_option           VARCHAR2(1);
25428 
25429 --
25430 BEGIN
25431 --
25432 IF g_log_enabled THEN
25433       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
25434 END IF;
25435 --
25436 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25437 
25438       trace
25439          (p_msg      => 'BEGIN of AcctLineType_48'
25440          ,p_level    => C_LEVEL_PROCEDURE
25441          ,p_module   => l_log_module);
25442 
25443 END IF;
25444 --
25445 l_component_type             := 'AMB_JLT';
25446 l_component_code             := 'RELIEVE_PROJ_ENC';
25447 l_component_type_code        := 'S';
25448 l_component_appl_id          :=  201;
25449 l_amb_context_code           := 'DEFAULT';
25450 l_entity_code                := 'PURCHASE_ORDER';
25451 l_event_class_code           := 'PO_BURDEN';
25452 l_event_type_code            := 'PO_BURDEN_ALL';
25453 l_line_definition_owner_code := 'S';
25454 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
25455 --
25456 l_balance_type_code          := 'E';
25457 l_segment                     := NULL;
25458 l_ccid                        := NULL;
25459 l_adr_transaction_coa_id      := NULL;
25460 l_adr_accounting_coa_id       := NULL;
25461 l_adr_flexfield_segment_code  := NULL;
25462 l_adr_flex_value_set_id       := NULL;
25463 l_adr_value_type_code         := NULL;
25464 l_adr_value_combination_id    := NULL;
25465 l_adr_value_segment_code      := NULL;
25466 
25467 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
25468 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
25469 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25470 l_budgetary_control_flag     := 'Y';
25471 
25472 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25473 l_bflow_applied_to_amt       := NULL; -- 5132302
25474 l_entered_amt_idx            := NULL;          -- 4262811
25475 l_accted_amt_idx             := NULL;          -- 4262811
25476 l_acc_rev_flag               := NULL;          -- 4262811
25477 l_accrual_line_num           := NULL;          -- 4262811
25478 l_tmp_amt                    := NULL;          -- 4262811
25479 --
25480  
25481 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25482     l_balance_type_code <> 'B' THEN
25483 IF ((NVL(
25484 xla_ae_sources_pkg.GetSystemSourceChar(
25485    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25486  , p_source_type_code      => 'Y'
25487  , p_source_application_id =>  602
25488 ),'
25489 ') =  'PO_BURDEN_RESERVED' OR 
25490 NVL(
25491 xla_ae_sources_pkg.GetSystemSourceChar(
25492    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25493  , p_source_type_code      => 'Y'
25494  , p_source_application_id =>  602
25495 ),'
25496 ') =  'PO_BURDEN_CANCELLED' OR 
25497 NVL(
25498 xla_ae_sources_pkg.GetSystemSourceChar(
25499    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25500  , p_source_type_code      => 'Y'
25501  , p_source_application_id =>  602
25502 ),'
25503 ') =  'PO_BURDEN_CR_MEMO_CANCELLED' OR 
25504 NVL(
25505 xla_ae_sources_pkg.GetSystemSourceChar(
25506    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25507  , p_source_type_code      => 'Y'
25508  , p_source_application_id =>  602
25509 ),'
25510 ') =  'PO_BURDEN_REOPEN_FINAL_MATCH') AND 
25511 (NVL(p_source_13,'
25512 ') =  'M')
25513 ) OR ((NVL(
25514 xla_ae_sources_pkg.GetSystemSourceChar(
25515    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25516  , p_source_type_code      => 'Y'
25517  , p_source_application_id =>  602
25518 ),'
25519 ') =  'PO_BURDEN_UNRESERVED' OR 
25520 NVL(
25521 xla_ae_sources_pkg.GetSystemSourceChar(
25522    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25523  , p_source_type_code      => 'Y'
25524  , p_source_application_id =>  602
25525 ),'
25526 ') =  'PO_BURDEN_INV_CANCELLED' OR 
25527 NVL(
25528 xla_ae_sources_pkg.GetSystemSourceChar(
25529    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25530  , p_source_type_code      => 'Y'
25531  , p_source_application_id =>  602
25532 ),'
25533 ') =  'PO_BURDEN_REJECTED') AND 
25534 (NVL(p_source_13,'
25535 ') =  'B_REQ')
25536 ) THEN 
25537 
25538    --
25539    XLA_AE_LINES_PKG.SetNewLine;
25540 
25541    p_balance_type_code          := l_balance_type_code;
25542    -- set the flag so later we will know whether the gain loss line needs to be created
25543    
25544    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25545      p_actual_flag :='A';
25546    END IF;
25547 
25548    --
25549    -- bulk performance
25550    --
25551    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25552                                       p_header_num   => 0); -- 4262811
25553    --
25554    -- set accounting line options
25555    --
25556    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25557            p_natural_side_code          => 'C'
25558          , p_gain_or_loss_flag          => 'N'
25559          , p_gl_transfer_mode_code      => 'S'
25560          , p_acct_entry_type_code       => 'E'
25561          , p_switch_side_flag           => 'N'
25562          , p_merge_duplicate_code       => 'N'
25563          );
25564    --
25565    l_acc_rev_natural_side_code := 'D';  -- 4262811
25566    -- 
25567    --
25568    -- set accounting line type info
25569    --
25570    xla_ae_lines_pkg.SetAcctLineType
25571       (p_component_type             => l_component_type
25572       ,p_event_type_code            => l_event_type_code
25573       ,p_line_definition_owner_code => l_line_definition_owner_code
25574       ,p_line_definition_code       => l_line_definition_code
25575       ,p_accounting_line_code       => l_component_code
25576       ,p_accounting_line_type_code  => l_component_type_code
25577       ,p_accounting_line_appl_id    => l_component_appl_id
25578       ,p_amb_context_code           => l_amb_context_code
25579       ,p_entity_code                => l_entity_code
25580       ,p_event_class_code           => l_event_class_code);
25581    --
25582    -- set accounting class
25583    --
25584    xla_ae_lines_pkg.SetAcctClass(
25585            p_accounting_class_code  => 'PA_BUDGET_ENC'
25586          , p_ae_header_id           => l_ae_header_id
25587          );
25588 
25589    --
25590    -- set rounding class
25591    --
25592    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25593                       'PA_BUDGET_ENC';
25594 
25595    --
25596    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25597    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25598    --
25599    -- bulk performance
25600    --
25601    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25602 
25603    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25604       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25605 
25606    -- 4955764
25607    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25608       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25609 
25610    -- 4458381 Public Sector Enh
25611    
25612    --
25613    -- set accounting attributes for the line type
25614    --
25615    l_entered_amt_idx := 27;
25616    l_accted_amt_idx  := 29;
25617    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25618    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25619    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
25620    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
25621    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
25622    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
25623    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
25624    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
25625    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
25626    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
25627    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
25628    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
25629    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
25630    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
25631    l_rec_acct_attrs.array_num_value(7)  := p_source_68;
25632    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
25633    l_rec_acct_attrs.array_char_value(8)  := p_source_69;
25634    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
25635    l_rec_acct_attrs.array_char_value(9)  := p_source_70;
25636    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
25637    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_71);
25638    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
25639    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_72);
25640    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
25641    l_rec_acct_attrs.array_char_value(12)  := p_source_73;
25642    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
25643    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
25644    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
25645    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
25646    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
25647    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
25648    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
25649    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
25650    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
25651    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
25652    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
25653    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
25654    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
25655    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
25656    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
25657    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
25658    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
25659    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
25660    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
25661    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
25662    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
25663    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
25664    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
25665    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
25666    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
25667    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
25668    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
25669    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
25670    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
25671    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
25672    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
25673    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
25674    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
25675    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
25676    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
25677    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
25678    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
25679    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
25680    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
25681    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
25682    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
25683    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
25684    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
25685    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
25686 
25687    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25688    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25689 
25690    ---------------------------------------------------------------------------------------------------------------
25691    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25692    ---------------------------------------------------------------------------------------------------------------
25693    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25694 
25695    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25696    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25697 
25698    IF xla_accounting_cache_pkg.GetValueChar
25699          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25700          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25701    AND l_bflow_method_code = 'PRIOR_ENTRY'
25702 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25703    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25704          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25705        )
25706    THEN
25707          xla_ae_lines_pkg.BflowUpgEntry
25708            (p_business_method_code    => l_bflow_method_code
25709            ,p_business_class_code     => l_bflow_class_code
25710            ,p_balance_type            => l_balance_type_code);
25711    ELSE
25712       NULL;
25713 XLA_AE_LINES_PKG.business_flow_validation(
25714                                 p_business_method_code     => l_bflow_method_code
25715                                ,p_business_class_code      => l_bflow_class_code
25716                                ,p_inherit_description_flag => l_inherit_desc_flag);
25717    END IF;
25718 
25719    --
25720    -- call analytical criteria
25721    --
25722    -- Inherited Analytical Criteria for business flow method of Prior Entry.
25723    --
25724    -- call description
25725    --
25726    
25727 xla_ae_lines_pkg.SetLineDescription(
25728    p_ae_header_id => l_ae_header_id
25729   ,p_description  => Description_2 (
25730      p_application_id         => p_application_id
25731    , p_ae_header_id           => l_ae_header_id 
25732 , p_source_3 => p_source_3
25733 , p_source_4 => p_source_4
25734 , p_source_5 => p_source_5
25735 , p_source_6 => p_source_6
25736    )
25737 );
25738 
25739 
25740    --
25741    -- call ADRs
25742    -- Bug 4922099
25743    --
25744    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25745         (NVL(l_actual_upg_option, 'N') = 'O') OR
25746         (NVL(l_enc_upg_option, 'N') = 'O')
25747       )
25748    THEN
25749    NULL;
25750    --
25751    --
25752    
25753    --
25754    --
25755    END IF;
25756    --
25757    -- Bug 4922099
25758    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25759           (NVL(l_enc_upg_option, 'N') = 'O')
25760         ) AND
25761         (l_bflow_method_code = 'PRIOR_ENTRY')
25762       )
25763    THEN
25764       IF
25765       --
25766       1 = 1
25767       --
25768       THEN
25769       xla_accounting_err_pkg.build_message
25770                                     (p_appli_s_name            => 'XLA'
25771                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25772                                     ,p_token_1                 => 'LINE_NUMBER'
25773                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25774                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25775                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25776                                                                              l_component_type
25777                                                                             ,l_component_code
25778                                                                             ,l_component_type_code
25779                                                                             ,l_component_appl_id
25780                                                                             ,l_amb_context_code
25781                                                                             ,l_entity_code
25782                                                                             ,l_event_class_code
25783                                                                            )
25784                                     ,p_token_3                 => 'OWNER'
25785                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25786                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25787                                                                           ,p_lookup_code    => l_component_type_code
25788                                                                          )
25789                                     ,p_token_4                 => 'PRODUCT_NAME'
25790                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25791                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25792                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25793                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25794                                     ,p_ae_header_id            =>  NULL
25795                                        );
25796 
25797         IF (C_LEVEL_ERROR>= g_log_level) THEN
25798                  trace
25799                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25800                       ,p_level    => C_LEVEL_ERROR
25801                       ,p_module   => l_log_module);
25802         END IF;
25803       END IF;
25804    END IF;
25805    --
25806    --
25807    ------------------------------------------------------------------------------------------------
25808    -- 4219869 Business Flow
25809    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25810    -- Prior Entry.  Currently, the following code is always generated.
25811    ------------------------------------------------------------------------------------------------
25812    -- No ValidateCurrentLine for business flow method of Prior Entry
25813 
25814    ------------------------------------------------------------------------------------
25815    -- 4219869 Business Flow
25816    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25817    ------------------------------------------------------------------------------------
25818    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25819 
25820    ----------------------------------------------------------------------------------
25821    -- 4219869 Business Flow
25822    -- Update journal entry status -- Need to generate this within IF <condition>
25823    ----------------------------------------------------------------------------------
25824    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25825          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25826          ,p_balance_type_code => l_balance_type_code
25827          );
25828 
25829    -------------------------------------------------------------------------------------------
25830    -- 4262811 - Generate the Accrual Reversal lines
25831    -------------------------------------------------------------------------------------------
25832    BEGIN
25833       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25834                               (g_array_event(p_event_id).array_value_num('header_index'));
25835       IF l_acc_rev_flag IS NULL THEN
25836          l_acc_rev_flag := 'N';
25837       END IF;
25838    EXCEPTION
25839       WHEN OTHERS THEN
25840          l_acc_rev_flag := 'N';
25841    END;
25842    --
25843    IF (l_acc_rev_flag = 'Y') THEN
25844 
25845        -- 4645092  ------------------------------------------------------------------------------
25846        -- To allow MPA report to determine if it should generate report process
25847        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25848        ------------------------------------------------------------------------------------------
25849 
25850        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25851        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25852 
25853        --
25854        -- Update the line information that should be overwritten
25855        --
25856        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25857                                          p_header_num   => 1);
25858        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25859 
25860        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25861 
25862        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25863           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25864        END IF;
25865 
25866       --
25867       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25868       --
25869       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25870           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25871       ELSE
25872           ---------------------------------------------------------------------------------------------------
25873           -- 4262811a Switch Sign
25874           ---------------------------------------------------------------------------------------------------
25875           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25876           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25877                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25878           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25879                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25880           -- 5132302
25881           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25882                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25883 
25884       END IF;
25885 
25886       -- 4955764
25887       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25888       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25889 
25890 
25891       XLA_AE_LINES_PKG.ValidateCurrentLine;
25892       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25893 
25894       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25895                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25896                ,p_balance_type_code => l_balance_type_code);
25897 
25898    END IF;
25899 
25900    -----------------------------------------------------------------------------------------
25901    -- 4262811 Multiperiod Accounting
25902    -----------------------------------------------------------------------------------------
25903      -- No MPA option is assigned.
25904 
25905 
25906 END IF;
25907 END IF;
25908 --
25909 
25910 --
25911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25912    trace
25913       (p_msg      => 'END of AcctLineType_48'
25914       ,p_level    => C_LEVEL_PROCEDURE
25915       ,p_module   => l_log_module);
25916 END IF;
25917 --
25918 EXCEPTION
25919   WHEN xla_exceptions_pkg.application_exception THEN
25920       RAISE;
25921   WHEN OTHERS THEN
25922        xla_exceptions_pkg.raise_message
25923            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_48');
25924 END AcctLineType_48;
25925 --
25926 
25927 ---------------------------------------
25928 --
25929 -- PRIVATE FUNCTION
25930 --         AcctLineType_49
25931 --
25932 ---------------------------------------
25933 PROCEDURE AcctLineType_49 (
25934   p_application_id        IN NUMBER
25935  ,p_event_id              IN NUMBER
25936  ,p_calculate_acctd_flag  IN VARCHAR2
25937  ,p_calculate_g_l_flag    IN VARCHAR2
25938  ,p_actual_flag           IN OUT VARCHAR2
25939  ,p_balance_type_code     OUT VARCHAR2
25940  ,p_gain_or_loss_ref      OUT VARCHAR2
25941  
25942 --Budget Account
25943  , p_source_11            IN NUMBER
25944 --Main Or Backing Code
25945  , p_source_13            IN VARCHAR2
25946 --Accounting Reversal Flag
25947  , p_source_16            IN VARCHAR2
25948 --PO Distribution Identifier
25949  , p_source_29            IN NUMBER
25950 --Entered Amount
25951  , p_source_33            IN NUMBER
25952 --Currency Code
25953  , p_source_34            IN VARCHAR2
25954 --Accounted Amount
25955  , p_source_35            IN NUMBER
25956 --Allocated to Main Document Distribution Type
25957  , p_source_49            IN VARCHAR2
25958 --Allocated to Main Document Distribution Identifier
25959  , p_source_51            IN NUMBER
25960 --PO Header Identifier
25961  , p_source_52            IN NUMBER
25962 --Applied To Application Identifier
25963  , p_source_53            IN NUMBER
25964 --Applied To Distribution Link Type
25965  , p_source_54            IN VARCHAR2
25966 --Applied To Entity Code
25967  , p_source_55            IN VARCHAR2
25968 --Applied To Distribution Identifier 1
25969  , p_source_56            IN NUMBER
25970 --Applied To Header Identifier 1
25971  , p_source_57            IN NUMBER
25972 --Distribution Link Type
25973  , p_source_58            IN VARCHAR2
25974 --PO Encumbrance Upgrade Option
25975  , p_source_59            IN VARCHAR2
25976 --JFMIP Reference
25977  , p_source_60            IN VARCHAR2
25978 --PO Upgrade Encumbrance Type Identifier
25979  , p_source_61            IN NUMBER
25980 --Backing Requisition Prevent Encumbrance Changed Flag
25981  , p_source_65            IN VARCHAR2
25982 )
25983 IS
25984 
25985 l_component_type              VARCHAR2(80);
25986 l_component_code              VARCHAR2(30);
25987 l_component_type_code         VARCHAR2(1);
25988 l_component_appl_id           INTEGER;
25989 l_amb_context_code            VARCHAR2(30);
25990 l_entity_code                 VARCHAR2(30);
25991 l_event_class_code            VARCHAR2(30);
25992 l_ae_header_id                NUMBER;
25993 l_event_type_code             VARCHAR2(30);
25994 l_line_definition_code        VARCHAR2(30);
25995 l_line_definition_owner_code  VARCHAR2(1);
25996 --
25997 -- adr variables
25998 l_segment                     VARCHAR2(30);
25999 l_ccid                        NUMBER;
26000 l_adr_transaction_coa_id      NUMBER;
26001 l_adr_accounting_coa_id       NUMBER;
26002 l_adr_flexfield_segment_code  VARCHAR2(30);
26003 l_adr_flex_value_set_id       NUMBER;
26004 l_adr_value_type_code         VARCHAR2(30);
26005 l_adr_value_combination_id    NUMBER;
26006 l_adr_value_segment_code      VARCHAR2(30);
26007 
26008 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26009 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26010 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26011 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26012 
26013 -- 4262811 Variables ------------------------------------------------------------------------------------------
26014 l_entered_amt_idx             NUMBER;
26015 l_accted_amt_idx              NUMBER;
26016 l_acc_rev_flag                VARCHAR2(1);
26017 l_accrual_line_num            NUMBER;
26018 l_tmp_amt                     NUMBER;
26019 l_acc_rev_natural_side_code   VARCHAR2(1);
26020 
26021 l_num_entries                 NUMBER;
26022 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26023 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26024 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26025 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26026 l_recog_line_1                NUMBER;
26027 l_recog_line_2                NUMBER;
26028 
26029 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26030 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26031 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26032 
26033 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26034 
26035 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26036 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26037 
26038 ---------------------------------------------------------------------------------------------------------------
26039 
26040 
26041 --
26042 -- bulk performance
26043 --
26044 l_balance_type_code           VARCHAR2(1);
26045 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26046 l_log_module                  VARCHAR2(240);
26047 
26048 --
26049 -- Upgrade strategy
26050 --
26051 l_actual_upg_option           VARCHAR2(1);
26052 l_enc_upg_option           VARCHAR2(1);
26053 
26054 --
26055 BEGIN
26056 --
26057 IF g_log_enabled THEN
26058       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
26059 END IF;
26060 --
26061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26062 
26063       trace
26064          (p_msg      => 'BEGIN of AcctLineType_49'
26065          ,p_level    => C_LEVEL_PROCEDURE
26066          ,p_module   => l_log_module);
26067 
26068 END IF;
26069 --
26070 l_component_type             := 'AMB_JLT';
26071 l_component_code             := 'RELIEVE_REQ_ENC_FROM_PO';
26072 l_component_type_code        := 'S';
26073 l_component_appl_id          :=  201;
26074 l_amb_context_code           := 'DEFAULT';
26075 l_entity_code                := 'PURCHASE_ORDER';
26076 l_event_class_code           := 'PO_PA';
26077 l_event_type_code            := 'PO_PA_ALL';
26078 l_line_definition_owner_code := 'S';
26079 l_line_definition_code       := 'PO_PA_ENC_ALL';
26080 --
26081 l_balance_type_code          := 'E';
26082 l_segment                     := NULL;
26083 l_ccid                        := NULL;
26084 l_adr_transaction_coa_id      := NULL;
26085 l_adr_accounting_coa_id       := NULL;
26086 l_adr_flexfield_segment_code  := NULL;
26087 l_adr_flex_value_set_id       := NULL;
26088 l_adr_value_type_code         := NULL;
26089 l_adr_value_combination_id    := NULL;
26090 l_adr_value_segment_code      := NULL;
26091 
26092 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
26093 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
26094 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
26095 l_budgetary_control_flag     := 'Y';
26096 
26097 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26098 l_bflow_applied_to_amt       := NULL; -- 5132302
26099 l_entered_amt_idx            := NULL;          -- 4262811
26100 l_accted_amt_idx             := NULL;          -- 4262811
26101 l_acc_rev_flag               := NULL;          -- 4262811
26102 l_accrual_line_num           := NULL;          -- 4262811
26103 l_tmp_amt                    := NULL;          -- 4262811
26104 --
26105  
26106 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26107     l_balance_type_code <> 'B' THEN
26108 IF NVL(
26109 xla_ae_sources_pkg.GetSystemSourceChar(
26110    p_source_code           => 'XLA_EVENT_TYPE_CODE'
26111  , p_source_type_code      => 'Y'
26112  , p_source_application_id =>  602
26113 ),'
26114 ') =  'PO_PA_RESERVED' AND 
26115 NVL(p_source_13,'
26116 ') =  'B_REQ' AND 
26117 NVL(p_source_65,'
26118 ') =  'N'
26119  THEN 
26120 
26121    --
26122    XLA_AE_LINES_PKG.SetNewLine;
26123 
26124    p_balance_type_code          := l_balance_type_code;
26125    -- set the flag so later we will know whether the gain loss line needs to be created
26126    
26127    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26128      p_actual_flag :='A';
26129    END IF;
26130 
26131    --
26132    -- bulk performance
26133    --
26134    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26135                                       p_header_num   => 0); -- 4262811
26136    --
26137    -- set accounting line options
26138    --
26139    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26140            p_natural_side_code          => 'C'
26141          , p_gain_or_loss_flag          => 'N'
26142          , p_gl_transfer_mode_code      => 'S'
26143          , p_acct_entry_type_code       => 'E'
26144          , p_switch_side_flag           => 'N'
26145          , p_merge_duplicate_code       => 'N'
26146          );
26147    --
26148    l_acc_rev_natural_side_code := 'D';  -- 4262811
26149    -- 
26150    --
26151    -- set accounting line type info
26152    --
26153    xla_ae_lines_pkg.SetAcctLineType
26154       (p_component_type             => l_component_type
26155       ,p_event_type_code            => l_event_type_code
26156       ,p_line_definition_owner_code => l_line_definition_owner_code
26157       ,p_line_definition_code       => l_line_definition_code
26158       ,p_accounting_line_code       => l_component_code
26159       ,p_accounting_line_type_code  => l_component_type_code
26160       ,p_accounting_line_appl_id    => l_component_appl_id
26161       ,p_amb_context_code           => l_amb_context_code
26162       ,p_entity_code                => l_entity_code
26163       ,p_event_class_code           => l_event_class_code);
26164    --
26165    -- set accounting class
26166    --
26167    xla_ae_lines_pkg.SetAcctClass(
26168            p_accounting_class_code  => 'REQUISITION'
26169          , p_ae_header_id           => l_ae_header_id
26170          );
26171 
26172    --
26173    -- set rounding class
26174    --
26175    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26176                       'REQUISITION';
26177 
26178    --
26179    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26180    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26181    --
26182    -- bulk performance
26183    --
26184    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26185 
26186    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26187       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26188 
26189    -- 4955764
26190    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26191       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26192 
26193    -- 4458381 Public Sector Enh
26194    
26195    --
26196    -- set accounting attributes for the line type
26197    --
26198    l_entered_amt_idx := 23;
26199    l_accted_amt_idx  := 25;
26200    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26201    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26202    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
26203    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
26204    l_rec_acct_attrs.array_num_value(2)  := 
26205 xla_ae_sources_pkg.GetSystemSourceNum(
26206    p_source_code           => 'XLA_EVENT_APPL_ID'
26207  , p_source_type_code      => 'Y'
26208  , p_source_application_id =>  602
26209 );
26210    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
26211    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
26212    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
26213    l_rec_acct_attrs.array_char_value(4)  := 
26214 xla_ae_sources_pkg.GetSystemSourceChar(
26215    p_source_code           => 'XLA_ENTITY_CODE'
26216  , p_source_type_code      => 'Y'
26217  , p_source_application_id =>  602
26218 );
26219    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
26220    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
26221    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
26222    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
26223    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
26224    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
26225    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
26226    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
26227    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
26228    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
26229    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
26230    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
26231    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
26232    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
26233    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
26234    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
26235    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
26236    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
26237    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
26238    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
26239    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
26240    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
26241    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
26242    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
26243    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
26244    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
26245    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
26246    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
26247    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
26248    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
26249    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
26250    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
26251    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
26252    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
26253    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
26254    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
26255    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
26256    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
26257    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
26258    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
26259    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
26260    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
26261    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
26262    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
26263    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
26264    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
26265    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
26266    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
26267    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
26268    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_29);
26269    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
26270    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
26271    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
26272    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
26273 
26274    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26275    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26276 
26277    ---------------------------------------------------------------------------------------------------------------
26278    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26279    ---------------------------------------------------------------------------------------------------------------
26280    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26281 
26282    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26283    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26284 
26285    IF xla_accounting_cache_pkg.GetValueChar
26286          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26287          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26288    AND l_bflow_method_code = 'PRIOR_ENTRY'
26289 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26290    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26291          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26292        )
26293    THEN
26294          xla_ae_lines_pkg.BflowUpgEntry
26295            (p_business_method_code    => l_bflow_method_code
26296            ,p_business_class_code     => l_bflow_class_code
26297            ,p_balance_type            => l_balance_type_code);
26298    ELSE
26299       NULL;
26300 XLA_AE_LINES_PKG.business_flow_validation(
26301                                 p_business_method_code     => l_bflow_method_code
26302                                ,p_business_class_code      => l_bflow_class_code
26303                                ,p_inherit_description_flag => l_inherit_desc_flag);
26304    END IF;
26305 
26306    --
26307    -- call analytical criteria
26308    --
26309    -- Inherited Analytical Criteria for business flow method of Prior Entry.
26310    --
26311    -- call description
26312    --
26313    -- No description or it is inherited.
26314    --
26315    -- call ADRs
26316    -- Bug 4922099
26317    --
26318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26319         (NVL(l_actual_upg_option, 'N') = 'O') OR
26320         (NVL(l_enc_upg_option, 'N') = 'O')
26321       )
26322    THEN
26323    NULL;
26324    --
26325    --
26326    
26327    --
26328    --
26329    END IF;
26330    --
26331    -- Bug 4922099
26332    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26333           (NVL(l_enc_upg_option, 'N') = 'O')
26334         ) AND
26335         (l_bflow_method_code = 'PRIOR_ENTRY')
26336       )
26337    THEN
26338       IF
26339       --
26340       1 = 1
26341       --
26342       THEN
26343       xla_accounting_err_pkg.build_message
26344                                     (p_appli_s_name            => 'XLA'
26345                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26346                                     ,p_token_1                 => 'LINE_NUMBER'
26347                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26348                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26349                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26350                                                                              l_component_type
26351                                                                             ,l_component_code
26352                                                                             ,l_component_type_code
26353                                                                             ,l_component_appl_id
26354                                                                             ,l_amb_context_code
26355                                                                             ,l_entity_code
26356                                                                             ,l_event_class_code
26357                                                                            )
26358                                     ,p_token_3                 => 'OWNER'
26359                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26360                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26361                                                                           ,p_lookup_code    => l_component_type_code
26362                                                                          )
26363                                     ,p_token_4                 => 'PRODUCT_NAME'
26364                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26365                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26366                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26367                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26368                                     ,p_ae_header_id            =>  NULL
26369                                        );
26370 
26371         IF (C_LEVEL_ERROR>= g_log_level) THEN
26372                  trace
26373                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26374                       ,p_level    => C_LEVEL_ERROR
26375                       ,p_module   => l_log_module);
26376         END IF;
26377       END IF;
26378    END IF;
26379    --
26380    --
26381    ------------------------------------------------------------------------------------------------
26382    -- 4219869 Business Flow
26383    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26384    -- Prior Entry.  Currently, the following code is always generated.
26385    ------------------------------------------------------------------------------------------------
26386    -- No ValidateCurrentLine for business flow method of Prior Entry
26387 
26388    ------------------------------------------------------------------------------------
26389    -- 4219869 Business Flow
26390    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26391    ------------------------------------------------------------------------------------
26392    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26393 
26394    ----------------------------------------------------------------------------------
26395    -- 4219869 Business Flow
26396    -- Update journal entry status -- Need to generate this within IF <condition>
26397    ----------------------------------------------------------------------------------
26398    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26399          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26400          ,p_balance_type_code => l_balance_type_code
26401          );
26402 
26403    -------------------------------------------------------------------------------------------
26404    -- 4262811 - Generate the Accrual Reversal lines
26405    -------------------------------------------------------------------------------------------
26406    BEGIN
26407       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26408                               (g_array_event(p_event_id).array_value_num('header_index'));
26409       IF l_acc_rev_flag IS NULL THEN
26410          l_acc_rev_flag := 'N';
26411       END IF;
26412    EXCEPTION
26413       WHEN OTHERS THEN
26414          l_acc_rev_flag := 'N';
26415    END;
26416    --
26417    IF (l_acc_rev_flag = 'Y') THEN
26418 
26419        -- 4645092  ------------------------------------------------------------------------------
26420        -- To allow MPA report to determine if it should generate report process
26421        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26422        ------------------------------------------------------------------------------------------
26423 
26424        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26425        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26426 
26427        --
26428        -- Update the line information that should be overwritten
26429        --
26430        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26431                                          p_header_num   => 1);
26432        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26433 
26434        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26435 
26436        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26437           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26438        END IF;
26439 
26440       --
26441       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26442       --
26443       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26444           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26445       ELSE
26446           ---------------------------------------------------------------------------------------------------
26447           -- 4262811a Switch Sign
26448           ---------------------------------------------------------------------------------------------------
26449           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26450           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26451                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26452           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26453                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26454           -- 5132302
26455           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26456                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26457 
26458       END IF;
26459 
26460       -- 4955764
26461       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26462       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26463 
26464 
26465       XLA_AE_LINES_PKG.ValidateCurrentLine;
26466       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26467 
26468       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26469                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26470                ,p_balance_type_code => l_balance_type_code);
26471 
26472    END IF;
26473 
26474    -----------------------------------------------------------------------------------------
26475    -- 4262811 Multiperiod Accounting
26476    -----------------------------------------------------------------------------------------
26477      -- No MPA option is assigned.
26478 
26479 
26480 END IF;
26481 END IF;
26482 --
26483 
26484 --
26485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26486    trace
26487       (p_msg      => 'END of AcctLineType_49'
26488       ,p_level    => C_LEVEL_PROCEDURE
26489       ,p_module   => l_log_module);
26490 END IF;
26491 --
26492 EXCEPTION
26493   WHEN xla_exceptions_pkg.application_exception THEN
26494       RAISE;
26495   WHEN OTHERS THEN
26496        xla_exceptions_pkg.raise_message
26497            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_49');
26498 END AcctLineType_49;
26499 --
26500 
26501 ---------------------------------------
26502 --
26503 -- PRIVATE FUNCTION
26504 --         AcctLineType_50
26505 --
26506 ---------------------------------------
26507 PROCEDURE AcctLineType_50 (
26508   p_application_id        IN NUMBER
26509  ,p_event_id              IN NUMBER
26510  ,p_calculate_acctd_flag  IN VARCHAR2
26511  ,p_calculate_g_l_flag    IN VARCHAR2
26512  ,p_actual_flag           IN OUT VARCHAR2
26513  ,p_balance_type_code     OUT VARCHAR2
26514  ,p_gain_or_loss_ref      OUT VARCHAR2
26515  
26516 --Budget Account
26517  , p_source_11            IN NUMBER
26518 --Main Or Backing Code
26519  , p_source_13            IN VARCHAR2
26520 --Accounting Reversal Flag
26521  , p_source_16            IN VARCHAR2
26522 --PO Distribution Identifier
26523  , p_source_29            IN NUMBER
26524 --Entered Amount
26525  , p_source_33            IN NUMBER
26526 --Currency Code
26527  , p_source_34            IN VARCHAR2
26528 --Accounted Amount
26529  , p_source_35            IN NUMBER
26530 --Allocated to Main Document Distribution Type
26531  , p_source_49            IN VARCHAR2
26532 --Allocated to Main Document Distribution Identifier
26533  , p_source_51            IN NUMBER
26534 --Applied To Application Identifier
26535  , p_source_53            IN NUMBER
26536 --Applied To Distribution Link Type
26537  , p_source_54            IN VARCHAR2
26538 --Applied To Entity Code
26539  , p_source_55            IN VARCHAR2
26540 --Applied To Distribution Identifier 1
26541  , p_source_56            IN NUMBER
26542 --Applied To Header Identifier 1
26543  , p_source_57            IN NUMBER
26544 --Distribution Link Type
26545  , p_source_58            IN VARCHAR2
26546 --PO Encumbrance Upgrade Option
26547  , p_source_59            IN VARCHAR2
26548 --JFMIP Reference
26549  , p_source_60            IN VARCHAR2
26550 --PO Upgrade Encumbrance Type Identifier
26551  , p_source_61            IN NUMBER
26552 --PO Release Identifier
26553  , p_source_66            IN NUMBER
26554 )
26555 IS
26556 
26557 l_component_type              VARCHAR2(80);
26558 l_component_code              VARCHAR2(30);
26559 l_component_type_code         VARCHAR2(1);
26560 l_component_appl_id           INTEGER;
26561 l_amb_context_code            VARCHAR2(30);
26562 l_entity_code                 VARCHAR2(30);
26563 l_event_class_code            VARCHAR2(30);
26564 l_ae_header_id                NUMBER;
26565 l_event_type_code             VARCHAR2(30);
26566 l_line_definition_code        VARCHAR2(30);
26567 l_line_definition_owner_code  VARCHAR2(1);
26568 --
26569 -- adr variables
26570 l_segment                     VARCHAR2(30);
26571 l_ccid                        NUMBER;
26572 l_adr_transaction_coa_id      NUMBER;
26573 l_adr_accounting_coa_id       NUMBER;
26574 l_adr_flexfield_segment_code  VARCHAR2(30);
26575 l_adr_flex_value_set_id       NUMBER;
26576 l_adr_value_type_code         VARCHAR2(30);
26577 l_adr_value_combination_id    NUMBER;
26578 l_adr_value_segment_code      VARCHAR2(30);
26579 
26580 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26581 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26582 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26583 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26584 
26585 -- 4262811 Variables ------------------------------------------------------------------------------------------
26586 l_entered_amt_idx             NUMBER;
26587 l_accted_amt_idx              NUMBER;
26588 l_acc_rev_flag                VARCHAR2(1);
26589 l_accrual_line_num            NUMBER;
26590 l_tmp_amt                     NUMBER;
26591 l_acc_rev_natural_side_code   VARCHAR2(1);
26592 
26593 l_num_entries                 NUMBER;
26594 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26595 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26596 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26597 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26598 l_recog_line_1                NUMBER;
26599 l_recog_line_2                NUMBER;
26600 
26601 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26602 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26603 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26604 
26605 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26606 
26607 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26608 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26609 
26610 ---------------------------------------------------------------------------------------------------------------
26611 
26612 
26613 --
26614 -- bulk performance
26615 --
26616 l_balance_type_code           VARCHAR2(1);
26617 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26618 l_log_module                  VARCHAR2(240);
26619 
26620 --
26621 -- Upgrade strategy
26622 --
26623 l_actual_upg_option           VARCHAR2(1);
26624 l_enc_upg_option           VARCHAR2(1);
26625 
26626 --
26627 BEGIN
26628 --
26629 IF g_log_enabled THEN
26630       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
26631 END IF;
26632 --
26633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26634 
26635       trace
26636          (p_msg      => 'BEGIN of AcctLineType_50'
26637          ,p_level    => C_LEVEL_PROCEDURE
26638          ,p_module   => l_log_module);
26639 
26640 END IF;
26641 --
26642 l_component_type             := 'AMB_JLT';
26643 l_component_code             := 'RELIEVE_REQ_ENC_FROM_RELEASE';
26644 l_component_type_code        := 'S';
26645 l_component_appl_id          :=  201;
26646 l_amb_context_code           := 'DEFAULT';
26647 l_entity_code                := 'RELEASE';
26648 l_event_class_code           := 'RELEASE';
26649 l_event_type_code            := 'RELEASE_ALL';
26650 l_line_definition_owner_code := 'S';
26651 l_line_definition_code       := 'RELEASE_ENC_ALL';
26652 --
26653 l_balance_type_code          := 'E';
26654 l_segment                     := NULL;
26655 l_ccid                        := NULL;
26656 l_adr_transaction_coa_id      := NULL;
26657 l_adr_accounting_coa_id       := NULL;
26658 l_adr_flexfield_segment_code  := NULL;
26659 l_adr_flex_value_set_id       := NULL;
26660 l_adr_value_type_code         := NULL;
26661 l_adr_value_combination_id    := NULL;
26662 l_adr_value_segment_code      := NULL;
26663 
26664 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
26665 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
26666 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
26667 l_budgetary_control_flag     := 'Y';
26668 
26669 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26670 l_bflow_applied_to_amt       := NULL; -- 5132302
26671 l_entered_amt_idx            := NULL;          -- 4262811
26672 l_accted_amt_idx             := NULL;          -- 4262811
26673 l_acc_rev_flag               := NULL;          -- 4262811
26674 l_accrual_line_num           := NULL;          -- 4262811
26675 l_tmp_amt                    := NULL;          -- 4262811
26676 --
26677  
26678 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26679     l_balance_type_code <> 'B' THEN
26680 IF NVL(
26681 xla_ae_sources_pkg.GetSystemSourceChar(
26682    p_source_code           => 'XLA_EVENT_TYPE_CODE'
26683  , p_source_type_code      => 'Y'
26684  , p_source_application_id =>  602
26685 ),'
26686 ') =  'RELEASE_RESERVED' AND 
26687 NVL(p_source_13,'
26688 ') =  'B_REQ'
26689  THEN 
26690 
26691    --
26692    XLA_AE_LINES_PKG.SetNewLine;
26693 
26694    p_balance_type_code          := l_balance_type_code;
26695    -- set the flag so later we will know whether the gain loss line needs to be created
26696    
26697    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26698      p_actual_flag :='A';
26699    END IF;
26700 
26701    --
26702    -- bulk performance
26703    --
26704    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26705                                       p_header_num   => 0); -- 4262811
26706    --
26707    -- set accounting line options
26708    --
26709    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26710            p_natural_side_code          => 'C'
26711          , p_gain_or_loss_flag          => 'N'
26712          , p_gl_transfer_mode_code      => 'S'
26713          , p_acct_entry_type_code       => 'E'
26714          , p_switch_side_flag           => 'N'
26715          , p_merge_duplicate_code       => 'N'
26716          );
26717    --
26718    l_acc_rev_natural_side_code := 'D';  -- 4262811
26719    -- 
26720    --
26721    -- set accounting line type info
26722    --
26723    xla_ae_lines_pkg.SetAcctLineType
26724       (p_component_type             => l_component_type
26725       ,p_event_type_code            => l_event_type_code
26726       ,p_line_definition_owner_code => l_line_definition_owner_code
26727       ,p_line_definition_code       => l_line_definition_code
26728       ,p_accounting_line_code       => l_component_code
26729       ,p_accounting_line_type_code  => l_component_type_code
26730       ,p_accounting_line_appl_id    => l_component_appl_id
26731       ,p_amb_context_code           => l_amb_context_code
26732       ,p_entity_code                => l_entity_code
26733       ,p_event_class_code           => l_event_class_code);
26734    --
26735    -- set accounting class
26736    --
26737    xla_ae_lines_pkg.SetAcctClass(
26738            p_accounting_class_code  => 'PURCHASE_ORDER'
26739          , p_ae_header_id           => l_ae_header_id
26740          );
26741 
26742    --
26743    -- set rounding class
26744    --
26745    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26746                       'PURCHASE_ORDER';
26747 
26748    --
26749    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26750    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26751    --
26752    -- bulk performance
26753    --
26754    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26755 
26756    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26757       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26758 
26759    -- 4955764
26760    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26761       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26762 
26763    -- 4458381 Public Sector Enh
26764    
26765    --
26766    -- set accounting attributes for the line type
26767    --
26768    l_entered_amt_idx := 23;
26769    l_accted_amt_idx  := 25;
26770    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26771    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26772    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
26773    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
26774    l_rec_acct_attrs.array_num_value(2)  := 
26775 xla_ae_sources_pkg.GetSystemSourceNum(
26776    p_source_code           => 'XLA_EVENT_APPL_ID'
26777  , p_source_type_code      => 'Y'
26778  , p_source_application_id =>  602
26779 );
26780    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
26781    l_rec_acct_attrs.array_char_value(3)  := p_source_49;
26782    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
26783    l_rec_acct_attrs.array_char_value(4)  := 
26784 xla_ae_sources_pkg.GetSystemSourceChar(
26785    p_source_code           => 'XLA_ENTITY_CODE'
26786  , p_source_type_code      => 'Y'
26787  , p_source_application_id =>  602
26788 );
26789    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
26790    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
26791    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
26792    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
26793    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
26794    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
26795    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
26796    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
26797    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
26798    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
26799    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
26800    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
26801    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
26802    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
26803    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
26804    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
26805    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
26806    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
26807    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
26808    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
26809    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
26810    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
26811    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
26812    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
26813    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
26814    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
26815    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
26816    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
26817    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
26818    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
26819    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
26820    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
26821    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
26822    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
26823    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
26824    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
26825    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
26826    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
26827    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
26828    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
26829    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
26830    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
26831    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
26832    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
26833    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
26834    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
26835    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
26836    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
26837    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
26838    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
26839    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
26840    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
26841    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
26842    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
26843 
26844    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26845    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26846 
26847    ---------------------------------------------------------------------------------------------------------------
26848    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26849    ---------------------------------------------------------------------------------------------------------------
26850    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26851 
26852    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26853    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26854 
26855    IF xla_accounting_cache_pkg.GetValueChar
26856          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26857          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26858    AND l_bflow_method_code = 'PRIOR_ENTRY'
26859 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26860    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26861          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26862        )
26863    THEN
26864          xla_ae_lines_pkg.BflowUpgEntry
26865            (p_business_method_code    => l_bflow_method_code
26866            ,p_business_class_code     => l_bflow_class_code
26867            ,p_balance_type            => l_balance_type_code);
26868    ELSE
26869       NULL;
26870 XLA_AE_LINES_PKG.business_flow_validation(
26871                                 p_business_method_code     => l_bflow_method_code
26872                                ,p_business_class_code      => l_bflow_class_code
26873                                ,p_inherit_description_flag => l_inherit_desc_flag);
26874    END IF;
26875 
26876    --
26877    -- call analytical criteria
26878    --
26879    -- Inherited Analytical Criteria for business flow method of Prior Entry.
26880    --
26881    -- call description
26882    --
26883    -- No description or it is inherited.
26884    --
26885    -- call ADRs
26886    -- Bug 4922099
26887    --
26888    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26889         (NVL(l_actual_upg_option, 'N') = 'O') OR
26890         (NVL(l_enc_upg_option, 'N') = 'O')
26891       )
26892    THEN
26893    NULL;
26894    --
26895    --
26896    
26897    --
26898    --
26899    END IF;
26900    --
26901    -- Bug 4922099
26902    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26903           (NVL(l_enc_upg_option, 'N') = 'O')
26904         ) AND
26905         (l_bflow_method_code = 'PRIOR_ENTRY')
26906       )
26907    THEN
26908       IF
26909       --
26910       1 = 1
26911       --
26912       THEN
26913       xla_accounting_err_pkg.build_message
26914                                     (p_appli_s_name            => 'XLA'
26915                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26916                                     ,p_token_1                 => 'LINE_NUMBER'
26917                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26918                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26919                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26920                                                                              l_component_type
26921                                                                             ,l_component_code
26922                                                                             ,l_component_type_code
26923                                                                             ,l_component_appl_id
26924                                                                             ,l_amb_context_code
26925                                                                             ,l_entity_code
26926                                                                             ,l_event_class_code
26927                                                                            )
26928                                     ,p_token_3                 => 'OWNER'
26929                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26930                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26931                                                                           ,p_lookup_code    => l_component_type_code
26932                                                                          )
26933                                     ,p_token_4                 => 'PRODUCT_NAME'
26934                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26935                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26936                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26937                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26938                                     ,p_ae_header_id            =>  NULL
26939                                        );
26940 
26941         IF (C_LEVEL_ERROR>= g_log_level) THEN
26942                  trace
26943                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26944                       ,p_level    => C_LEVEL_ERROR
26945                       ,p_module   => l_log_module);
26946         END IF;
26947       END IF;
26948    END IF;
26949    --
26950    --
26951    ------------------------------------------------------------------------------------------------
26952    -- 4219869 Business Flow
26953    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26954    -- Prior Entry.  Currently, the following code is always generated.
26955    ------------------------------------------------------------------------------------------------
26956    -- No ValidateCurrentLine for business flow method of Prior Entry
26957 
26958    ------------------------------------------------------------------------------------
26959    -- 4219869 Business Flow
26960    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26961    ------------------------------------------------------------------------------------
26962    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26963 
26964    ----------------------------------------------------------------------------------
26965    -- 4219869 Business Flow
26966    -- Update journal entry status -- Need to generate this within IF <condition>
26967    ----------------------------------------------------------------------------------
26968    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26969          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26970          ,p_balance_type_code => l_balance_type_code
26971          );
26972 
26973    -------------------------------------------------------------------------------------------
26974    -- 4262811 - Generate the Accrual Reversal lines
26975    -------------------------------------------------------------------------------------------
26976    BEGIN
26977       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26978                               (g_array_event(p_event_id).array_value_num('header_index'));
26979       IF l_acc_rev_flag IS NULL THEN
26980          l_acc_rev_flag := 'N';
26981       END IF;
26982    EXCEPTION
26983       WHEN OTHERS THEN
26984          l_acc_rev_flag := 'N';
26985    END;
26986    --
26987    IF (l_acc_rev_flag = 'Y') THEN
26988 
26989        -- 4645092  ------------------------------------------------------------------------------
26990        -- To allow MPA report to determine if it should generate report process
26991        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26992        ------------------------------------------------------------------------------------------
26993 
26994        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26995        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26996 
26997        --
26998        -- Update the line information that should be overwritten
26999        --
27000        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27001                                          p_header_num   => 1);
27002        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27003 
27004        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27005 
27006        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27007           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27008        END IF;
27009 
27010       --
27011       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27012       --
27013       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27014           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27015       ELSE
27016           ---------------------------------------------------------------------------------------------------
27017           -- 4262811a Switch Sign
27018           ---------------------------------------------------------------------------------------------------
27019           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27020           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27021                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27022           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27023                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27024           -- 5132302
27025           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27026                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27027 
27028       END IF;
27029 
27030       -- 4955764
27031       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27032       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27033 
27034 
27035       XLA_AE_LINES_PKG.ValidateCurrentLine;
27036       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27037 
27038       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27039                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27040                ,p_balance_type_code => l_balance_type_code);
27041 
27042    END IF;
27043 
27044    -----------------------------------------------------------------------------------------
27045    -- 4262811 Multiperiod Accounting
27046    -----------------------------------------------------------------------------------------
27047      -- No MPA option is assigned.
27048 
27049 
27050 END IF;
27051 END IF;
27052 --
27053 
27054 --
27055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27056    trace
27057       (p_msg      => 'END of AcctLineType_50'
27058       ,p_level    => C_LEVEL_PROCEDURE
27059       ,p_module   => l_log_module);
27060 END IF;
27061 --
27062 EXCEPTION
27063   WHEN xla_exceptions_pkg.application_exception THEN
27064       RAISE;
27065   WHEN OTHERS THEN
27066        xla_exceptions_pkg.raise_message
27067            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_50');
27068 END AcctLineType_50;
27069 --
27070 
27071 ---------------------------------------
27072 --
27073 -- PRIVATE FUNCTION
27074 --         AcctLineType_51
27075 --
27076 ---------------------------------------
27077 PROCEDURE AcctLineType_51 (
27078   p_application_id        IN NUMBER
27079  ,p_event_id              IN NUMBER
27080  ,p_calculate_acctd_flag  IN VARCHAR2
27081  ,p_calculate_g_l_flag    IN VARCHAR2
27082  ,p_actual_flag           IN OUT VARCHAR2
27083  ,p_balance_type_code     OUT VARCHAR2
27084  ,p_gain_or_loss_ref      OUT VARCHAR2
27085  
27086 --Project Name
27087  , p_source_3            IN VARCHAR2
27088 --Task Name
27089  , p_source_4            IN VARCHAR2
27090 --Project Expenditure Organization Identifier
27091  , p_source_5            IN NUMBER
27092 --Expenditure Type
27093  , p_source_6            IN VARCHAR2
27094 --Document Type
27095  , p_source_9            IN VARCHAR2
27096 --Budget Account
27097  , p_source_11            IN NUMBER
27098 --Main Or Backing Code
27099  , p_source_13            IN VARCHAR2
27100 --Burden Record Identifier
27101  , p_source_14            IN VARCHAR2
27102  , p_source_14_meaning    IN VARCHAR2
27103 --Burden Amount Display Method
27104  , p_source_15            IN VARCHAR2
27105 --Accounting Reversal Flag
27106  , p_source_16            IN VARCHAR2
27107 --Allocated to Application Identifier
27108  , p_source_17            IN NUMBER
27109 --Allocated to Distribution Type
27110  , p_source_18            IN VARCHAR2
27111 --Allocated to Entity Code
27112  , p_source_19            IN VARCHAR2
27113 --Allocated to First Distribution Identifier
27114  , p_source_20            IN NUMBER
27115 --Allocated to First System Transaction Identifier
27116  , p_source_21            IN NUMBER
27117 --Purchase Order Burden Applied to Application Identifier
27118  , p_source_23            IN NUMBER
27119 --PO Distribution Type
27120  , p_source_24            IN VARCHAR2
27121 --Purchase Order Burden Applied to Entity Code
27122  , p_source_25            IN VARCHAR2
27123 --Purchase Order Burden Applied to First Distribution Identifier
27124  , p_source_26            IN NUMBER
27125 --Purchase Order Burden Applied to First System Transaction Identifier
27126  , p_source_27            IN NUMBER
27127 --Purchase Order Burden Applied to Second Distribution Identifier
27128  , p_source_28            IN VARCHAR2
27129 --PO Distribution Identifier
27130  , p_source_29            IN NUMBER
27131 --Line Type Name
27132  , p_source_30            IN VARCHAR2
27133 --Encumbrance Upgrade Credit Accounting Class
27134  , p_source_31            IN VARCHAR2
27135 --Encumbrance Upgrade Credit Account
27136  , p_source_32            IN NUMBER
27137 --Entered Amount
27138  , p_source_33            IN NUMBER
27139 --Currency Code
27140  , p_source_34            IN VARCHAR2
27141 --Accounted Amount
27142  , p_source_35            IN NUMBER
27143 --Encumbrance Upgrade Debit Accounting Class
27144  , p_source_36            IN VARCHAR2
27145 --Encumbrance Upgrade Debit Account
27146  , p_source_37            IN NUMBER
27147 --Use Encumbrances Upgrade Attributes Flag
27148  , p_source_38            IN VARCHAR2
27149 --Encumbrance Upgrade Credit Encumbrance Type
27150  , p_source_39            IN NUMBER
27151 --Encumbrance Upgrade Debit Encumbrance Type
27152  , p_source_40            IN NUMBER
27153 --Backing Requisition Prevent Encumbrance Flag Flipped
27154  , p_source_67            IN VARCHAR2
27155 )
27156 IS
27157 
27158 l_component_type              VARCHAR2(80);
27159 l_component_code              VARCHAR2(30);
27160 l_component_type_code         VARCHAR2(1);
27161 l_component_appl_id           INTEGER;
27162 l_amb_context_code            VARCHAR2(30);
27163 l_entity_code                 VARCHAR2(30);
27164 l_event_class_code            VARCHAR2(30);
27165 l_ae_header_id                NUMBER;
27166 l_event_type_code             VARCHAR2(30);
27167 l_line_definition_code        VARCHAR2(30);
27168 l_line_definition_owner_code  VARCHAR2(1);
27169 --
27170 -- adr variables
27171 l_segment                     VARCHAR2(30);
27172 l_ccid                        NUMBER;
27173 l_adr_transaction_coa_id      NUMBER;
27174 l_adr_accounting_coa_id       NUMBER;
27175 l_adr_flexfield_segment_code  VARCHAR2(30);
27176 l_adr_flex_value_set_id       NUMBER;
27177 l_adr_value_type_code         VARCHAR2(30);
27178 l_adr_value_combination_id    NUMBER;
27179 l_adr_value_segment_code      VARCHAR2(30);
27180 
27181 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27182 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27183 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27184 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27185 
27186 -- 4262811 Variables ------------------------------------------------------------------------------------------
27187 l_entered_amt_idx             NUMBER;
27188 l_accted_amt_idx              NUMBER;
27189 l_acc_rev_flag                VARCHAR2(1);
27190 l_accrual_line_num            NUMBER;
27191 l_tmp_amt                     NUMBER;
27192 l_acc_rev_natural_side_code   VARCHAR2(1);
27193 
27194 l_num_entries                 NUMBER;
27195 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27196 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27197 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27198 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27199 l_recog_line_1                NUMBER;
27200 l_recog_line_2                NUMBER;
27201 
27202 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27203 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27204 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27205 
27206 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27207 
27208 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27209 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27210 
27211 ---------------------------------------------------------------------------------------------------------------
27212 
27213 
27214 --
27215 -- bulk performance
27216 --
27217 l_balance_type_code           VARCHAR2(1);
27218 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27219 l_log_module                  VARCHAR2(240);
27220 
27221 --
27222 -- Upgrade strategy
27223 --
27224 l_actual_upg_option           VARCHAR2(1);
27225 l_enc_upg_option           VARCHAR2(1);
27226 
27227 --
27228 BEGIN
27229 --
27230 IF g_log_enabled THEN
27231       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
27232 END IF;
27233 --
27234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27235 
27236       trace
27237          (p_msg      => 'BEGIN of AcctLineType_51'
27238          ,p_level    => C_LEVEL_PROCEDURE
27239          ,p_module   => l_log_module);
27240 
27241 END IF;
27242 --
27243 l_component_type             := 'AMB_JLT';
27244 l_component_code             := 'RELIEVE_UNENC_BURDEND_REQFORPO';
27245 l_component_type_code        := 'S';
27246 l_component_appl_id          :=  201;
27247 l_amb_context_code           := 'DEFAULT';
27248 l_entity_code                := 'PURCHASE_ORDER';
27249 l_event_class_code           := 'PO_BURDEN';
27250 l_event_type_code            := 'PO_BURDEN_ALL';
27251 l_line_definition_owner_code := 'S';
27252 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
27253 --
27254 l_balance_type_code          := 'E';
27255 l_segment                     := NULL;
27256 l_ccid                        := NULL;
27257 l_adr_transaction_coa_id      := NULL;
27258 l_adr_accounting_coa_id       := NULL;
27259 l_adr_flexfield_segment_code  := NULL;
27260 l_adr_flex_value_set_id       := NULL;
27261 l_adr_value_type_code         := NULL;
27262 l_adr_value_combination_id    := NULL;
27263 l_adr_value_segment_code      := NULL;
27264 
27265 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27266 l_bflow_class_code           := '';    -- 4219869 Business Flow
27267 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27268 l_budgetary_control_flag     := 'Y';
27269 
27270 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27271 l_bflow_applied_to_amt       := NULL; -- 5132302
27272 l_entered_amt_idx            := NULL;          -- 4262811
27273 l_accted_amt_idx             := NULL;          -- 4262811
27274 l_acc_rev_flag               := NULL;          -- 4262811
27275 l_accrual_line_num           := NULL;          -- 4262811
27276 l_tmp_amt                    := NULL;          -- 4262811
27277 --
27278  
27279 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27280     l_balance_type_code <> 'B' THEN
27281 IF NVL(
27282 xla_ae_sources_pkg.GetSystemSourceChar(
27283    p_source_code           => 'XLA_EVENT_TYPE_CODE'
27284  , p_source_type_code      => 'Y'
27285  , p_source_application_id =>  602
27286 ),'
27287 ') =  'PO_BURDEN_RESERVED' AND 
27288 NVL(p_source_13,'
27289 ') =  'B_REQ' AND 
27290 (NVL(p_source_14,'
27291 ') =  'N' OR 
27292 NVL(p_source_14,'
27293 ') =  'O') AND 
27294 NVL(p_source_9,'
27295 ') =  'REQ' AND 
27296 NVL(p_source_15,'
27297 ') =  'S' AND 
27298 NVL(p_source_67,'
27299 ') =  'Y'
27300  THEN 
27301 
27302    --
27303    XLA_AE_LINES_PKG.SetNewLine;
27304 
27305    p_balance_type_code          := l_balance_type_code;
27306    -- set the flag so later we will know whether the gain loss line needs to be created
27307    
27308    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27309      p_actual_flag :='A';
27310    END IF;
27311 
27312    --
27313    -- bulk performance
27314    --
27315    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27316                                       p_header_num   => 0); -- 4262811
27317    --
27318    -- set accounting line options
27319    --
27320    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27321            p_natural_side_code          => 'C'
27322          , p_gain_or_loss_flag          => 'N'
27323          , p_gl_transfer_mode_code      => 'S'
27324          , p_acct_entry_type_code       => 'E'
27325          , p_switch_side_flag           => 'N'
27326          , p_merge_duplicate_code       => 'N'
27327          );
27328    --
27329    l_acc_rev_natural_side_code := 'D';  -- 4262811
27330    -- 
27331    --
27332    -- set accounting line type info
27333    --
27334    xla_ae_lines_pkg.SetAcctLineType
27335       (p_component_type             => l_component_type
27336       ,p_event_type_code            => l_event_type_code
27337       ,p_line_definition_owner_code => l_line_definition_owner_code
27338       ,p_line_definition_code       => l_line_definition_code
27339       ,p_accounting_line_code       => l_component_code
27340       ,p_accounting_line_type_code  => l_component_type_code
27341       ,p_accounting_line_appl_id    => l_component_appl_id
27342       ,p_amb_context_code           => l_amb_context_code
27343       ,p_entity_code                => l_entity_code
27344       ,p_event_class_code           => l_event_class_code);
27345    --
27346    -- set accounting class
27347    --
27348    xla_ae_lines_pkg.SetAcctClass(
27349            p_accounting_class_code  => 'REQ_PA_BURDENED'
27350          , p_ae_header_id           => l_ae_header_id
27351          );
27352 
27353    --
27354    -- set rounding class
27355    --
27356    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27357                       'REQ_PA_BURDENED';
27358 
27359    --
27360    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27361    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27362    --
27363    -- bulk performance
27364    --
27365    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27366 
27367    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27368       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27369 
27370    -- 4955764
27371    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27373 
27374    -- 4458381 Public Sector Enh
27375       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
27376    --
27377    -- set accounting attributes for the line type
27378    --
27379    l_entered_amt_idx := 27;
27380    l_accted_amt_idx  := 29;
27381    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27382    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27383    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
27384    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
27385    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
27386    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
27387    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
27388    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
27389    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
27390    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
27391    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
27392    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
27393    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
27394    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
27395    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
27396    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
27397    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
27398    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
27399    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
27400    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
27401    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
27402    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
27403    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
27404    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
27405    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
27406    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
27407    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
27408    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
27409    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
27410    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
27411    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
27412    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
27413    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
27414    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
27415    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
27416    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
27417    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
27418    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
27419    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
27420    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
27421    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
27422    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
27423    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
27424    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
27425    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
27426    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
27427    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
27428    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
27429    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
27430    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
27431    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
27432    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
27433    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
27434    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
27435    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
27436    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
27437    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
27438    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
27439    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
27440    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
27441    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
27442    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
27443    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
27444    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
27445    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
27446    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
27447    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
27448    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
27449    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
27450 
27451    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27452    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27453 
27454    ---------------------------------------------------------------------------------------------------------------
27455    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27456    ---------------------------------------------------------------------------------------------------------------
27457    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27458 
27459    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27460    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27461 
27462    IF xla_accounting_cache_pkg.GetValueChar
27463          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27464          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27465    AND l_bflow_method_code = 'PRIOR_ENTRY'
27466 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27467    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27468          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27469        )
27470    THEN
27471          xla_ae_lines_pkg.BflowUpgEntry
27472            (p_business_method_code    => l_bflow_method_code
27473            ,p_business_class_code     => l_bflow_class_code
27474            ,p_balance_type            => l_balance_type_code);
27475    ELSE
27476       NULL;
27477 -- No business flow processing for business flow method of NONE.
27478    END IF;
27479 
27480    --
27481    -- call analytical criteria
27482    --
27483    
27484    --
27485    -- call description
27486    --
27487    
27488 xla_ae_lines_pkg.SetLineDescription(
27489    p_ae_header_id => l_ae_header_id
27490   ,p_description  => Description_2 (
27491      p_application_id         => p_application_id
27492    , p_ae_header_id           => l_ae_header_id 
27493 , p_source_3 => p_source_3
27494 , p_source_4 => p_source_4
27495 , p_source_5 => p_source_5
27496 , p_source_6 => p_source_6
27497    )
27498 );
27499 
27500 
27501    --
27502    -- call ADRs
27503    -- Bug 4922099
27504    --
27505    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27506         (NVL(l_actual_upg_option, 'N') = 'O') OR
27507         (NVL(l_enc_upg_option, 'N') = 'O')
27508       )
27509    THEN
27510    NULL;
27511    --
27512    --
27513    
27514   l_ccid := AcctDerRule_6(
27515            p_application_id           => p_application_id
27516          , p_ae_header_id             => l_ae_header_id 
27517 , p_source_11 => p_source_11
27518          , x_transaction_coa_id       => l_adr_transaction_coa_id
27519          , x_accounting_coa_id        => l_adr_accounting_coa_id
27520          , x_value_type_code          => l_adr_value_type_code
27521          , p_side                     => 'NA'
27522    );
27523 
27524    xla_ae_lines_pkg.set_ccid(
27525     p_code_combination_id          => l_ccid
27526   , p_value_type_code              => l_adr_value_type_code
27527   , p_transaction_coa_id           => l_adr_transaction_coa_id
27528   , p_accounting_coa_id            => l_adr_accounting_coa_id
27529   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
27530   , p_adr_type_code                => 'S'
27531   , p_component_type               => l_component_type
27532   , p_component_code               => l_component_code
27533   , p_component_type_code          => l_component_type_code
27534   , p_component_appl_id            => l_component_appl_id
27535   , p_amb_context_code             => l_amb_context_code
27536   , p_side                         => 'NA'
27537   );
27538 
27539 
27540    --
27541    --
27542    END IF;
27543    --
27544    -- Bug 4922099
27545    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27546           (NVL(l_enc_upg_option, 'N') = 'O')
27547         ) AND
27548         (l_bflow_method_code = 'PRIOR_ENTRY')
27549       )
27550    THEN
27551       IF
27552       --
27553       1 = 2
27554       --
27555       THEN
27556       xla_accounting_err_pkg.build_message
27557                                     (p_appli_s_name            => 'XLA'
27558                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27559                                     ,p_token_1                 => 'LINE_NUMBER'
27560                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27561                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27562                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27563                                                                              l_component_type
27564                                                                             ,l_component_code
27565                                                                             ,l_component_type_code
27566                                                                             ,l_component_appl_id
27567                                                                             ,l_amb_context_code
27568                                                                             ,l_entity_code
27569                                                                             ,l_event_class_code
27570                                                                            )
27571                                     ,p_token_3                 => 'OWNER'
27572                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27573                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27574                                                                           ,p_lookup_code    => l_component_type_code
27575                                                                          )
27576                                     ,p_token_4                 => 'PRODUCT_NAME'
27577                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27578                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27579                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27580                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27581                                     ,p_ae_header_id            =>  NULL
27582                                        );
27583 
27584         IF (C_LEVEL_ERROR>= g_log_level) THEN
27585                  trace
27586                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27587                       ,p_level    => C_LEVEL_ERROR
27588                       ,p_module   => l_log_module);
27589         END IF;
27590       END IF;
27591    END IF;
27592    --
27593    --
27594    ------------------------------------------------------------------------------------------------
27595    -- 4219869 Business Flow
27596    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27597    -- Prior Entry.  Currently, the following code is always generated.
27598    ------------------------------------------------------------------------------------------------
27599    XLA_AE_LINES_PKG.ValidateCurrentLine;
27600 
27601    ------------------------------------------------------------------------------------
27602    -- 4219869 Business Flow
27603    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27604    ------------------------------------------------------------------------------------
27605    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27606 
27607    ----------------------------------------------------------------------------------
27608    -- 4219869 Business Flow
27609    -- Update journal entry status -- Need to generate this within IF <condition>
27610    ----------------------------------------------------------------------------------
27611    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27612          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27613          ,p_balance_type_code => l_balance_type_code
27614          );
27615 
27616    -------------------------------------------------------------------------------------------
27617    -- 4262811 - Generate the Accrual Reversal lines
27618    -------------------------------------------------------------------------------------------
27619    BEGIN
27620       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27621                               (g_array_event(p_event_id).array_value_num('header_index'));
27622       IF l_acc_rev_flag IS NULL THEN
27623          l_acc_rev_flag := 'N';
27624       END IF;
27625    EXCEPTION
27626       WHEN OTHERS THEN
27627          l_acc_rev_flag := 'N';
27628    END;
27629    --
27630    IF (l_acc_rev_flag = 'Y') THEN
27631 
27632        -- 4645092  ------------------------------------------------------------------------------
27633        -- To allow MPA report to determine if it should generate report process
27634        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27635        ------------------------------------------------------------------------------------------
27636 
27637        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27638        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27639 
27640        --
27641        -- Update the line information that should be overwritten
27642        --
27643        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27644                                          p_header_num   => 1);
27645        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27646 
27647        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27648 
27649        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27650           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27651        END IF;
27652 
27653       --
27654       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27655       --
27656       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27657           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27658       ELSE
27659           ---------------------------------------------------------------------------------------------------
27660           -- 4262811a Switch Sign
27661           ---------------------------------------------------------------------------------------------------
27662           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27663           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27664                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27665           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27666                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27667           -- 5132302
27668           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27669                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27670 
27671       END IF;
27672 
27673       -- 4955764
27674       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27675       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27676 
27677 
27678       XLA_AE_LINES_PKG.ValidateCurrentLine;
27679       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27680 
27681       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27682                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27683                ,p_balance_type_code => l_balance_type_code);
27684 
27685    END IF;
27686 
27687    -----------------------------------------------------------------------------------------
27688    -- 4262811 Multiperiod Accounting
27689    -----------------------------------------------------------------------------------------
27690      -- No MPA option is assigned.
27691 
27692 
27693 END IF;
27694 END IF;
27695 --
27696 
27697 --
27698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27699    trace
27700       (p_msg      => 'END of AcctLineType_51'
27701       ,p_level    => C_LEVEL_PROCEDURE
27702       ,p_module   => l_log_module);
27703 END IF;
27704 --
27705 EXCEPTION
27706   WHEN xla_exceptions_pkg.application_exception THEN
27707       RAISE;
27708   WHEN OTHERS THEN
27709        xla_exceptions_pkg.raise_message
27710            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_51');
27711 END AcctLineType_51;
27712 --
27713 
27714 ---------------------------------------
27715 --
27716 -- PRIVATE FUNCTION
27717 --         AcctLineType_52
27718 --
27719 ---------------------------------------
27720 PROCEDURE AcctLineType_52 (
27721   p_application_id        IN NUMBER
27722  ,p_event_id              IN NUMBER
27723  ,p_calculate_acctd_flag  IN VARCHAR2
27724  ,p_calculate_g_l_flag    IN VARCHAR2
27725  ,p_actual_flag           IN OUT VARCHAR2
27726  ,p_balance_type_code     OUT VARCHAR2
27727  ,p_gain_or_loss_ref      OUT VARCHAR2
27728  
27729 --Project Name
27730  , p_source_3            IN VARCHAR2
27731 --Task Name
27732  , p_source_4            IN VARCHAR2
27733 --Project Expenditure Organization Identifier
27734  , p_source_5            IN NUMBER
27735 --Expenditure Type
27736  , p_source_6            IN VARCHAR2
27737 --Document Type
27738  , p_source_9            IN VARCHAR2
27739 --Budget Account
27740  , p_source_11            IN NUMBER
27741 --Main Or Backing Code
27742  , p_source_13            IN VARCHAR2
27743 --Burden Record Identifier
27744  , p_source_14            IN VARCHAR2
27745  , p_source_14_meaning    IN VARCHAR2
27746 --Burden Amount Display Method
27747  , p_source_15            IN VARCHAR2
27748 --Accounting Reversal Flag
27749  , p_source_16            IN VARCHAR2
27750 --Allocated to Application Identifier
27751  , p_source_17            IN NUMBER
27752 --Allocated to Distribution Type
27753  , p_source_18            IN VARCHAR2
27754 --Allocated to Entity Code
27755  , p_source_19            IN VARCHAR2
27756 --Allocated to First Distribution Identifier
27757  , p_source_20            IN NUMBER
27758 --Allocated to First System Transaction Identifier
27759  , p_source_21            IN NUMBER
27760 --Purchase Order Burden Applied to Application Identifier
27761  , p_source_23            IN NUMBER
27762 --PO Distribution Type
27763  , p_source_24            IN VARCHAR2
27764 --Purchase Order Burden Applied to Entity Code
27765  , p_source_25            IN VARCHAR2
27766 --Purchase Order Burden Applied to First Distribution Identifier
27767  , p_source_26            IN NUMBER
27768 --Purchase Order Burden Applied to First System Transaction Identifier
27769  , p_source_27            IN NUMBER
27770 --Purchase Order Burden Applied to Second Distribution Identifier
27771  , p_source_28            IN VARCHAR2
27772 --PO Distribution Identifier
27773  , p_source_29            IN NUMBER
27774 --Line Type Name
27775  , p_source_30            IN VARCHAR2
27776 --Encumbrance Upgrade Credit Accounting Class
27777  , p_source_31            IN VARCHAR2
27778 --Encumbrance Upgrade Credit Account
27779  , p_source_32            IN NUMBER
27780 --Entered Amount
27781  , p_source_33            IN NUMBER
27782 --Currency Code
27783  , p_source_34            IN VARCHAR2
27784 --Accounted Amount
27785  , p_source_35            IN NUMBER
27786 --Encumbrance Upgrade Debit Accounting Class
27787  , p_source_36            IN VARCHAR2
27788 --Encumbrance Upgrade Debit Account
27789  , p_source_37            IN NUMBER
27790 --Use Encumbrances Upgrade Attributes Flag
27791  , p_source_38            IN VARCHAR2
27792 --Encumbrance Upgrade Credit Encumbrance Type
27793  , p_source_39            IN NUMBER
27794 --Encumbrance Upgrade Debit Encumbrance Type
27795  , p_source_40            IN NUMBER
27796 --Backing Requisition Prevent Encumbrance Flag Flipped
27797  , p_source_67            IN VARCHAR2
27798 )
27799 IS
27800 
27801 l_component_type              VARCHAR2(80);
27802 l_component_code              VARCHAR2(30);
27803 l_component_type_code         VARCHAR2(1);
27804 l_component_appl_id           INTEGER;
27805 l_amb_context_code            VARCHAR2(30);
27806 l_entity_code                 VARCHAR2(30);
27807 l_event_class_code            VARCHAR2(30);
27808 l_ae_header_id                NUMBER;
27809 l_event_type_code             VARCHAR2(30);
27810 l_line_definition_code        VARCHAR2(30);
27811 l_line_definition_owner_code  VARCHAR2(1);
27812 --
27813 -- adr variables
27814 l_segment                     VARCHAR2(30);
27815 l_ccid                        NUMBER;
27816 l_adr_transaction_coa_id      NUMBER;
27817 l_adr_accounting_coa_id       NUMBER;
27818 l_adr_flexfield_segment_code  VARCHAR2(30);
27819 l_adr_flex_value_set_id       NUMBER;
27820 l_adr_value_type_code         VARCHAR2(30);
27821 l_adr_value_combination_id    NUMBER;
27822 l_adr_value_segment_code      VARCHAR2(30);
27823 
27824 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27825 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27826 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27827 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27828 
27829 -- 4262811 Variables ------------------------------------------------------------------------------------------
27830 l_entered_amt_idx             NUMBER;
27831 l_accted_amt_idx              NUMBER;
27832 l_acc_rev_flag                VARCHAR2(1);
27833 l_accrual_line_num            NUMBER;
27834 l_tmp_amt                     NUMBER;
27835 l_acc_rev_natural_side_code   VARCHAR2(1);
27836 
27837 l_num_entries                 NUMBER;
27838 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27839 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27840 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27841 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27842 l_recog_line_1                NUMBER;
27843 l_recog_line_2                NUMBER;
27844 
27845 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27846 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27847 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27848 
27849 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27850 
27851 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27852 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27853 
27854 ---------------------------------------------------------------------------------------------------------------
27855 
27856 
27857 --
27858 -- bulk performance
27859 --
27860 l_balance_type_code           VARCHAR2(1);
27861 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27862 l_log_module                  VARCHAR2(240);
27863 
27864 --
27865 -- Upgrade strategy
27866 --
27867 l_actual_upg_option           VARCHAR2(1);
27868 l_enc_upg_option           VARCHAR2(1);
27869 
27870 --
27871 BEGIN
27872 --
27873 IF g_log_enabled THEN
27874       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
27875 END IF;
27876 --
27877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27878 
27879       trace
27880          (p_msg      => 'BEGIN of AcctLineType_52'
27881          ,p_level    => C_LEVEL_PROCEDURE
27882          ,p_module   => l_log_module);
27883 
27884 END IF;
27885 --
27886 l_component_type             := 'AMB_JLT';
27887 l_component_code             := 'RELIEVE_UNENC_BURDEN_REQFORPO';
27888 l_component_type_code        := 'S';
27889 l_component_appl_id          :=  201;
27890 l_amb_context_code           := 'DEFAULT';
27891 l_entity_code                := 'PURCHASE_ORDER';
27892 l_event_class_code           := 'PO_BURDEN';
27893 l_event_type_code            := 'PO_BURDEN_ALL';
27894 l_line_definition_owner_code := 'S';
27895 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
27896 --
27897 l_balance_type_code          := 'E';
27898 l_segment                     := NULL;
27899 l_ccid                        := NULL;
27900 l_adr_transaction_coa_id      := NULL;
27901 l_adr_accounting_coa_id       := NULL;
27902 l_adr_flexfield_segment_code  := NULL;
27903 l_adr_flex_value_set_id       := NULL;
27904 l_adr_value_type_code         := NULL;
27905 l_adr_value_combination_id    := NULL;
27906 l_adr_value_segment_code      := NULL;
27907 
27908 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27909 l_bflow_class_code           := '';    -- 4219869 Business Flow
27910 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27911 l_budgetary_control_flag     := 'Y';
27912 
27913 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27914 l_bflow_applied_to_amt       := NULL; -- 5132302
27915 l_entered_amt_idx            := NULL;          -- 4262811
27916 l_accted_amt_idx             := NULL;          -- 4262811
27917 l_acc_rev_flag               := NULL;          -- 4262811
27918 l_accrual_line_num           := NULL;          -- 4262811
27919 l_tmp_amt                    := NULL;          -- 4262811
27920 --
27921  
27922 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27923     l_balance_type_code <> 'B' THEN
27924 IF NVL(
27925 xla_ae_sources_pkg.GetSystemSourceChar(
27926    p_source_code           => 'XLA_EVENT_TYPE_CODE'
27927  , p_source_type_code      => 'Y'
27928  , p_source_application_id =>  602
27929 ),'
27930 ') =  'PO_BURDEN_RESERVED' AND 
27931 NVL(p_source_13,'
27932 ') =  'B_REQ' AND 
27933 NVL(p_source_14,'
27934 ') =  'O' AND 
27935 NVL(p_source_9,'
27936 ') =  'REQ' AND 
27937 NVL(p_source_15,'
27938 ') =  'D' AND 
27939 NVL(p_source_67,'
27940 ') =  'Y'
27941  THEN 
27942 
27943    --
27944    XLA_AE_LINES_PKG.SetNewLine;
27945 
27946    p_balance_type_code          := l_balance_type_code;
27947    -- set the flag so later we will know whether the gain loss line needs to be created
27948    
27949    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27950      p_actual_flag :='A';
27951    END IF;
27952 
27953    --
27954    -- bulk performance
27955    --
27956    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27957                                       p_header_num   => 0); -- 4262811
27958    --
27959    -- set accounting line options
27960    --
27961    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27962            p_natural_side_code          => 'C'
27963          , p_gain_or_loss_flag          => 'N'
27964          , p_gl_transfer_mode_code      => 'S'
27965          , p_acct_entry_type_code       => 'E'
27966          , p_switch_side_flag           => 'N'
27967          , p_merge_duplicate_code       => 'N'
27968          );
27969    --
27970    l_acc_rev_natural_side_code := 'D';  -- 4262811
27971    -- 
27972    --
27973    -- set accounting line type info
27974    --
27975    xla_ae_lines_pkg.SetAcctLineType
27976       (p_component_type             => l_component_type
27977       ,p_event_type_code            => l_event_type_code
27978       ,p_line_definition_owner_code => l_line_definition_owner_code
27979       ,p_line_definition_code       => l_line_definition_code
27980       ,p_accounting_line_code       => l_component_code
27981       ,p_accounting_line_type_code  => l_component_type_code
27982       ,p_accounting_line_appl_id    => l_component_appl_id
27983       ,p_amb_context_code           => l_amb_context_code
27984       ,p_entity_code                => l_entity_code
27985       ,p_event_class_code           => l_event_class_code);
27986    --
27987    -- set accounting class
27988    --
27989    xla_ae_lines_pkg.SetAcctClass(
27990            p_accounting_class_code  => 'REQ_PA_BURDEN'
27991          , p_ae_header_id           => l_ae_header_id
27992          );
27993 
27994    --
27995    -- set rounding class
27996    --
27997    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27998                       'REQ_PA_BURDEN';
27999 
28000    --
28001    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28002    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28003    --
28004    -- bulk performance
28005    --
28006    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28007 
28008    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28009       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28010 
28011    -- 4955764
28012    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28013       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28014 
28015    -- 4458381 Public Sector Enh
28016       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
28017    --
28018    -- set accounting attributes for the line type
28019    --
28020    l_entered_amt_idx := 27;
28021    l_accted_amt_idx  := 29;
28022    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28023    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28024    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
28025    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
28026    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
28027    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
28028    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
28029    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
28030    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
28031    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
28032    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
28033    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
28034    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
28035    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
28036    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
28037    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28038    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
28039    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
28040    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
28041    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
28042    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
28043    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28044    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
28045    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
28046    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
28047    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
28048    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
28049    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
28050    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
28051    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
28052    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
28053    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
28054    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
28055    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
28056    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
28057    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
28058    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
28059    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
28060    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
28061    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
28062    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
28063    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
28064    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
28065    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
28066    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
28067    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
28068    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
28069    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
28070    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
28071    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
28072    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
28073    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
28074    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
28075    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
28076    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
28077    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
28078    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
28079    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
28080    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
28081    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
28082    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
28083    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
28084    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
28085    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
28086    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
28087    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
28088    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
28089    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
28090    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
28091 
28092    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28093    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28094 
28095    ---------------------------------------------------------------------------------------------------------------
28096    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28097    ---------------------------------------------------------------------------------------------------------------
28098    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28099 
28100    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28101    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28102 
28103    IF xla_accounting_cache_pkg.GetValueChar
28104          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28105          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28106    AND l_bflow_method_code = 'PRIOR_ENTRY'
28107 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28108    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28109          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28110        )
28111    THEN
28112          xla_ae_lines_pkg.BflowUpgEntry
28113            (p_business_method_code    => l_bflow_method_code
28114            ,p_business_class_code     => l_bflow_class_code
28115            ,p_balance_type            => l_balance_type_code);
28116    ELSE
28117       NULL;
28118 -- No business flow processing for business flow method of NONE.
28119    END IF;
28120 
28121    --
28122    -- call analytical criteria
28123    --
28124    
28125    --
28126    -- call description
28127    --
28128    
28129 xla_ae_lines_pkg.SetLineDescription(
28130    p_ae_header_id => l_ae_header_id
28131   ,p_description  => Description_2 (
28132      p_application_id         => p_application_id
28133    , p_ae_header_id           => l_ae_header_id 
28134 , p_source_3 => p_source_3
28135 , p_source_4 => p_source_4
28136 , p_source_5 => p_source_5
28137 , p_source_6 => p_source_6
28138    )
28139 );
28140 
28141 
28142    --
28143    -- call ADRs
28144    -- Bug 4922099
28145    --
28146    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28147         (NVL(l_actual_upg_option, 'N') = 'O') OR
28148         (NVL(l_enc_upg_option, 'N') = 'O')
28149       )
28150    THEN
28151    NULL;
28152    --
28153    --
28154    
28155   l_ccid := AcctDerRule_7(
28156            p_application_id           => p_application_id
28157          , p_ae_header_id             => l_ae_header_id 
28158 , p_source_11 => p_source_11
28159          , x_transaction_coa_id       => l_adr_transaction_coa_id
28160          , x_accounting_coa_id        => l_adr_accounting_coa_id
28161          , x_value_type_code          => l_adr_value_type_code
28162          , p_side                     => 'NA'
28163    );
28164 
28165    xla_ae_lines_pkg.set_ccid(
28166     p_code_combination_id          => l_ccid
28167   , p_value_type_code              => l_adr_value_type_code
28168   , p_transaction_coa_id           => l_adr_transaction_coa_id
28169   , p_accounting_coa_id            => l_adr_accounting_coa_id
28170   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
28171   , p_adr_type_code                => 'S'
28172   , p_component_type               => l_component_type
28173   , p_component_code               => l_component_code
28174   , p_component_type_code          => l_component_type_code
28175   , p_component_appl_id            => l_component_appl_id
28176   , p_amb_context_code             => l_amb_context_code
28177   , p_side                         => 'NA'
28178   );
28179 
28180 
28181    --
28182    --
28183    END IF;
28184    --
28185    -- Bug 4922099
28186    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28187           (NVL(l_enc_upg_option, 'N') = 'O')
28188         ) AND
28189         (l_bflow_method_code = 'PRIOR_ENTRY')
28190       )
28191    THEN
28192       IF
28193       --
28194       1 = 2
28195       --
28196       THEN
28197       xla_accounting_err_pkg.build_message
28198                                     (p_appli_s_name            => 'XLA'
28199                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28200                                     ,p_token_1                 => 'LINE_NUMBER'
28201                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28202                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28203                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28204                                                                              l_component_type
28205                                                                             ,l_component_code
28206                                                                             ,l_component_type_code
28207                                                                             ,l_component_appl_id
28208                                                                             ,l_amb_context_code
28209                                                                             ,l_entity_code
28210                                                                             ,l_event_class_code
28211                                                                            )
28212                                     ,p_token_3                 => 'OWNER'
28213                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28214                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28215                                                                           ,p_lookup_code    => l_component_type_code
28216                                                                          )
28217                                     ,p_token_4                 => 'PRODUCT_NAME'
28218                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28219                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28220                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28221                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28222                                     ,p_ae_header_id            =>  NULL
28223                                        );
28224 
28225         IF (C_LEVEL_ERROR>= g_log_level) THEN
28226                  trace
28227                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28228                       ,p_level    => C_LEVEL_ERROR
28229                       ,p_module   => l_log_module);
28230         END IF;
28231       END IF;
28232    END IF;
28233    --
28234    --
28235    ------------------------------------------------------------------------------------------------
28236    -- 4219869 Business Flow
28237    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28238    -- Prior Entry.  Currently, the following code is always generated.
28239    ------------------------------------------------------------------------------------------------
28240    XLA_AE_LINES_PKG.ValidateCurrentLine;
28241 
28242    ------------------------------------------------------------------------------------
28243    -- 4219869 Business Flow
28244    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28245    ------------------------------------------------------------------------------------
28246    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28247 
28248    ----------------------------------------------------------------------------------
28249    -- 4219869 Business Flow
28250    -- Update journal entry status -- Need to generate this within IF <condition>
28251    ----------------------------------------------------------------------------------
28252    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28253          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28254          ,p_balance_type_code => l_balance_type_code
28255          );
28256 
28257    -------------------------------------------------------------------------------------------
28258    -- 4262811 - Generate the Accrual Reversal lines
28259    -------------------------------------------------------------------------------------------
28260    BEGIN
28261       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28262                               (g_array_event(p_event_id).array_value_num('header_index'));
28263       IF l_acc_rev_flag IS NULL THEN
28264          l_acc_rev_flag := 'N';
28265       END IF;
28266    EXCEPTION
28267       WHEN OTHERS THEN
28268          l_acc_rev_flag := 'N';
28269    END;
28270    --
28271    IF (l_acc_rev_flag = 'Y') THEN
28272 
28273        -- 4645092  ------------------------------------------------------------------------------
28274        -- To allow MPA report to determine if it should generate report process
28275        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28276        ------------------------------------------------------------------------------------------
28277 
28278        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28279        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28280 
28281        --
28282        -- Update the line information that should be overwritten
28283        --
28284        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28285                                          p_header_num   => 1);
28286        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28287 
28288        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28289 
28290        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28291           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28292        END IF;
28293 
28294       --
28295       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28296       --
28297       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28298           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28299       ELSE
28300           ---------------------------------------------------------------------------------------------------
28301           -- 4262811a Switch Sign
28302           ---------------------------------------------------------------------------------------------------
28303           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28304           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28305                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28306           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28307                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28308           -- 5132302
28309           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28310                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28311 
28312       END IF;
28313 
28314       -- 4955764
28315       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28316       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28317 
28318 
28319       XLA_AE_LINES_PKG.ValidateCurrentLine;
28320       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28321 
28322       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28323                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28324                ,p_balance_type_code => l_balance_type_code);
28325 
28326    END IF;
28327 
28328    -----------------------------------------------------------------------------------------
28329    -- 4262811 Multiperiod Accounting
28330    -----------------------------------------------------------------------------------------
28331      -- No MPA option is assigned.
28332 
28333 
28334 END IF;
28335 END IF;
28336 --
28337 
28338 --
28339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28340    trace
28341       (p_msg      => 'END of AcctLineType_52'
28342       ,p_level    => C_LEVEL_PROCEDURE
28343       ,p_module   => l_log_module);
28344 END IF;
28345 --
28346 EXCEPTION
28347   WHEN xla_exceptions_pkg.application_exception THEN
28348       RAISE;
28349   WHEN OTHERS THEN
28350        xla_exceptions_pkg.raise_message
28351            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_52');
28352 END AcctLineType_52;
28353 --
28354 
28355 ---------------------------------------
28356 --
28357 -- PRIVATE FUNCTION
28358 --         AcctLineType_53
28359 --
28360 ---------------------------------------
28361 PROCEDURE AcctLineType_53 (
28362   p_application_id        IN NUMBER
28363  ,p_event_id              IN NUMBER
28364  ,p_calculate_acctd_flag  IN VARCHAR2
28365  ,p_calculate_g_l_flag    IN VARCHAR2
28366  ,p_actual_flag           IN OUT VARCHAR2
28367  ,p_balance_type_code     OUT VARCHAR2
28368  ,p_gain_or_loss_ref      OUT VARCHAR2
28369  
28370 --Journal entry Line Description
28371  , p_source_7            IN VARCHAR2
28372 --Budget Account
28373  , p_source_11            IN NUMBER
28374 --Main Or Backing Code
28375  , p_source_13            IN VARCHAR2
28376 --Accounting Reversal Flag
28377  , p_source_16            IN VARCHAR2
28378 --PO Distribution Identifier
28379  , p_source_29            IN NUMBER
28380 --Entered Amount
28381  , p_source_33            IN NUMBER
28382 --Currency Code
28383  , p_source_34            IN VARCHAR2
28384 --Accounted Amount
28385  , p_source_35            IN NUMBER
28386 --Allocated to Main Document Distribution Identifier
28387  , p_source_51            IN NUMBER
28388 --PO Header Identifier
28389  , p_source_52            IN NUMBER
28390 --Applied To Application Identifier
28391  , p_source_53            IN NUMBER
28392 --Applied To Distribution Link Type
28393  , p_source_54            IN VARCHAR2
28394 --Applied To Entity Code
28395  , p_source_55            IN VARCHAR2
28396 --Applied To Distribution Identifier 1
28397  , p_source_56            IN NUMBER
28398 --Applied To Header Identifier 1
28399  , p_source_57            IN NUMBER
28400 --Distribution Link Type
28401  , p_source_58            IN VARCHAR2
28402 --PO Encumbrance Upgrade Option
28403  , p_source_59            IN VARCHAR2
28404 --JFMIP Reference
28405  , p_source_60            IN VARCHAR2
28406 --PO Upgrade Encumbrance Type Identifier
28407  , p_source_61            IN NUMBER
28408 --Currency Conversion Date
28409  , p_source_62            IN DATE
28410 --Currency Conversion Rate
28411  , p_source_63            IN NUMBER
28412 --Currency Conversion Type
28413  , p_source_64            IN VARCHAR2
28414 --Backing Requisition Prevent Encumbrance Changed Flag
28415  , p_source_65            IN VARCHAR2
28416 )
28417 IS
28418 
28419 l_component_type              VARCHAR2(80);
28420 l_component_code              VARCHAR2(30);
28421 l_component_type_code         VARCHAR2(1);
28422 l_component_appl_id           INTEGER;
28423 l_amb_context_code            VARCHAR2(30);
28424 l_entity_code                 VARCHAR2(30);
28425 l_event_class_code            VARCHAR2(30);
28426 l_ae_header_id                NUMBER;
28427 l_event_type_code             VARCHAR2(30);
28428 l_line_definition_code        VARCHAR2(30);
28429 l_line_definition_owner_code  VARCHAR2(1);
28430 --
28431 -- adr variables
28432 l_segment                     VARCHAR2(30);
28433 l_ccid                        NUMBER;
28434 l_adr_transaction_coa_id      NUMBER;
28435 l_adr_accounting_coa_id       NUMBER;
28436 l_adr_flexfield_segment_code  VARCHAR2(30);
28437 l_adr_flex_value_set_id       NUMBER;
28438 l_adr_value_type_code         VARCHAR2(30);
28439 l_adr_value_combination_id    NUMBER;
28440 l_adr_value_segment_code      VARCHAR2(30);
28441 
28442 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28443 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28444 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28445 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28446 
28447 -- 4262811 Variables ------------------------------------------------------------------------------------------
28448 l_entered_amt_idx             NUMBER;
28449 l_accted_amt_idx              NUMBER;
28450 l_acc_rev_flag                VARCHAR2(1);
28451 l_accrual_line_num            NUMBER;
28452 l_tmp_amt                     NUMBER;
28453 l_acc_rev_natural_side_code   VARCHAR2(1);
28454 
28455 l_num_entries                 NUMBER;
28456 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28457 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28458 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28459 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28460 l_recog_line_1                NUMBER;
28461 l_recog_line_2                NUMBER;
28462 
28463 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28464 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28465 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28466 
28467 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28468 
28469 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28470 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28471 
28472 ---------------------------------------------------------------------------------------------------------------
28473 
28474 
28475 --
28476 -- bulk performance
28477 --
28478 l_balance_type_code           VARCHAR2(1);
28479 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28480 l_log_module                  VARCHAR2(240);
28481 
28482 --
28483 -- Upgrade strategy
28484 --
28485 l_actual_upg_option           VARCHAR2(1);
28486 l_enc_upg_option           VARCHAR2(1);
28487 
28488 --
28489 BEGIN
28490 --
28491 IF g_log_enabled THEN
28492       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
28493 END IF;
28494 --
28495 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28496 
28497       trace
28498          (p_msg      => 'BEGIN of AcctLineType_53'
28499          ,p_level    => C_LEVEL_PROCEDURE
28500          ,p_module   => l_log_module);
28501 
28502 END IF;
28503 --
28504 l_component_type             := 'AMB_JLT';
28505 l_component_code             := 'RELIEVE_UNENC_REQ_ENC_FROM_PO';
28506 l_component_type_code        := 'S';
28507 l_component_appl_id          :=  201;
28508 l_amb_context_code           := 'DEFAULT';
28509 l_entity_code                := 'PURCHASE_ORDER';
28510 l_event_class_code           := 'PO_PA';
28511 l_event_type_code            := 'PO_PA_ALL';
28512 l_line_definition_owner_code := 'S';
28513 l_line_definition_code       := 'PO_PA_ENC_ALL';
28514 --
28515 l_balance_type_code          := 'E';
28516 l_segment                     := NULL;
28517 l_ccid                        := NULL;
28518 l_adr_transaction_coa_id      := NULL;
28519 l_adr_accounting_coa_id       := NULL;
28520 l_adr_flexfield_segment_code  := NULL;
28521 l_adr_flex_value_set_id       := NULL;
28522 l_adr_value_type_code         := NULL;
28523 l_adr_value_combination_id    := NULL;
28524 l_adr_value_segment_code      := NULL;
28525 
28526 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28527 l_bflow_class_code           := '';    -- 4219869 Business Flow
28528 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28529 l_budgetary_control_flag     := 'Y';
28530 
28531 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28532 l_bflow_applied_to_amt       := NULL; -- 5132302
28533 l_entered_amt_idx            := NULL;          -- 4262811
28534 l_accted_amt_idx             := NULL;          -- 4262811
28535 l_acc_rev_flag               := NULL;          -- 4262811
28536 l_accrual_line_num           := NULL;          -- 4262811
28537 l_tmp_amt                    := NULL;          -- 4262811
28538 --
28539  
28540 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28541     l_balance_type_code <> 'B' THEN
28542 IF NVL(
28543 xla_ae_sources_pkg.GetSystemSourceChar(
28544    p_source_code           => 'XLA_EVENT_TYPE_CODE'
28545  , p_source_type_code      => 'Y'
28546  , p_source_application_id =>  602
28547 ),'
28548 ') =  'PO_PA_RESERVED' AND 
28549 NVL(p_source_13,'
28550 ') =  'B_REQ' AND 
28551 NVL(p_source_65,'
28552 ') =  'Y'
28553  THEN 
28554 
28555    --
28556    XLA_AE_LINES_PKG.SetNewLine;
28557 
28558    p_balance_type_code          := l_balance_type_code;
28559    -- set the flag so later we will know whether the gain loss line needs to be created
28560    
28561    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28562      p_actual_flag :='A';
28563    END IF;
28564 
28565    --
28566    -- bulk performance
28567    --
28568    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28569                                       p_header_num   => 0); -- 4262811
28570    --
28571    -- set accounting line options
28572    --
28573    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28574            p_natural_side_code          => 'C'
28575          , p_gain_or_loss_flag          => 'N'
28576          , p_gl_transfer_mode_code      => 'S'
28577          , p_acct_entry_type_code       => 'E'
28578          , p_switch_side_flag           => 'N'
28579          , p_merge_duplicate_code       => 'N'
28580          );
28581    --
28582    l_acc_rev_natural_side_code := 'D';  -- 4262811
28583    -- 
28584    --
28585    -- set accounting line type info
28586    --
28587    xla_ae_lines_pkg.SetAcctLineType
28588       (p_component_type             => l_component_type
28589       ,p_event_type_code            => l_event_type_code
28590       ,p_line_definition_owner_code => l_line_definition_owner_code
28591       ,p_line_definition_code       => l_line_definition_code
28592       ,p_accounting_line_code       => l_component_code
28593       ,p_accounting_line_type_code  => l_component_type_code
28594       ,p_accounting_line_appl_id    => l_component_appl_id
28595       ,p_amb_context_code           => l_amb_context_code
28596       ,p_entity_code                => l_entity_code
28597       ,p_event_class_code           => l_event_class_code);
28598    --
28599    -- set accounting class
28600    --
28601    xla_ae_lines_pkg.SetAcctClass(
28602            p_accounting_class_code  => 'REQUISITION'
28603          , p_ae_header_id           => l_ae_header_id
28604          );
28605 
28606    --
28607    -- set rounding class
28608    --
28609    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28610                       'REQUISITION';
28611 
28612    --
28613    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28614    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28615    --
28616    -- bulk performance
28617    --
28618    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28619 
28620    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28621       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28622 
28623    -- 4955764
28624    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28625       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28626 
28627    -- 4458381 Public Sector Enh
28628       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
28629    --
28630    -- set accounting attributes for the line type
28631    --
28632    l_entered_amt_idx := 23;
28633    l_accted_amt_idx  := 28;
28634    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28635    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28636    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
28637    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
28638    l_rec_acct_attrs.array_num_value(2)  := 
28639 xla_ae_sources_pkg.GetSystemSourceNum(
28640    p_source_code           => 'XLA_EVENT_APPL_ID'
28641  , p_source_type_code      => 'Y'
28642  , p_source_application_id =>  602
28643 );
28644    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
28645    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
28646    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
28647    l_rec_acct_attrs.array_char_value(4)  := 
28648 xla_ae_sources_pkg.GetSystemSourceChar(
28649    p_source_code           => 'XLA_ENTITY_CODE'
28650  , p_source_type_code      => 'Y'
28651  , p_source_application_id =>  602
28652 );
28653    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
28654    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_51);
28655    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
28656    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
28657    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
28658    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
28659    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28660    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
28661    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
28662    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
28663    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
28664    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
28665    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28666    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
28667    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
28668    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
28669    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
28670    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
28671    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
28672    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
28673    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
28674    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
28675    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
28676    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
28677    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
28678    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
28679    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
28680    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
28681    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
28682    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
28683    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
28684    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
28685    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
28686    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
28687    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
28688    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
28689    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
28690    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
28691    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
28692    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
28693    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
28694    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
28695    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
28696    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
28697    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
28698    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
28699    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
28700    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
28701    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
28702    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
28703    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
28704    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
28705    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
28706    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
28707    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
28708    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_29);
28709    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
28710    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
28711    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
28712    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
28713 
28714    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28715    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28716 
28717    ---------------------------------------------------------------------------------------------------------------
28718    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28719    ---------------------------------------------------------------------------------------------------------------
28720    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28721 
28722    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28723    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28724 
28725    IF xla_accounting_cache_pkg.GetValueChar
28726          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28727          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28728    AND l_bflow_method_code = 'PRIOR_ENTRY'
28729 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28730    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28731          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28732        )
28733    THEN
28734          xla_ae_lines_pkg.BflowUpgEntry
28735            (p_business_method_code    => l_bflow_method_code
28736            ,p_business_class_code     => l_bflow_class_code
28737            ,p_balance_type            => l_balance_type_code);
28738    ELSE
28739       NULL;
28740 -- No business flow processing for business flow method of NONE.
28741    END IF;
28742 
28743    --
28744    -- call analytical criteria
28745    --
28746    
28747    --
28748    -- call description
28749    --
28750    
28751 xla_ae_lines_pkg.SetLineDescription(
28752    p_ae_header_id => l_ae_header_id
28753   ,p_description  => Description_3 (
28754      p_application_id         => p_application_id
28755    , p_ae_header_id           => l_ae_header_id 
28756 , p_source_7 => p_source_7
28757    )
28758 );
28759 
28760 
28761    --
28762    -- call ADRs
28763    -- Bug 4922099
28764    --
28765    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28766         (NVL(l_actual_upg_option, 'N') = 'O') OR
28767         (NVL(l_enc_upg_option, 'N') = 'O')
28768       )
28769    THEN
28770    NULL;
28771    --
28772    --
28773    
28774   l_ccid := AcctDerRule_8(
28775            p_application_id           => p_application_id
28776          , p_ae_header_id             => l_ae_header_id 
28777 , p_source_11 => p_source_11
28778          , x_transaction_coa_id       => l_adr_transaction_coa_id
28779          , x_accounting_coa_id        => l_adr_accounting_coa_id
28780          , x_value_type_code          => l_adr_value_type_code
28781          , p_side                     => 'NA'
28782    );
28783 
28784    xla_ae_lines_pkg.set_ccid(
28785     p_code_combination_id          => l_ccid
28786   , p_value_type_code              => l_adr_value_type_code
28787   , p_transaction_coa_id           => l_adr_transaction_coa_id
28788   , p_accounting_coa_id            => l_adr_accounting_coa_id
28789   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
28790   , p_adr_type_code                => 'S'
28791   , p_component_type               => l_component_type
28792   , p_component_code               => l_component_code
28793   , p_component_type_code          => l_component_type_code
28794   , p_component_appl_id            => l_component_appl_id
28795   , p_amb_context_code             => l_amb_context_code
28796   , p_side                         => 'NA'
28797   );
28798 
28799 
28800    --
28801    --
28802    END IF;
28803    --
28804    -- Bug 4922099
28805    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28806           (NVL(l_enc_upg_option, 'N') = 'O')
28807         ) AND
28808         (l_bflow_method_code = 'PRIOR_ENTRY')
28809       )
28810    THEN
28811       IF
28812       --
28813       1 = 2
28814       --
28815       THEN
28816       xla_accounting_err_pkg.build_message
28817                                     (p_appli_s_name            => 'XLA'
28818                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28819                                     ,p_token_1                 => 'LINE_NUMBER'
28820                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28821                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28822                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28823                                                                              l_component_type
28824                                                                             ,l_component_code
28825                                                                             ,l_component_type_code
28826                                                                             ,l_component_appl_id
28827                                                                             ,l_amb_context_code
28828                                                                             ,l_entity_code
28829                                                                             ,l_event_class_code
28830                                                                            )
28831                                     ,p_token_3                 => 'OWNER'
28832                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28833                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28834                                                                           ,p_lookup_code    => l_component_type_code
28835                                                                          )
28836                                     ,p_token_4                 => 'PRODUCT_NAME'
28837                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28838                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28839                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28840                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28841                                     ,p_ae_header_id            =>  NULL
28842                                        );
28843 
28844         IF (C_LEVEL_ERROR>= g_log_level) THEN
28845                  trace
28846                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28847                       ,p_level    => C_LEVEL_ERROR
28848                       ,p_module   => l_log_module);
28849         END IF;
28850       END IF;
28851    END IF;
28852    --
28853    --
28854    ------------------------------------------------------------------------------------------------
28855    -- 4219869 Business Flow
28856    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28857    -- Prior Entry.  Currently, the following code is always generated.
28858    ------------------------------------------------------------------------------------------------
28859    XLA_AE_LINES_PKG.ValidateCurrentLine;
28860 
28861    ------------------------------------------------------------------------------------
28862    -- 4219869 Business Flow
28863    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28864    ------------------------------------------------------------------------------------
28865    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28866 
28867    ----------------------------------------------------------------------------------
28868    -- 4219869 Business Flow
28869    -- Update journal entry status -- Need to generate this within IF <condition>
28870    ----------------------------------------------------------------------------------
28871    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28872          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28873          ,p_balance_type_code => l_balance_type_code
28874          );
28875 
28876    -------------------------------------------------------------------------------------------
28877    -- 4262811 - Generate the Accrual Reversal lines
28878    -------------------------------------------------------------------------------------------
28879    BEGIN
28880       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28881                               (g_array_event(p_event_id).array_value_num('header_index'));
28882       IF l_acc_rev_flag IS NULL THEN
28883          l_acc_rev_flag := 'N';
28884       END IF;
28885    EXCEPTION
28886       WHEN OTHERS THEN
28887          l_acc_rev_flag := 'N';
28888    END;
28889    --
28890    IF (l_acc_rev_flag = 'Y') THEN
28891 
28892        -- 4645092  ------------------------------------------------------------------------------
28893        -- To allow MPA report to determine if it should generate report process
28894        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28895        ------------------------------------------------------------------------------------------
28896 
28897        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28898        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28899 
28900        --
28901        -- Update the line information that should be overwritten
28902        --
28903        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28904                                          p_header_num   => 1);
28905        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28906 
28907        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28908 
28909        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28910           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28911        END IF;
28912 
28913       --
28914       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28915       --
28916       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28917           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28918       ELSE
28919           ---------------------------------------------------------------------------------------------------
28920           -- 4262811a Switch Sign
28921           ---------------------------------------------------------------------------------------------------
28922           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28923           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28924                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28925           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28926                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28927           -- 5132302
28928           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28929                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28930 
28931       END IF;
28932 
28933       -- 4955764
28934       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28935       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28936 
28937 
28938       XLA_AE_LINES_PKG.ValidateCurrentLine;
28939       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28940 
28941       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28942                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28943                ,p_balance_type_code => l_balance_type_code);
28944 
28945    END IF;
28946 
28947    -----------------------------------------------------------------------------------------
28948    -- 4262811 Multiperiod Accounting
28949    -----------------------------------------------------------------------------------------
28950      -- No MPA option is assigned.
28951 
28952 
28953 END IF;
28954 END IF;
28955 --
28956 
28957 --
28958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28959    trace
28960       (p_msg      => 'END of AcctLineType_53'
28961       ,p_level    => C_LEVEL_PROCEDURE
28962       ,p_module   => l_log_module);
28963 END IF;
28964 --
28965 EXCEPTION
28966   WHEN xla_exceptions_pkg.application_exception THEN
28967       RAISE;
28968   WHEN OTHERS THEN
28969        xla_exceptions_pkg.raise_message
28970            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_53');
28971 END AcctLineType_53;
28972 --
28973 
28974 ---------------------------------------
28975 --
28976 -- PRIVATE FUNCTION
28977 --         AcctLineType_54
28978 --
28979 ---------------------------------------
28980 PROCEDURE AcctLineType_54 (
28981   p_application_id        IN NUMBER
28982  ,p_event_id              IN NUMBER
28983  ,p_calculate_acctd_flag  IN VARCHAR2
28984  ,p_calculate_g_l_flag    IN VARCHAR2
28985  ,p_actual_flag           IN OUT VARCHAR2
28986  ,p_balance_type_code     OUT VARCHAR2
28987  ,p_gain_or_loss_ref      OUT VARCHAR2
28988  
28989 --Project Name
28990  , p_source_3            IN VARCHAR2
28991 --Task Name
28992  , p_source_4            IN VARCHAR2
28993 --Project Expenditure Organization Identifier
28994  , p_source_5            IN NUMBER
28995 --Expenditure Type
28996  , p_source_6            IN VARCHAR2
28997 --Document Type
28998  , p_source_9            IN VARCHAR2
28999 --Budget Account
29000  , p_source_11            IN NUMBER
29001 --Main Or Backing Code
29002  , p_source_13            IN VARCHAR2
29003 --Burden Record Identifier
29004  , p_source_14            IN VARCHAR2
29005  , p_source_14_meaning    IN VARCHAR2
29006 --Burden Amount Display Method
29007  , p_source_15            IN VARCHAR2
29008 --Accounting Reversal Flag
29009  , p_source_16            IN VARCHAR2
29010 --Allocated to Application Identifier
29011  , p_source_17            IN NUMBER
29012 --Allocated to Distribution Type
29013  , p_source_18            IN VARCHAR2
29014 --Allocated to Entity Code
29015  , p_source_19            IN VARCHAR2
29016 --Allocated to First Distribution Identifier
29017  , p_source_20            IN NUMBER
29018 --Allocated to First System Transaction Identifier
29019  , p_source_21            IN NUMBER
29020 --Allocated to Second Distribution Identifier
29021  , p_source_22            IN VARCHAR2
29022 --Purchase Order Burden Applied to Application Identifier
29023  , p_source_23            IN NUMBER
29024 --PO Distribution Type
29025  , p_source_24            IN VARCHAR2
29026 --Purchase Order Burden Applied to Entity Code
29027  , p_source_25            IN VARCHAR2
29028 --Purchase Order Burden Applied to First Distribution Identifier
29029  , p_source_26            IN NUMBER
29030 --Purchase Order Burden Applied to First System Transaction Identifier
29031  , p_source_27            IN NUMBER
29032 --Purchase Order Burden Applied to Second Distribution Identifier
29033  , p_source_28            IN VARCHAR2
29034 --PO Distribution Identifier
29035  , p_source_29            IN NUMBER
29036 --Line Type Name
29037  , p_source_30            IN VARCHAR2
29038 --Encumbrance Upgrade Credit Accounting Class
29039  , p_source_31            IN VARCHAR2
29040 --Encumbrance Upgrade Credit Account
29041  , p_source_32            IN NUMBER
29042 --Entered Amount
29043  , p_source_33            IN NUMBER
29044 --Currency Code
29045  , p_source_34            IN VARCHAR2
29046 --Accounted Amount
29047  , p_source_35            IN NUMBER
29048 --Encumbrance Upgrade Debit Accounting Class
29049  , p_source_36            IN VARCHAR2
29050 --Encumbrance Upgrade Debit Account
29051  , p_source_37            IN NUMBER
29052 --Use Encumbrances Upgrade Attributes Flag
29053  , p_source_38            IN VARCHAR2
29054 --Encumbrance Upgrade Credit Encumbrance Type
29055  , p_source_39            IN NUMBER
29056 --Encumbrance Upgrade Debit Encumbrance Type
29057  , p_source_40            IN NUMBER
29058 )
29059 IS
29060 
29061 l_component_type              VARCHAR2(80);
29062 l_component_code              VARCHAR2(30);
29063 l_component_type_code         VARCHAR2(1);
29064 l_component_appl_id           INTEGER;
29065 l_amb_context_code            VARCHAR2(30);
29066 l_entity_code                 VARCHAR2(30);
29067 l_event_class_code            VARCHAR2(30);
29068 l_ae_header_id                NUMBER;
29069 l_event_type_code             VARCHAR2(30);
29070 l_line_definition_code        VARCHAR2(30);
29071 l_line_definition_owner_code  VARCHAR2(1);
29072 --
29073 -- adr variables
29074 l_segment                     VARCHAR2(30);
29075 l_ccid                        NUMBER;
29076 l_adr_transaction_coa_id      NUMBER;
29077 l_adr_accounting_coa_id       NUMBER;
29078 l_adr_flexfield_segment_code  VARCHAR2(30);
29079 l_adr_flex_value_set_id       NUMBER;
29080 l_adr_value_type_code         VARCHAR2(30);
29081 l_adr_value_combination_id    NUMBER;
29082 l_adr_value_segment_code      VARCHAR2(30);
29083 
29084 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29085 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29086 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29087 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29088 
29089 -- 4262811 Variables ------------------------------------------------------------------------------------------
29090 l_entered_amt_idx             NUMBER;
29091 l_accted_amt_idx              NUMBER;
29092 l_acc_rev_flag                VARCHAR2(1);
29093 l_accrual_line_num            NUMBER;
29094 l_tmp_amt                     NUMBER;
29095 l_acc_rev_natural_side_code   VARCHAR2(1);
29096 
29097 l_num_entries                 NUMBER;
29098 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29099 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29100 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29101 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29102 l_recog_line_1                NUMBER;
29103 l_recog_line_2                NUMBER;
29104 
29105 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29106 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29107 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29108 
29109 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29110 
29111 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29112 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29113 
29114 ---------------------------------------------------------------------------------------------------------------
29115 
29116 
29117 --
29118 -- bulk performance
29119 --
29120 l_balance_type_code           VARCHAR2(1);
29121 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29122 l_log_module                  VARCHAR2(240);
29123 
29124 --
29125 -- Upgrade strategy
29126 --
29127 l_actual_upg_option           VARCHAR2(1);
29128 l_enc_upg_option           VARCHAR2(1);
29129 
29130 --
29131 BEGIN
29132 --
29133 IF g_log_enabled THEN
29134       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
29135 END IF;
29136 --
29137 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29138 
29139       trace
29140          (p_msg      => 'BEGIN of AcctLineType_54'
29141          ,p_level    => C_LEVEL_PROCEDURE
29142          ,p_module   => l_log_module);
29143 
29144 END IF;
29145 --
29146 l_component_type             := 'AMB_JLT';
29147 l_component_code             := 'REOPEN_FINALCLOSE_RELBURDENENC';
29148 l_component_type_code        := 'S';
29149 l_component_appl_id          :=  201;
29150 l_amb_context_code           := 'DEFAULT';
29151 l_entity_code                := 'RELEASE';
29152 l_event_class_code           := 'RELEASE_BURDEN';
29153 l_event_type_code            := 'RELEASE_BURDEN_ALL';
29154 l_line_definition_owner_code := 'S';
29155 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
29156 --
29157 l_balance_type_code          := 'E';
29158 l_segment                     := NULL;
29159 l_ccid                        := NULL;
29160 l_adr_transaction_coa_id      := NULL;
29161 l_adr_accounting_coa_id       := NULL;
29162 l_adr_flexfield_segment_code  := NULL;
29163 l_adr_flex_value_set_id       := NULL;
29164 l_adr_value_type_code         := NULL;
29165 l_adr_value_combination_id    := NULL;
29166 l_adr_value_segment_code      := NULL;
29167 
29168 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29169 l_bflow_class_code           := '';    -- 4219869 Business Flow
29170 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29171 l_budgetary_control_flag     := 'Y';
29172 
29173 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29174 l_bflow_applied_to_amt       := NULL; -- 5132302
29175 l_entered_amt_idx            := NULL;          -- 4262811
29176 l_accted_amt_idx             := NULL;          -- 4262811
29177 l_acc_rev_flag               := NULL;          -- 4262811
29178 l_accrual_line_num           := NULL;          -- 4262811
29179 l_tmp_amt                    := NULL;          -- 4262811
29180 --
29181  
29182 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29183     l_balance_type_code <> 'B' THEN
29184 IF NVL(
29185 xla_ae_sources_pkg.GetSystemSourceChar(
29186    p_source_code           => 'XLA_EVENT_TYPE_CODE'
29187  , p_source_type_code      => 'Y'
29188  , p_source_application_id =>  602
29189 ),'
29190 ') =  'REL_BURDEN_REOPEN_FINAL_CLOSED' AND 
29191 NVL(p_source_13,'
29192 ') =  'M' AND 
29193 NVL(p_source_14,'
29194 ') =  'O' AND 
29195 NVL(p_source_9,'
29196 ') =  'PO' AND 
29197 NVL(p_source_15,'
29198 ') =  'D'
29199  THEN 
29200 
29201    --
29202    XLA_AE_LINES_PKG.SetNewLine;
29203 
29204    p_balance_type_code          := l_balance_type_code;
29205    -- set the flag so later we will know whether the gain loss line needs to be created
29206    
29207    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29208      p_actual_flag :='A';
29209    END IF;
29210 
29211    --
29212    -- bulk performance
29213    --
29214    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29215                                       p_header_num   => 0); -- 4262811
29216    --
29217    -- set accounting line options
29218    --
29219    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29220            p_natural_side_code          => 'D'
29221          , p_gain_or_loss_flag          => 'N'
29222          , p_gl_transfer_mode_code      => 'S'
29223          , p_acct_entry_type_code       => 'E'
29224          , p_switch_side_flag           => 'N'
29225          , p_merge_duplicate_code       => 'N'
29226          );
29227    --
29228    l_acc_rev_natural_side_code := 'C';  -- 4262811
29229    -- 
29230    --
29231    -- set accounting line type info
29232    --
29233    xla_ae_lines_pkg.SetAcctLineType
29234       (p_component_type             => l_component_type
29235       ,p_event_type_code            => l_event_type_code
29236       ,p_line_definition_owner_code => l_line_definition_owner_code
29237       ,p_line_definition_code       => l_line_definition_code
29238       ,p_accounting_line_code       => l_component_code
29239       ,p_accounting_line_type_code  => l_component_type_code
29240       ,p_accounting_line_appl_id    => l_component_appl_id
29241       ,p_amb_context_code           => l_amb_context_code
29242       ,p_entity_code                => l_entity_code
29243       ,p_event_class_code           => l_event_class_code);
29244    --
29245    -- set accounting class
29246    --
29247    xla_ae_lines_pkg.SetAcctClass(
29248            p_accounting_class_code  => 'PO_PA_BURDENED'
29249          , p_ae_header_id           => l_ae_header_id
29250          );
29251 
29252    --
29253    -- set rounding class
29254    --
29255    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29256                       'PO_PA_BURDENED';
29257 
29258    --
29259    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29260    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29261    --
29262    -- bulk performance
29263    --
29264    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29265 
29266    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29267       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29268 
29269    -- 4955764
29270    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29271       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29272 
29273    -- 4458381 Public Sector Enh
29274       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
29275    --
29276    -- set accounting attributes for the line type
29277    --
29278    l_entered_amt_idx := 28;
29279    l_accted_amt_idx  := 30;
29280    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29281    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
29282    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
29283    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
29284    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
29285    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
29286    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
29287    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
29288    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
29289    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
29290    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
29291    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
29292    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
29293    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
29294    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
29295    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
29296    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
29297    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29298    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
29299    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
29300    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
29301    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
29302    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
29303    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29304    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
29305    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
29306    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
29307    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
29308    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
29309    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
29310    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
29311    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
29312    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
29313    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
29314    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
29315    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
29316    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
29317    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
29318    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
29319    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
29320    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
29321    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
29322    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
29323    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
29324    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
29325    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
29326    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
29327    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
29328    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
29329    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
29330    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
29331    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
29332    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
29333    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
29334    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
29335    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
29336    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
29337    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
29338    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
29339    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
29340    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
29341    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
29342    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
29343    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
29344    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
29345    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
29346    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
29347    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
29348    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
29349    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
29350    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
29351 
29352    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29353    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29354 
29355    ---------------------------------------------------------------------------------------------------------------
29356    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29357    ---------------------------------------------------------------------------------------------------------------
29358    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29359 
29360    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29361    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29362 
29363    IF xla_accounting_cache_pkg.GetValueChar
29364          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29365          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29366    AND l_bflow_method_code = 'PRIOR_ENTRY'
29367 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29368    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29369          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29370        )
29371    THEN
29372          xla_ae_lines_pkg.BflowUpgEntry
29373            (p_business_method_code    => l_bflow_method_code
29374            ,p_business_class_code     => l_bflow_class_code
29375            ,p_balance_type            => l_balance_type_code);
29376    ELSE
29377       NULL;
29378 -- No business flow processing for business flow method of NONE.
29379    END IF;
29380 
29381    --
29382    -- call analytical criteria
29383    --
29384    
29385    --
29386    -- call description
29387    --
29388    
29389 xla_ae_lines_pkg.SetLineDescription(
29390    p_ae_header_id => l_ae_header_id
29391   ,p_description  => Description_2 (
29392      p_application_id         => p_application_id
29393    , p_ae_header_id           => l_ae_header_id 
29394 , p_source_3 => p_source_3
29395 , p_source_4 => p_source_4
29396 , p_source_5 => p_source_5
29397 , p_source_6 => p_source_6
29398    )
29399 );
29400 
29401 
29402    --
29403    -- call ADRs
29404    -- Bug 4922099
29405    --
29406    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29407         (NVL(l_actual_upg_option, 'N') = 'O') OR
29408         (NVL(l_enc_upg_option, 'N') = 'O')
29409       )
29410    THEN
29411    NULL;
29412    --
29413    --
29414    
29415   l_ccid := AcctDerRule_7(
29416            p_application_id           => p_application_id
29417          , p_ae_header_id             => l_ae_header_id 
29418 , p_source_11 => p_source_11
29419          , x_transaction_coa_id       => l_adr_transaction_coa_id
29420          , x_accounting_coa_id        => l_adr_accounting_coa_id
29421          , x_value_type_code          => l_adr_value_type_code
29422          , p_side                     => 'NA'
29423    );
29424 
29425    xla_ae_lines_pkg.set_ccid(
29426     p_code_combination_id          => l_ccid
29427   , p_value_type_code              => l_adr_value_type_code
29428   , p_transaction_coa_id           => l_adr_transaction_coa_id
29429   , p_accounting_coa_id            => l_adr_accounting_coa_id
29430   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
29431   , p_adr_type_code                => 'S'
29432   , p_component_type               => l_component_type
29433   , p_component_code               => l_component_code
29434   , p_component_type_code          => l_component_type_code
29435   , p_component_appl_id            => l_component_appl_id
29436   , p_amb_context_code             => l_amb_context_code
29437   , p_side                         => 'NA'
29438   );
29439 
29440 
29441    --
29442    --
29443    END IF;
29444    --
29445    -- Bug 4922099
29446    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29447           (NVL(l_enc_upg_option, 'N') = 'O')
29448         ) AND
29449         (l_bflow_method_code = 'PRIOR_ENTRY')
29450       )
29451    THEN
29452       IF
29453       --
29454       1 = 2
29455       --
29456       THEN
29457       xla_accounting_err_pkg.build_message
29458                                     (p_appli_s_name            => 'XLA'
29459                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29460                                     ,p_token_1                 => 'LINE_NUMBER'
29461                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29462                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29463                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29464                                                                              l_component_type
29465                                                                             ,l_component_code
29466                                                                             ,l_component_type_code
29467                                                                             ,l_component_appl_id
29468                                                                             ,l_amb_context_code
29469                                                                             ,l_entity_code
29470                                                                             ,l_event_class_code
29471                                                                            )
29472                                     ,p_token_3                 => 'OWNER'
29473                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29474                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29475                                                                           ,p_lookup_code    => l_component_type_code
29476                                                                          )
29477                                     ,p_token_4                 => 'PRODUCT_NAME'
29478                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29479                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29480                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29481                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29482                                     ,p_ae_header_id            =>  NULL
29483                                        );
29484 
29485         IF (C_LEVEL_ERROR>= g_log_level) THEN
29486                  trace
29487                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29488                       ,p_level    => C_LEVEL_ERROR
29489                       ,p_module   => l_log_module);
29490         END IF;
29491       END IF;
29492    END IF;
29493    --
29494    --
29495    ------------------------------------------------------------------------------------------------
29496    -- 4219869 Business Flow
29497    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29498    -- Prior Entry.  Currently, the following code is always generated.
29499    ------------------------------------------------------------------------------------------------
29500    XLA_AE_LINES_PKG.ValidateCurrentLine;
29501 
29502    ------------------------------------------------------------------------------------
29503    -- 4219869 Business Flow
29504    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29505    ------------------------------------------------------------------------------------
29506    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29507 
29508    ----------------------------------------------------------------------------------
29509    -- 4219869 Business Flow
29510    -- Update journal entry status -- Need to generate this within IF <condition>
29511    ----------------------------------------------------------------------------------
29512    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29513          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29514          ,p_balance_type_code => l_balance_type_code
29515          );
29516 
29517    -------------------------------------------------------------------------------------------
29518    -- 4262811 - Generate the Accrual Reversal lines
29519    -------------------------------------------------------------------------------------------
29520    BEGIN
29521       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29522                               (g_array_event(p_event_id).array_value_num('header_index'));
29523       IF l_acc_rev_flag IS NULL THEN
29524          l_acc_rev_flag := 'N';
29525       END IF;
29526    EXCEPTION
29527       WHEN OTHERS THEN
29528          l_acc_rev_flag := 'N';
29529    END;
29530    --
29531    IF (l_acc_rev_flag = 'Y') THEN
29532 
29533        -- 4645092  ------------------------------------------------------------------------------
29534        -- To allow MPA report to determine if it should generate report process
29535        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29536        ------------------------------------------------------------------------------------------
29537 
29538        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29539        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29540 
29541        --
29542        -- Update the line information that should be overwritten
29543        --
29544        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29545                                          p_header_num   => 1);
29546        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29547 
29548        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29549 
29550        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29551           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29552        END IF;
29553 
29554       --
29555       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29556       --
29557       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29558           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29559       ELSE
29560           ---------------------------------------------------------------------------------------------------
29561           -- 4262811a Switch Sign
29562           ---------------------------------------------------------------------------------------------------
29563           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29564           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29565                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29566           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29567                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29568           -- 5132302
29569           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29570                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29571 
29572       END IF;
29573 
29574       -- 4955764
29575       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29576       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29577 
29578 
29579       XLA_AE_LINES_PKG.ValidateCurrentLine;
29580       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29581 
29582       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29583                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29584                ,p_balance_type_code => l_balance_type_code);
29585 
29586    END IF;
29587 
29588    -----------------------------------------------------------------------------------------
29589    -- 4262811 Multiperiod Accounting
29590    -----------------------------------------------------------------------------------------
29591      -- No MPA option is assigned.
29592 
29593 
29594 END IF;
29595 END IF;
29596 --
29597 
29598 --
29599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29600    trace
29601       (p_msg      => 'END of AcctLineType_54'
29602       ,p_level    => C_LEVEL_PROCEDURE
29603       ,p_module   => l_log_module);
29604 END IF;
29605 --
29606 EXCEPTION
29607   WHEN xla_exceptions_pkg.application_exception THEN
29608       RAISE;
29609   WHEN OTHERS THEN
29610        xla_exceptions_pkg.raise_message
29611            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_54');
29612 END AcctLineType_54;
29613 --
29614 
29615 ---------------------------------------
29616 --
29617 -- PRIVATE FUNCTION
29618 --         AcctLineType_55
29619 --
29620 ---------------------------------------
29621 PROCEDURE AcctLineType_55 (
29622   p_application_id        IN NUMBER
29623  ,p_event_id              IN NUMBER
29624  ,p_calculate_acctd_flag  IN VARCHAR2
29625  ,p_calculate_g_l_flag    IN VARCHAR2
29626  ,p_actual_flag           IN OUT VARCHAR2
29627  ,p_balance_type_code     OUT VARCHAR2
29628  ,p_gain_or_loss_ref      OUT VARCHAR2
29629  
29630 --Project Name
29631  , p_source_3            IN VARCHAR2
29632 --Task Name
29633  , p_source_4            IN VARCHAR2
29634 --Project Expenditure Organization Identifier
29635  , p_source_5            IN NUMBER
29636 --Expenditure Type
29637  , p_source_6            IN VARCHAR2
29638 --Document Type
29639  , p_source_9            IN VARCHAR2
29640 --Budget Account
29641  , p_source_11            IN NUMBER
29642 --Main Or Backing Code
29643  , p_source_13            IN VARCHAR2
29644 --Burden Record Identifier
29645  , p_source_14            IN VARCHAR2
29646  , p_source_14_meaning    IN VARCHAR2
29647 --Burden Amount Display Method
29648  , p_source_15            IN VARCHAR2
29649 --Accounting Reversal Flag
29650  , p_source_16            IN VARCHAR2
29651 --Allocated to Application Identifier
29652  , p_source_17            IN NUMBER
29653 --Allocated to Distribution Type
29654  , p_source_18            IN VARCHAR2
29655 --Allocated to Entity Code
29656  , p_source_19            IN VARCHAR2
29657 --Allocated to First Distribution Identifier
29658  , p_source_20            IN NUMBER
29659 --Allocated to First System Transaction Identifier
29660  , p_source_21            IN NUMBER
29661 --Allocated to Second Distribution Identifier
29662  , p_source_22            IN VARCHAR2
29663 --Purchase Order Burden Applied to Application Identifier
29664  , p_source_23            IN NUMBER
29665 --PO Distribution Type
29666  , p_source_24            IN VARCHAR2
29667 --Purchase Order Burden Applied to Entity Code
29668  , p_source_25            IN VARCHAR2
29669 --Purchase Order Burden Applied to First Distribution Identifier
29670  , p_source_26            IN NUMBER
29671 --Purchase Order Burden Applied to First System Transaction Identifier
29672  , p_source_27            IN NUMBER
29673 --Purchase Order Burden Applied to Second Distribution Identifier
29674  , p_source_28            IN VARCHAR2
29675 --PO Distribution Identifier
29676  , p_source_29            IN NUMBER
29677 --Line Type Name
29678  , p_source_30            IN VARCHAR2
29679 --Encumbrance Upgrade Credit Accounting Class
29680  , p_source_31            IN VARCHAR2
29681 --Encumbrance Upgrade Credit Account
29682  , p_source_32            IN NUMBER
29683 --Entered Amount
29684  , p_source_33            IN NUMBER
29685 --Currency Code
29686  , p_source_34            IN VARCHAR2
29687 --Accounted Amount
29688  , p_source_35            IN NUMBER
29689 --Encumbrance Upgrade Debit Accounting Class
29690  , p_source_36            IN VARCHAR2
29691 --Encumbrance Upgrade Debit Account
29692  , p_source_37            IN NUMBER
29693 --Use Encumbrances Upgrade Attributes Flag
29694  , p_source_38            IN VARCHAR2
29695 --Encumbrance Upgrade Credit Encumbrance Type
29696  , p_source_39            IN NUMBER
29697 --Encumbrance Upgrade Debit Encumbrance Type
29698  , p_source_40            IN NUMBER
29699 )
29700 IS
29701 
29702 l_component_type              VARCHAR2(80);
29703 l_component_code              VARCHAR2(30);
29704 l_component_type_code         VARCHAR2(1);
29705 l_component_appl_id           INTEGER;
29706 l_amb_context_code            VARCHAR2(30);
29707 l_entity_code                 VARCHAR2(30);
29708 l_event_class_code            VARCHAR2(30);
29709 l_ae_header_id                NUMBER;
29710 l_event_type_code             VARCHAR2(30);
29711 l_line_definition_code        VARCHAR2(30);
29712 l_line_definition_owner_code  VARCHAR2(1);
29713 --
29714 -- adr variables
29715 l_segment                     VARCHAR2(30);
29716 l_ccid                        NUMBER;
29717 l_adr_transaction_coa_id      NUMBER;
29718 l_adr_accounting_coa_id       NUMBER;
29719 l_adr_flexfield_segment_code  VARCHAR2(30);
29720 l_adr_flex_value_set_id       NUMBER;
29721 l_adr_value_type_code         VARCHAR2(30);
29722 l_adr_value_combination_id    NUMBER;
29723 l_adr_value_segment_code      VARCHAR2(30);
29724 
29725 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29726 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29727 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29728 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29729 
29730 -- 4262811 Variables ------------------------------------------------------------------------------------------
29731 l_entered_amt_idx             NUMBER;
29732 l_accted_amt_idx              NUMBER;
29733 l_acc_rev_flag                VARCHAR2(1);
29734 l_accrual_line_num            NUMBER;
29735 l_tmp_amt                     NUMBER;
29736 l_acc_rev_natural_side_code   VARCHAR2(1);
29737 
29738 l_num_entries                 NUMBER;
29739 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29740 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29741 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29742 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29743 l_recog_line_1                NUMBER;
29744 l_recog_line_2                NUMBER;
29745 
29746 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29747 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29748 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29749 
29750 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29751 
29752 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29753 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29754 
29755 ---------------------------------------------------------------------------------------------------------------
29756 
29757 
29758 --
29759 -- bulk performance
29760 --
29761 l_balance_type_code           VARCHAR2(1);
29762 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29763 l_log_module                  VARCHAR2(240);
29764 
29765 --
29766 -- Upgrade strategy
29767 --
29768 l_actual_upg_option           VARCHAR2(1);
29769 l_enc_upg_option           VARCHAR2(1);
29770 
29771 --
29772 BEGIN
29773 --
29774 IF g_log_enabled THEN
29775       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
29776 END IF;
29777 --
29778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29779 
29780       trace
29781          (p_msg      => 'BEGIN of AcctLineType_55'
29782          ,p_level    => C_LEVEL_PROCEDURE
29783          ,p_module   => l_log_module);
29784 
29785 END IF;
29786 --
29787 l_component_type             := 'AMB_JLT';
29788 l_component_code             := 'REOPEN_FINALCLOSE_RELBURDNDENC';
29789 l_component_type_code        := 'S';
29790 l_component_appl_id          :=  201;
29791 l_amb_context_code           := 'DEFAULT';
29792 l_entity_code                := 'RELEASE';
29793 l_event_class_code           := 'RELEASE_BURDEN';
29794 l_event_type_code            := 'RELEASE_BURDEN_ALL';
29795 l_line_definition_owner_code := 'S';
29796 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
29797 --
29798 l_balance_type_code          := 'E';
29799 l_segment                     := NULL;
29800 l_ccid                        := NULL;
29801 l_adr_transaction_coa_id      := NULL;
29802 l_adr_accounting_coa_id       := NULL;
29803 l_adr_flexfield_segment_code  := NULL;
29804 l_adr_flex_value_set_id       := NULL;
29805 l_adr_value_type_code         := NULL;
29806 l_adr_value_combination_id    := NULL;
29807 l_adr_value_segment_code      := NULL;
29808 
29809 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29810 l_bflow_class_code           := '';    -- 4219869 Business Flow
29811 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29812 l_budgetary_control_flag     := 'Y';
29813 
29814 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29815 l_bflow_applied_to_amt       := NULL; -- 5132302
29816 l_entered_amt_idx            := NULL;          -- 4262811
29817 l_accted_amt_idx             := NULL;          -- 4262811
29818 l_acc_rev_flag               := NULL;          -- 4262811
29819 l_accrual_line_num           := NULL;          -- 4262811
29820 l_tmp_amt                    := NULL;          -- 4262811
29821 --
29822  
29823 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29824     l_balance_type_code <> 'B' THEN
29825 IF NVL(
29826 xla_ae_sources_pkg.GetSystemSourceChar(
29827    p_source_code           => 'XLA_EVENT_TYPE_CODE'
29828  , p_source_type_code      => 'Y'
29829  , p_source_application_id =>  602
29830 ),'
29831 ') =  'REL_BURDEN_REOPEN_FINAL_CLOSED' AND 
29832 NVL(p_source_13,'
29833 ') =  'M' AND 
29834 (NVL(p_source_14,'
29835 ') =  'O' OR 
29836 NVL(p_source_14,'
29837 ') =  'N') AND 
29838 NVL(p_source_9,'
29839 ') =  'PO' AND 
29840 NVL(p_source_15,'
29841 ') =  'S'
29842  THEN 
29843 
29844    --
29845    XLA_AE_LINES_PKG.SetNewLine;
29846 
29847    p_balance_type_code          := l_balance_type_code;
29848    -- set the flag so later we will know whether the gain loss line needs to be created
29849    
29850    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29851      p_actual_flag :='A';
29852    END IF;
29853 
29854    --
29855    -- bulk performance
29856    --
29857    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29858                                       p_header_num   => 0); -- 4262811
29859    --
29860    -- set accounting line options
29861    --
29862    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29863            p_natural_side_code          => 'D'
29864          , p_gain_or_loss_flag          => 'N'
29865          , p_gl_transfer_mode_code      => 'S'
29866          , p_acct_entry_type_code       => 'E'
29867          , p_switch_side_flag           => 'N'
29868          , p_merge_duplicate_code       => 'N'
29869          );
29870    --
29871    l_acc_rev_natural_side_code := 'C';  -- 4262811
29872    -- 
29873    --
29874    -- set accounting line type info
29875    --
29876    xla_ae_lines_pkg.SetAcctLineType
29877       (p_component_type             => l_component_type
29878       ,p_event_type_code            => l_event_type_code
29879       ,p_line_definition_owner_code => l_line_definition_owner_code
29880       ,p_line_definition_code       => l_line_definition_code
29881       ,p_accounting_line_code       => l_component_code
29882       ,p_accounting_line_type_code  => l_component_type_code
29883       ,p_accounting_line_appl_id    => l_component_appl_id
29884       ,p_amb_context_code           => l_amb_context_code
29885       ,p_entity_code                => l_entity_code
29886       ,p_event_class_code           => l_event_class_code);
29887    --
29888    -- set accounting class
29889    --
29890    xla_ae_lines_pkg.SetAcctClass(
29891            p_accounting_class_code  => 'PO_PA_BURDENED'
29892          , p_ae_header_id           => l_ae_header_id
29893          );
29894 
29895    --
29896    -- set rounding class
29897    --
29898    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29899                       'PO_PA_BURDENED';
29900 
29901    --
29902    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29903    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29904    --
29905    -- bulk performance
29906    --
29907    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29908 
29909    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29910       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29911 
29912    -- 4955764
29913    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29914       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29915 
29916    -- 4458381 Public Sector Enh
29917       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
29918    --
29919    -- set accounting attributes for the line type
29920    --
29921    l_entered_amt_idx := 28;
29922    l_accted_amt_idx  := 30;
29923    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29924    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
29925    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
29926    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
29927    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
29928    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
29929    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
29930    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
29931    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
29932    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
29933    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
29934    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
29935    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
29936    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
29937    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
29938    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
29939    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
29940    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29941    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
29942    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
29943    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
29944    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
29945    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
29946    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29947    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
29948    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
29949    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
29950    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
29951    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
29952    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
29953    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
29954    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
29955    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
29956    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
29957    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
29958    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
29959    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
29960    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
29961    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
29962    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
29963    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
29964    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
29965    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
29966    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
29967    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
29968    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
29969    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
29970    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
29971    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
29972    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
29973    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
29974    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
29975    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
29976    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
29977    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
29978    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
29979    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
29980    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
29981    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
29982    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
29983    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
29984    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
29985    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
29986    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
29987    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
29988    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
29989    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
29990    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
29991    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
29992    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
29993    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
29994 
29995    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29996    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29997 
29998    ---------------------------------------------------------------------------------------------------------------
29999    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30000    ---------------------------------------------------------------------------------------------------------------
30001    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30002 
30003    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30004    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30005 
30006    IF xla_accounting_cache_pkg.GetValueChar
30007          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30008          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30009    AND l_bflow_method_code = 'PRIOR_ENTRY'
30010 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30011    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30012          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30013        )
30014    THEN
30015          xla_ae_lines_pkg.BflowUpgEntry
30016            (p_business_method_code    => l_bflow_method_code
30017            ,p_business_class_code     => l_bflow_class_code
30018            ,p_balance_type            => l_balance_type_code);
30019    ELSE
30020       NULL;
30021 -- No business flow processing for business flow method of NONE.
30022    END IF;
30023 
30024    --
30025    -- call analytical criteria
30026    --
30027    
30028    --
30029    -- call description
30030    --
30031    
30032 xla_ae_lines_pkg.SetLineDescription(
30033    p_ae_header_id => l_ae_header_id
30034   ,p_description  => Description_2 (
30035      p_application_id         => p_application_id
30036    , p_ae_header_id           => l_ae_header_id 
30037 , p_source_3 => p_source_3
30038 , p_source_4 => p_source_4
30039 , p_source_5 => p_source_5
30040 , p_source_6 => p_source_6
30041    )
30042 );
30043 
30044 
30045    --
30046    -- call ADRs
30047    -- Bug 4922099
30048    --
30049    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30050         (NVL(l_actual_upg_option, 'N') = 'O') OR
30051         (NVL(l_enc_upg_option, 'N') = 'O')
30052       )
30053    THEN
30054    NULL;
30055    --
30056    --
30057    
30058   l_ccid := AcctDerRule_6(
30059            p_application_id           => p_application_id
30060          , p_ae_header_id             => l_ae_header_id 
30061 , p_source_11 => p_source_11
30062          , x_transaction_coa_id       => l_adr_transaction_coa_id
30063          , x_accounting_coa_id        => l_adr_accounting_coa_id
30064          , x_value_type_code          => l_adr_value_type_code
30065          , p_side                     => 'NA'
30066    );
30067 
30068    xla_ae_lines_pkg.set_ccid(
30069     p_code_combination_id          => l_ccid
30070   , p_value_type_code              => l_adr_value_type_code
30071   , p_transaction_coa_id           => l_adr_transaction_coa_id
30072   , p_accounting_coa_id            => l_adr_accounting_coa_id
30073   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
30074   , p_adr_type_code                => 'S'
30075   , p_component_type               => l_component_type
30076   , p_component_code               => l_component_code
30077   , p_component_type_code          => l_component_type_code
30078   , p_component_appl_id            => l_component_appl_id
30079   , p_amb_context_code             => l_amb_context_code
30080   , p_side                         => 'NA'
30081   );
30082 
30083 
30084    --
30085    --
30086    END IF;
30087    --
30088    -- Bug 4922099
30089    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30090           (NVL(l_enc_upg_option, 'N') = 'O')
30091         ) AND
30092         (l_bflow_method_code = 'PRIOR_ENTRY')
30093       )
30094    THEN
30095       IF
30096       --
30097       1 = 2
30098       --
30099       THEN
30100       xla_accounting_err_pkg.build_message
30101                                     (p_appli_s_name            => 'XLA'
30102                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30103                                     ,p_token_1                 => 'LINE_NUMBER'
30104                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30105                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30106                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30107                                                                              l_component_type
30108                                                                             ,l_component_code
30109                                                                             ,l_component_type_code
30110                                                                             ,l_component_appl_id
30111                                                                             ,l_amb_context_code
30112                                                                             ,l_entity_code
30113                                                                             ,l_event_class_code
30114                                                                            )
30115                                     ,p_token_3                 => 'OWNER'
30116                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30117                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30118                                                                           ,p_lookup_code    => l_component_type_code
30119                                                                          )
30120                                     ,p_token_4                 => 'PRODUCT_NAME'
30121                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30122                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30123                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30124                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30125                                     ,p_ae_header_id            =>  NULL
30126                                        );
30127 
30128         IF (C_LEVEL_ERROR>= g_log_level) THEN
30129                  trace
30130                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30131                       ,p_level    => C_LEVEL_ERROR
30132                       ,p_module   => l_log_module);
30133         END IF;
30134       END IF;
30135    END IF;
30136    --
30137    --
30138    ------------------------------------------------------------------------------------------------
30139    -- 4219869 Business Flow
30140    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30141    -- Prior Entry.  Currently, the following code is always generated.
30142    ------------------------------------------------------------------------------------------------
30143    XLA_AE_LINES_PKG.ValidateCurrentLine;
30144 
30145    ------------------------------------------------------------------------------------
30146    -- 4219869 Business Flow
30147    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30148    ------------------------------------------------------------------------------------
30149    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30150 
30151    ----------------------------------------------------------------------------------
30152    -- 4219869 Business Flow
30153    -- Update journal entry status -- Need to generate this within IF <condition>
30154    ----------------------------------------------------------------------------------
30155    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30156          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30157          ,p_balance_type_code => l_balance_type_code
30158          );
30159 
30160    -------------------------------------------------------------------------------------------
30161    -- 4262811 - Generate the Accrual Reversal lines
30162    -------------------------------------------------------------------------------------------
30163    BEGIN
30164       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30165                               (g_array_event(p_event_id).array_value_num('header_index'));
30166       IF l_acc_rev_flag IS NULL THEN
30167          l_acc_rev_flag := 'N';
30168       END IF;
30169    EXCEPTION
30170       WHEN OTHERS THEN
30171          l_acc_rev_flag := 'N';
30172    END;
30173    --
30174    IF (l_acc_rev_flag = 'Y') THEN
30175 
30176        -- 4645092  ------------------------------------------------------------------------------
30177        -- To allow MPA report to determine if it should generate report process
30178        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30179        ------------------------------------------------------------------------------------------
30180 
30181        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30182        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30183 
30184        --
30185        -- Update the line information that should be overwritten
30186        --
30187        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30188                                          p_header_num   => 1);
30189        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30190 
30191        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30192 
30193        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30194           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30195        END IF;
30196 
30197       --
30198       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30199       --
30200       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30201           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30202       ELSE
30203           ---------------------------------------------------------------------------------------------------
30204           -- 4262811a Switch Sign
30205           ---------------------------------------------------------------------------------------------------
30206           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30207           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30208                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30209           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30210                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30211           -- 5132302
30212           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30213                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30214 
30215       END IF;
30216 
30217       -- 4955764
30218       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30219       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30220 
30221 
30222       XLA_AE_LINES_PKG.ValidateCurrentLine;
30223       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30224 
30225       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30226                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30227                ,p_balance_type_code => l_balance_type_code);
30228 
30229    END IF;
30230 
30231    -----------------------------------------------------------------------------------------
30232    -- 4262811 Multiperiod Accounting
30233    -----------------------------------------------------------------------------------------
30234      -- No MPA option is assigned.
30235 
30236 
30237 END IF;
30238 END IF;
30239 --
30240 
30241 --
30242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30243    trace
30244       (p_msg      => 'END of AcctLineType_55'
30245       ,p_level    => C_LEVEL_PROCEDURE
30246       ,p_module   => l_log_module);
30247 END IF;
30248 --
30249 EXCEPTION
30250   WHEN xla_exceptions_pkg.application_exception THEN
30251       RAISE;
30252   WHEN OTHERS THEN
30253        xla_exceptions_pkg.raise_message
30254            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_55');
30255 END AcctLineType_55;
30256 --
30257 
30258 ---------------------------------------
30259 --
30260 -- PRIVATE FUNCTION
30261 --         AcctLineType_56
30262 --
30263 ---------------------------------------
30264 PROCEDURE AcctLineType_56 (
30265   p_application_id        IN NUMBER
30266  ,p_event_id              IN NUMBER
30267  ,p_calculate_acctd_flag  IN VARCHAR2
30268  ,p_calculate_g_l_flag    IN VARCHAR2
30269  ,p_actual_flag           IN OUT VARCHAR2
30270  ,p_balance_type_code     OUT VARCHAR2
30271  ,p_gain_or_loss_ref      OUT VARCHAR2
30272  
30273 --Project Name
30274  , p_source_3            IN VARCHAR2
30275 --Task Name
30276  , p_source_4            IN VARCHAR2
30277 --Project Expenditure Organization Identifier
30278  , p_source_5            IN NUMBER
30279 --Expenditure Type
30280  , p_source_6            IN VARCHAR2
30281 --Document Type
30282  , p_source_9            IN VARCHAR2
30283 --Budget Account
30284  , p_source_11            IN NUMBER
30285 --Main Or Backing Code
30286  , p_source_13            IN VARCHAR2
30287 --Burden Record Identifier
30288  , p_source_14            IN VARCHAR2
30289  , p_source_14_meaning    IN VARCHAR2
30290 --Burden Amount Display Method
30291  , p_source_15            IN VARCHAR2
30292 --Accounting Reversal Flag
30293  , p_source_16            IN VARCHAR2
30294 --Allocated to Application Identifier
30295  , p_source_17            IN NUMBER
30296 --Allocated to Distribution Type
30297  , p_source_18            IN VARCHAR2
30298 --Allocated to Entity Code
30299  , p_source_19            IN VARCHAR2
30300 --Allocated to First Distribution Identifier
30301  , p_source_20            IN NUMBER
30302 --Allocated to First System Transaction Identifier
30303  , p_source_21            IN NUMBER
30304 --Purchase Order Burden Applied to Application Identifier
30305  , p_source_23            IN NUMBER
30306 --PO Distribution Type
30307  , p_source_24            IN VARCHAR2
30308 --Purchase Order Burden Applied to Entity Code
30309  , p_source_25            IN VARCHAR2
30310 --Purchase Order Burden Applied to First Distribution Identifier
30311  , p_source_26            IN NUMBER
30312 --Purchase Order Burden Applied to First System Transaction Identifier
30313  , p_source_27            IN NUMBER
30314 --Purchase Order Burden Applied to Second Distribution Identifier
30315  , p_source_28            IN VARCHAR2
30316 --PO Distribution Identifier
30317  , p_source_29            IN NUMBER
30318 --Line Type Name
30319  , p_source_30            IN VARCHAR2
30320 --Encumbrance Upgrade Credit Accounting Class
30321  , p_source_31            IN VARCHAR2
30322 --Encumbrance Upgrade Credit Account
30323  , p_source_32            IN NUMBER
30324 --Entered Amount
30325  , p_source_33            IN NUMBER
30326 --Currency Code
30327  , p_source_34            IN VARCHAR2
30328 --Accounted Amount
30329  , p_source_35            IN NUMBER
30330 --Encumbrance Upgrade Debit Accounting Class
30331  , p_source_36            IN VARCHAR2
30332 --Encumbrance Upgrade Debit Account
30333  , p_source_37            IN NUMBER
30334 --Use Encumbrances Upgrade Attributes Flag
30335  , p_source_38            IN VARCHAR2
30336 --Encumbrance Upgrade Credit Encumbrance Type
30337  , p_source_39            IN NUMBER
30338 --Encumbrance Upgrade Debit Encumbrance Type
30339  , p_source_40            IN NUMBER
30340 )
30341 IS
30342 
30343 l_component_type              VARCHAR2(80);
30344 l_component_code              VARCHAR2(30);
30345 l_component_type_code         VARCHAR2(1);
30346 l_component_appl_id           INTEGER;
30347 l_amb_context_code            VARCHAR2(30);
30348 l_entity_code                 VARCHAR2(30);
30349 l_event_class_code            VARCHAR2(30);
30350 l_ae_header_id                NUMBER;
30351 l_event_type_code             VARCHAR2(30);
30352 l_line_definition_code        VARCHAR2(30);
30353 l_line_definition_owner_code  VARCHAR2(1);
30354 --
30355 -- adr variables
30356 l_segment                     VARCHAR2(30);
30357 l_ccid                        NUMBER;
30358 l_adr_transaction_coa_id      NUMBER;
30359 l_adr_accounting_coa_id       NUMBER;
30360 l_adr_flexfield_segment_code  VARCHAR2(30);
30361 l_adr_flex_value_set_id       NUMBER;
30362 l_adr_value_type_code         VARCHAR2(30);
30363 l_adr_value_combination_id    NUMBER;
30364 l_adr_value_segment_code      VARCHAR2(30);
30365 
30366 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30367 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30368 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30369 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30370 
30371 -- 4262811 Variables ------------------------------------------------------------------------------------------
30372 l_entered_amt_idx             NUMBER;
30373 l_accted_amt_idx              NUMBER;
30374 l_acc_rev_flag                VARCHAR2(1);
30375 l_accrual_line_num            NUMBER;
30376 l_tmp_amt                     NUMBER;
30377 l_acc_rev_natural_side_code   VARCHAR2(1);
30378 
30379 l_num_entries                 NUMBER;
30380 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30381 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30382 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30383 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30384 l_recog_line_1                NUMBER;
30385 l_recog_line_2                NUMBER;
30386 
30387 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30388 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30389 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30390 
30391 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30392 
30393 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30394 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30395 
30396 ---------------------------------------------------------------------------------------------------------------
30397 
30398 
30399 --
30400 -- bulk performance
30401 --
30402 l_balance_type_code           VARCHAR2(1);
30403 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30404 l_log_module                  VARCHAR2(240);
30405 
30406 --
30407 -- Upgrade strategy
30408 --
30409 l_actual_upg_option           VARCHAR2(1);
30410 l_enc_upg_option           VARCHAR2(1);
30411 
30412 --
30413 BEGIN
30414 --
30415 IF g_log_enabled THEN
30416       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
30417 END IF;
30418 --
30419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30420 
30421       trace
30422          (p_msg      => 'BEGIN of AcctLineType_56'
30423          ,p_level    => C_LEVEL_PROCEDURE
30424          ,p_module   => l_log_module);
30425 
30426 END IF;
30427 --
30428 l_component_type             := 'AMB_JLT';
30429 l_component_code             := 'REOPEN_FINALMATCH_POBURDENDENC';
30430 l_component_type_code        := 'S';
30431 l_component_appl_id          :=  201;
30432 l_amb_context_code           := 'DEFAULT';
30433 l_entity_code                := 'PURCHASE_ORDER';
30434 l_event_class_code           := 'PO_BURDEN';
30435 l_event_type_code            := 'PO_BURDEN_ALL';
30436 l_line_definition_owner_code := 'S';
30437 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
30438 --
30439 l_balance_type_code          := 'E';
30440 l_segment                     := NULL;
30441 l_ccid                        := NULL;
30442 l_adr_transaction_coa_id      := NULL;
30443 l_adr_accounting_coa_id       := NULL;
30444 l_adr_flexfield_segment_code  := NULL;
30445 l_adr_flex_value_set_id       := NULL;
30446 l_adr_value_type_code         := NULL;
30447 l_adr_value_combination_id    := NULL;
30448 l_adr_value_segment_code      := NULL;
30449 
30450 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30451 l_bflow_class_code           := '';    -- 4219869 Business Flow
30452 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30453 l_budgetary_control_flag     := 'Y';
30454 
30455 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30456 l_bflow_applied_to_amt       := NULL; -- 5132302
30457 l_entered_amt_idx            := NULL;          -- 4262811
30458 l_accted_amt_idx             := NULL;          -- 4262811
30459 l_acc_rev_flag               := NULL;          -- 4262811
30460 l_accrual_line_num           := NULL;          -- 4262811
30461 l_tmp_amt                    := NULL;          -- 4262811
30462 --
30463  
30464 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30465     l_balance_type_code <> 'B' THEN
30466 IF NVL(
30467 xla_ae_sources_pkg.GetSystemSourceChar(
30468    p_source_code           => 'XLA_EVENT_TYPE_CODE'
30469  , p_source_type_code      => 'Y'
30470  , p_source_application_id =>  602
30471 ),'
30472 ') =  'PO_BURDEN_REOPEN_FINAL_MATCH' AND 
30473 NVL(p_source_13,'
30474 ') =  'M' AND 
30475 (NVL(p_source_14,'
30476 ') =  'N' OR 
30477 NVL(p_source_14,'
30478 ') =  'O') AND 
30479 NVL(p_source_9,'
30480 ') =  'PO' AND 
30481 NVL(p_source_15,'
30482 ') =  'S'
30483  THEN 
30484 
30485    --
30486    XLA_AE_LINES_PKG.SetNewLine;
30487 
30488    p_balance_type_code          := l_balance_type_code;
30489    -- set the flag so later we will know whether the gain loss line needs to be created
30490    
30491    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30492      p_actual_flag :='A';
30493    END IF;
30494 
30495    --
30496    -- bulk performance
30497    --
30498    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30499                                       p_header_num   => 0); -- 4262811
30500    --
30501    -- set accounting line options
30502    --
30503    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30504            p_natural_side_code          => 'D'
30505          , p_gain_or_loss_flag          => 'N'
30506          , p_gl_transfer_mode_code      => 'S'
30507          , p_acct_entry_type_code       => 'E'
30508          , p_switch_side_flag           => 'N'
30509          , p_merge_duplicate_code       => 'N'
30510          );
30511    --
30512    l_acc_rev_natural_side_code := 'C';  -- 4262811
30513    -- 
30514    --
30515    -- set accounting line type info
30516    --
30517    xla_ae_lines_pkg.SetAcctLineType
30518       (p_component_type             => l_component_type
30519       ,p_event_type_code            => l_event_type_code
30520       ,p_line_definition_owner_code => l_line_definition_owner_code
30521       ,p_line_definition_code       => l_line_definition_code
30522       ,p_accounting_line_code       => l_component_code
30523       ,p_accounting_line_type_code  => l_component_type_code
30524       ,p_accounting_line_appl_id    => l_component_appl_id
30525       ,p_amb_context_code           => l_amb_context_code
30526       ,p_entity_code                => l_entity_code
30527       ,p_event_class_code           => l_event_class_code);
30528    --
30529    -- set accounting class
30530    --
30531    xla_ae_lines_pkg.SetAcctClass(
30532            p_accounting_class_code  => 'PO_PA_BURDENED'
30533          , p_ae_header_id           => l_ae_header_id
30534          );
30535 
30536    --
30537    -- set rounding class
30538    --
30539    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30540                       'PO_PA_BURDENED';
30541 
30542    --
30543    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30544    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30545    --
30546    -- bulk performance
30547    --
30548    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30549 
30550    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30551       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30552 
30553    -- 4955764
30554    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30555       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30556 
30557    -- 4458381 Public Sector Enh
30558       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
30559    --
30560    -- set accounting attributes for the line type
30561    --
30562    l_entered_amt_idx := 27;
30563    l_accted_amt_idx  := 29;
30564    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30565    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30566    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
30567    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
30568    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
30569    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
30570    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
30571    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
30572    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
30573    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
30574    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
30575    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
30576    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
30577    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
30578    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
30579    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30580    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
30581    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
30582    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
30583    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
30584    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
30585    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30586    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
30587    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
30588    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
30589    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
30590    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
30591    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
30592    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
30593    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
30594    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
30595    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
30596    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
30597    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
30598    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
30599    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
30600    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
30601    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
30602    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
30603    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
30604    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
30605    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
30606    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
30607    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
30608    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
30609    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
30610    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
30611    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
30612    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
30613    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
30614    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
30615    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
30616    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
30617    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
30618    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
30619    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
30620    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
30621    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
30622    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
30623    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
30624    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
30625    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
30626    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
30627    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
30628    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
30629    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
30630    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
30631    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
30632    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
30633 
30634    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30635    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30636 
30637    ---------------------------------------------------------------------------------------------------------------
30638    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30639    ---------------------------------------------------------------------------------------------------------------
30640    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30641 
30642    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30643    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30644 
30645    IF xla_accounting_cache_pkg.GetValueChar
30646          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30647          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30648    AND l_bflow_method_code = 'PRIOR_ENTRY'
30649 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30650    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30651          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30652        )
30653    THEN
30654          xla_ae_lines_pkg.BflowUpgEntry
30655            (p_business_method_code    => l_bflow_method_code
30656            ,p_business_class_code     => l_bflow_class_code
30657            ,p_balance_type            => l_balance_type_code);
30658    ELSE
30659       NULL;
30660 -- No business flow processing for business flow method of NONE.
30661    END IF;
30662 
30663    --
30664    -- call analytical criteria
30665    --
30666    
30667    --
30668    -- call description
30669    --
30670    
30671 xla_ae_lines_pkg.SetLineDescription(
30672    p_ae_header_id => l_ae_header_id
30673   ,p_description  => Description_2 (
30674      p_application_id         => p_application_id
30675    , p_ae_header_id           => l_ae_header_id 
30676 , p_source_3 => p_source_3
30677 , p_source_4 => p_source_4
30678 , p_source_5 => p_source_5
30679 , p_source_6 => p_source_6
30680    )
30681 );
30682 
30683 
30684    --
30685    -- call ADRs
30686    -- Bug 4922099
30687    --
30688    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30689         (NVL(l_actual_upg_option, 'N') = 'O') OR
30690         (NVL(l_enc_upg_option, 'N') = 'O')
30691       )
30692    THEN
30693    NULL;
30694    --
30695    --
30696    
30697   l_ccid := AcctDerRule_6(
30698            p_application_id           => p_application_id
30699          , p_ae_header_id             => l_ae_header_id 
30700 , p_source_11 => p_source_11
30701          , x_transaction_coa_id       => l_adr_transaction_coa_id
30702          , x_accounting_coa_id        => l_adr_accounting_coa_id
30703          , x_value_type_code          => l_adr_value_type_code
30704          , p_side                     => 'NA'
30705    );
30706 
30707    xla_ae_lines_pkg.set_ccid(
30708     p_code_combination_id          => l_ccid
30709   , p_value_type_code              => l_adr_value_type_code
30710   , p_transaction_coa_id           => l_adr_transaction_coa_id
30711   , p_accounting_coa_id            => l_adr_accounting_coa_id
30712   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
30713   , p_adr_type_code                => 'S'
30714   , p_component_type               => l_component_type
30715   , p_component_code               => l_component_code
30716   , p_component_type_code          => l_component_type_code
30717   , p_component_appl_id            => l_component_appl_id
30718   , p_amb_context_code             => l_amb_context_code
30719   , p_side                         => 'NA'
30720   );
30721 
30722 
30723    --
30724    --
30725    END IF;
30726    --
30727    -- Bug 4922099
30728    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30729           (NVL(l_enc_upg_option, 'N') = 'O')
30730         ) AND
30731         (l_bflow_method_code = 'PRIOR_ENTRY')
30732       )
30733    THEN
30734       IF
30735       --
30736       1 = 2
30737       --
30738       THEN
30739       xla_accounting_err_pkg.build_message
30740                                     (p_appli_s_name            => 'XLA'
30741                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30742                                     ,p_token_1                 => 'LINE_NUMBER'
30743                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30744                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30745                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30746                                                                              l_component_type
30747                                                                             ,l_component_code
30748                                                                             ,l_component_type_code
30749                                                                             ,l_component_appl_id
30750                                                                             ,l_amb_context_code
30751                                                                             ,l_entity_code
30752                                                                             ,l_event_class_code
30753                                                                            )
30754                                     ,p_token_3                 => 'OWNER'
30755                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30756                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30757                                                                           ,p_lookup_code    => l_component_type_code
30758                                                                          )
30759                                     ,p_token_4                 => 'PRODUCT_NAME'
30760                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30761                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30762                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30763                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30764                                     ,p_ae_header_id            =>  NULL
30765                                        );
30766 
30767         IF (C_LEVEL_ERROR>= g_log_level) THEN
30768                  trace
30769                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30770                       ,p_level    => C_LEVEL_ERROR
30771                       ,p_module   => l_log_module);
30772         END IF;
30773       END IF;
30774    END IF;
30775    --
30776    --
30777    ------------------------------------------------------------------------------------------------
30778    -- 4219869 Business Flow
30779    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30780    -- Prior Entry.  Currently, the following code is always generated.
30781    ------------------------------------------------------------------------------------------------
30782    XLA_AE_LINES_PKG.ValidateCurrentLine;
30783 
30784    ------------------------------------------------------------------------------------
30785    -- 4219869 Business Flow
30786    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30787    ------------------------------------------------------------------------------------
30788    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30789 
30790    ----------------------------------------------------------------------------------
30791    -- 4219869 Business Flow
30792    -- Update journal entry status -- Need to generate this within IF <condition>
30793    ----------------------------------------------------------------------------------
30794    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30795          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30796          ,p_balance_type_code => l_balance_type_code
30797          );
30798 
30799    -------------------------------------------------------------------------------------------
30800    -- 4262811 - Generate the Accrual Reversal lines
30801    -------------------------------------------------------------------------------------------
30802    BEGIN
30803       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30804                               (g_array_event(p_event_id).array_value_num('header_index'));
30805       IF l_acc_rev_flag IS NULL THEN
30806          l_acc_rev_flag := 'N';
30807       END IF;
30808    EXCEPTION
30809       WHEN OTHERS THEN
30810          l_acc_rev_flag := 'N';
30811    END;
30812    --
30813    IF (l_acc_rev_flag = 'Y') THEN
30814 
30815        -- 4645092  ------------------------------------------------------------------------------
30816        -- To allow MPA report to determine if it should generate report process
30817        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30818        ------------------------------------------------------------------------------------------
30819 
30820        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30821        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30822 
30823        --
30824        -- Update the line information that should be overwritten
30825        --
30826        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30827                                          p_header_num   => 1);
30828        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30829 
30830        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30831 
30832        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30833           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30834        END IF;
30835 
30836       --
30837       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30838       --
30839       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30840           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30841       ELSE
30842           ---------------------------------------------------------------------------------------------------
30843           -- 4262811a Switch Sign
30844           ---------------------------------------------------------------------------------------------------
30845           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30846           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30847                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30848           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30849                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30850           -- 5132302
30851           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30852                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30853 
30854       END IF;
30855 
30856       -- 4955764
30857       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30858       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30859 
30860 
30861       XLA_AE_LINES_PKG.ValidateCurrentLine;
30862       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30863 
30864       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30865                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30866                ,p_balance_type_code => l_balance_type_code);
30867 
30868    END IF;
30869 
30870    -----------------------------------------------------------------------------------------
30871    -- 4262811 Multiperiod Accounting
30872    -----------------------------------------------------------------------------------------
30873      -- No MPA option is assigned.
30874 
30875 
30876 END IF;
30877 END IF;
30878 --
30879 
30880 --
30881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30882    trace
30883       (p_msg      => 'END of AcctLineType_56'
30884       ,p_level    => C_LEVEL_PROCEDURE
30885       ,p_module   => l_log_module);
30886 END IF;
30887 --
30888 EXCEPTION
30889   WHEN xla_exceptions_pkg.application_exception THEN
30890       RAISE;
30891   WHEN OTHERS THEN
30892        xla_exceptions_pkg.raise_message
30893            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_56');
30894 END AcctLineType_56;
30895 --
30896 
30897 ---------------------------------------
30898 --
30899 -- PRIVATE FUNCTION
30900 --         AcctLineType_57
30901 --
30902 ---------------------------------------
30903 PROCEDURE AcctLineType_57 (
30904   p_application_id        IN NUMBER
30905  ,p_event_id              IN NUMBER
30906  ,p_calculate_acctd_flag  IN VARCHAR2
30907  ,p_calculate_g_l_flag    IN VARCHAR2
30908  ,p_actual_flag           IN OUT VARCHAR2
30909  ,p_balance_type_code     OUT VARCHAR2
30910  ,p_gain_or_loss_ref      OUT VARCHAR2
30911  
30912 --Project Name
30913  , p_source_3            IN VARCHAR2
30914 --Task Name
30915  , p_source_4            IN VARCHAR2
30916 --Project Expenditure Organization Identifier
30917  , p_source_5            IN NUMBER
30918 --Expenditure Type
30919  , p_source_6            IN VARCHAR2
30920 --Document Type
30921  , p_source_9            IN VARCHAR2
30922 --Budget Account
30923  , p_source_11            IN NUMBER
30924 --Main Or Backing Code
30925  , p_source_13            IN VARCHAR2
30926 --Burden Record Identifier
30927  , p_source_14            IN VARCHAR2
30928  , p_source_14_meaning    IN VARCHAR2
30929 --Burden Amount Display Method
30930  , p_source_15            IN VARCHAR2
30931 --Accounting Reversal Flag
30932  , p_source_16            IN VARCHAR2
30933 --Allocated to Application Identifier
30934  , p_source_17            IN NUMBER
30935 --Allocated to Distribution Type
30936  , p_source_18            IN VARCHAR2
30937 --Allocated to Entity Code
30938  , p_source_19            IN VARCHAR2
30939 --Allocated to First Distribution Identifier
30940  , p_source_20            IN NUMBER
30941 --Allocated to First System Transaction Identifier
30942  , p_source_21            IN NUMBER
30943 --Purchase Order Burden Applied to Application Identifier
30944  , p_source_23            IN NUMBER
30945 --PO Distribution Type
30946  , p_source_24            IN VARCHAR2
30947 --Purchase Order Burden Applied to Entity Code
30948  , p_source_25            IN VARCHAR2
30949 --Purchase Order Burden Applied to First Distribution Identifier
30950  , p_source_26            IN NUMBER
30951 --Purchase Order Burden Applied to First System Transaction Identifier
30952  , p_source_27            IN NUMBER
30953 --Purchase Order Burden Applied to Second Distribution Identifier
30954  , p_source_28            IN VARCHAR2
30955 --PO Distribution Identifier
30956  , p_source_29            IN NUMBER
30957 --Line Type Name
30958  , p_source_30            IN VARCHAR2
30959 --Encumbrance Upgrade Credit Accounting Class
30960  , p_source_31            IN VARCHAR2
30961 --Encumbrance Upgrade Credit Account
30962  , p_source_32            IN NUMBER
30963 --Entered Amount
30964  , p_source_33            IN NUMBER
30965 --Currency Code
30966  , p_source_34            IN VARCHAR2
30967 --Accounted Amount
30968  , p_source_35            IN NUMBER
30969 --Encumbrance Upgrade Debit Accounting Class
30970  , p_source_36            IN VARCHAR2
30971 --Encumbrance Upgrade Debit Account
30972  , p_source_37            IN NUMBER
30973 --Use Encumbrances Upgrade Attributes Flag
30974  , p_source_38            IN VARCHAR2
30975 --Encumbrance Upgrade Credit Encumbrance Type
30976  , p_source_39            IN NUMBER
30977 --Encumbrance Upgrade Debit Encumbrance Type
30978  , p_source_40            IN NUMBER
30979 )
30980 IS
30981 
30982 l_component_type              VARCHAR2(80);
30983 l_component_code              VARCHAR2(30);
30984 l_component_type_code         VARCHAR2(1);
30985 l_component_appl_id           INTEGER;
30986 l_amb_context_code            VARCHAR2(30);
30987 l_entity_code                 VARCHAR2(30);
30988 l_event_class_code            VARCHAR2(30);
30989 l_ae_header_id                NUMBER;
30990 l_event_type_code             VARCHAR2(30);
30991 l_line_definition_code        VARCHAR2(30);
30992 l_line_definition_owner_code  VARCHAR2(1);
30993 --
30994 -- adr variables
30995 l_segment                     VARCHAR2(30);
30996 l_ccid                        NUMBER;
30997 l_adr_transaction_coa_id      NUMBER;
30998 l_adr_accounting_coa_id       NUMBER;
30999 l_adr_flexfield_segment_code  VARCHAR2(30);
31000 l_adr_flex_value_set_id       NUMBER;
31001 l_adr_value_type_code         VARCHAR2(30);
31002 l_adr_value_combination_id    NUMBER;
31003 l_adr_value_segment_code      VARCHAR2(30);
31004 
31005 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31006 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31007 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31008 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31009 
31010 -- 4262811 Variables ------------------------------------------------------------------------------------------
31011 l_entered_amt_idx             NUMBER;
31012 l_accted_amt_idx              NUMBER;
31013 l_acc_rev_flag                VARCHAR2(1);
31014 l_accrual_line_num            NUMBER;
31015 l_tmp_amt                     NUMBER;
31016 l_acc_rev_natural_side_code   VARCHAR2(1);
31017 
31018 l_num_entries                 NUMBER;
31019 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31020 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31021 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31022 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31023 l_recog_line_1                NUMBER;
31024 l_recog_line_2                NUMBER;
31025 
31026 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31027 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31028 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31029 
31030 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31031 
31032 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31033 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31034 
31035 ---------------------------------------------------------------------------------------------------------------
31036 
31037 
31038 --
31039 -- bulk performance
31040 --
31041 l_balance_type_code           VARCHAR2(1);
31042 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31043 l_log_module                  VARCHAR2(240);
31044 
31045 --
31046 -- Upgrade strategy
31047 --
31048 l_actual_upg_option           VARCHAR2(1);
31049 l_enc_upg_option           VARCHAR2(1);
31050 
31051 --
31052 BEGIN
31053 --
31054 IF g_log_enabled THEN
31055       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
31056 END IF;
31057 --
31058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31059 
31060       trace
31061          (p_msg      => 'BEGIN of AcctLineType_57'
31062          ,p_level    => C_LEVEL_PROCEDURE
31063          ,p_module   => l_log_module);
31064 
31065 END IF;
31066 --
31067 l_component_type             := 'AMB_JLT';
31068 l_component_code             := 'REOPEN_FINALMATCH_POBURDENENC';
31069 l_component_type_code        := 'S';
31070 l_component_appl_id          :=  201;
31071 l_amb_context_code           := 'DEFAULT';
31072 l_entity_code                := 'PURCHASE_ORDER';
31073 l_event_class_code           := 'PO_BURDEN';
31074 l_event_type_code            := 'PO_BURDEN_ALL';
31075 l_line_definition_owner_code := 'S';
31076 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
31077 --
31078 l_balance_type_code          := 'E';
31079 l_segment                     := NULL;
31080 l_ccid                        := NULL;
31081 l_adr_transaction_coa_id      := NULL;
31082 l_adr_accounting_coa_id       := NULL;
31083 l_adr_flexfield_segment_code  := NULL;
31084 l_adr_flex_value_set_id       := NULL;
31085 l_adr_value_type_code         := NULL;
31086 l_adr_value_combination_id    := NULL;
31087 l_adr_value_segment_code      := NULL;
31088 
31089 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31090 l_bflow_class_code           := '';    -- 4219869 Business Flow
31091 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31092 l_budgetary_control_flag     := 'Y';
31093 
31094 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31095 l_bflow_applied_to_amt       := NULL; -- 5132302
31096 l_entered_amt_idx            := NULL;          -- 4262811
31097 l_accted_amt_idx             := NULL;          -- 4262811
31098 l_acc_rev_flag               := NULL;          -- 4262811
31099 l_accrual_line_num           := NULL;          -- 4262811
31100 l_tmp_amt                    := NULL;          -- 4262811
31101 --
31102  
31103 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31104     l_balance_type_code <> 'B' THEN
31105 IF NVL(
31106 xla_ae_sources_pkg.GetSystemSourceChar(
31107    p_source_code           => 'XLA_EVENT_TYPE_CODE'
31108  , p_source_type_code      => 'Y'
31109  , p_source_application_id =>  602
31110 ),'
31111 ') =  'PO_BURDEN_REOPEN_FINAL_MATCH' AND 
31112 NVL(p_source_13,'
31113 ') =  'M' AND 
31114 NVL(p_source_14,'
31115 ') =  'O' AND 
31116 NVL(p_source_9,'
31117 ') =  'PO' AND 
31118 NVL(p_source_15,'
31119 ') =  'D'
31120  THEN 
31121 
31122    --
31123    XLA_AE_LINES_PKG.SetNewLine;
31124 
31125    p_balance_type_code          := l_balance_type_code;
31126    -- set the flag so later we will know whether the gain loss line needs to be created
31127    
31128    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31129      p_actual_flag :='A';
31130    END IF;
31131 
31132    --
31133    -- bulk performance
31134    --
31135    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31136                                       p_header_num   => 0); -- 4262811
31137    --
31138    -- set accounting line options
31139    --
31140    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31141            p_natural_side_code          => 'D'
31142          , p_gain_or_loss_flag          => 'N'
31143          , p_gl_transfer_mode_code      => 'S'
31144          , p_acct_entry_type_code       => 'E'
31145          , p_switch_side_flag           => 'N'
31146          , p_merge_duplicate_code       => 'N'
31147          );
31148    --
31149    l_acc_rev_natural_side_code := 'C';  -- 4262811
31150    -- 
31151    --
31152    -- set accounting line type info
31153    --
31154    xla_ae_lines_pkg.SetAcctLineType
31155       (p_component_type             => l_component_type
31156       ,p_event_type_code            => l_event_type_code
31157       ,p_line_definition_owner_code => l_line_definition_owner_code
31158       ,p_line_definition_code       => l_line_definition_code
31159       ,p_accounting_line_code       => l_component_code
31160       ,p_accounting_line_type_code  => l_component_type_code
31161       ,p_accounting_line_appl_id    => l_component_appl_id
31162       ,p_amb_context_code           => l_amb_context_code
31163       ,p_entity_code                => l_entity_code
31164       ,p_event_class_code           => l_event_class_code);
31165    --
31166    -- set accounting class
31167    --
31168    xla_ae_lines_pkg.SetAcctClass(
31169            p_accounting_class_code  => 'PO_PA_BURDEN'
31170          , p_ae_header_id           => l_ae_header_id
31171          );
31172 
31173    --
31174    -- set rounding class
31175    --
31176    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31177                       'PO_PA_BURDEN';
31178 
31179    --
31180    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31181    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31182    --
31183    -- bulk performance
31184    --
31185    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31186 
31187    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31188       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31189 
31190    -- 4955764
31191    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31192       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31193 
31194    -- 4458381 Public Sector Enh
31195       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
31196    --
31197    -- set accounting attributes for the line type
31198    --
31199    l_entered_amt_idx := 27;
31200    l_accted_amt_idx  := 29;
31201    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31202    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31203    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
31204    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
31205    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
31206    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
31207    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
31208    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
31209    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
31210    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
31211    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
31212    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
31213    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
31214    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
31215    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
31216    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
31217    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
31218    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
31219    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
31220    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
31221    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
31222    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
31223    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
31224    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
31225    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
31226    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
31227    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
31228    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
31229    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
31230    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
31231    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
31232    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
31233    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
31234    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
31235    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
31236    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
31237    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
31238    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
31239    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
31240    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
31241    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
31242    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
31243    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
31244    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
31245    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
31246    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
31247    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
31248    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
31249    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
31250    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
31251    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
31252    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
31253    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
31254    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
31255    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
31256    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
31257    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
31258    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
31259    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
31260    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
31261    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
31262    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
31263    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
31264    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
31265    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
31266    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
31267    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
31268    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
31269    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
31270 
31271    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31272    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31273 
31274    ---------------------------------------------------------------------------------------------------------------
31275    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31276    ---------------------------------------------------------------------------------------------------------------
31277    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31278 
31279    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31280    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31281 
31282    IF xla_accounting_cache_pkg.GetValueChar
31283          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31284          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31285    AND l_bflow_method_code = 'PRIOR_ENTRY'
31286 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31287    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31288          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31289        )
31290    THEN
31291          xla_ae_lines_pkg.BflowUpgEntry
31292            (p_business_method_code    => l_bflow_method_code
31293            ,p_business_class_code     => l_bflow_class_code
31294            ,p_balance_type            => l_balance_type_code);
31295    ELSE
31296       NULL;
31297 -- No business flow processing for business flow method of NONE.
31298    END IF;
31299 
31300    --
31301    -- call analytical criteria
31302    --
31303    
31304    --
31305    -- call description
31306    --
31307    
31308 xla_ae_lines_pkg.SetLineDescription(
31309    p_ae_header_id => l_ae_header_id
31310   ,p_description  => Description_2 (
31311      p_application_id         => p_application_id
31312    , p_ae_header_id           => l_ae_header_id 
31313 , p_source_3 => p_source_3
31314 , p_source_4 => p_source_4
31315 , p_source_5 => p_source_5
31316 , p_source_6 => p_source_6
31317    )
31318 );
31319 
31320 
31321    --
31322    -- call ADRs
31323    -- Bug 4922099
31324    --
31325    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31326         (NVL(l_actual_upg_option, 'N') = 'O') OR
31327         (NVL(l_enc_upg_option, 'N') = 'O')
31328       )
31329    THEN
31330    NULL;
31331    --
31332    --
31333    
31334   l_ccid := AcctDerRule_7(
31335            p_application_id           => p_application_id
31336          , p_ae_header_id             => l_ae_header_id 
31337 , p_source_11 => p_source_11
31338          , x_transaction_coa_id       => l_adr_transaction_coa_id
31339          , x_accounting_coa_id        => l_adr_accounting_coa_id
31340          , x_value_type_code          => l_adr_value_type_code
31341          , p_side                     => 'NA'
31342    );
31343 
31344    xla_ae_lines_pkg.set_ccid(
31345     p_code_combination_id          => l_ccid
31346   , p_value_type_code              => l_adr_value_type_code
31347   , p_transaction_coa_id           => l_adr_transaction_coa_id
31348   , p_accounting_coa_id            => l_adr_accounting_coa_id
31349   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
31350   , p_adr_type_code                => 'S'
31351   , p_component_type               => l_component_type
31352   , p_component_code               => l_component_code
31353   , p_component_type_code          => l_component_type_code
31354   , p_component_appl_id            => l_component_appl_id
31355   , p_amb_context_code             => l_amb_context_code
31356   , p_side                         => 'NA'
31357   );
31358 
31359 
31360    --
31361    --
31362    END IF;
31363    --
31364    -- Bug 4922099
31365    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31366           (NVL(l_enc_upg_option, 'N') = 'O')
31367         ) AND
31368         (l_bflow_method_code = 'PRIOR_ENTRY')
31369       )
31370    THEN
31371       IF
31372       --
31373       1 = 2
31374       --
31375       THEN
31376       xla_accounting_err_pkg.build_message
31377                                     (p_appli_s_name            => 'XLA'
31378                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31379                                     ,p_token_1                 => 'LINE_NUMBER'
31380                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31381                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31382                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31383                                                                              l_component_type
31384                                                                             ,l_component_code
31385                                                                             ,l_component_type_code
31386                                                                             ,l_component_appl_id
31387                                                                             ,l_amb_context_code
31388                                                                             ,l_entity_code
31389                                                                             ,l_event_class_code
31390                                                                            )
31391                                     ,p_token_3                 => 'OWNER'
31392                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31393                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31394                                                                           ,p_lookup_code    => l_component_type_code
31395                                                                          )
31396                                     ,p_token_4                 => 'PRODUCT_NAME'
31397                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31398                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31399                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31400                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31401                                     ,p_ae_header_id            =>  NULL
31402                                        );
31403 
31404         IF (C_LEVEL_ERROR>= g_log_level) THEN
31405                  trace
31406                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31407                       ,p_level    => C_LEVEL_ERROR
31408                       ,p_module   => l_log_module);
31409         END IF;
31410       END IF;
31411    END IF;
31412    --
31413    --
31414    ------------------------------------------------------------------------------------------------
31415    -- 4219869 Business Flow
31416    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31417    -- Prior Entry.  Currently, the following code is always generated.
31418    ------------------------------------------------------------------------------------------------
31419    XLA_AE_LINES_PKG.ValidateCurrentLine;
31420 
31421    ------------------------------------------------------------------------------------
31422    -- 4219869 Business Flow
31423    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31424    ------------------------------------------------------------------------------------
31425    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31426 
31427    ----------------------------------------------------------------------------------
31428    -- 4219869 Business Flow
31429    -- Update journal entry status -- Need to generate this within IF <condition>
31430    ----------------------------------------------------------------------------------
31431    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31432          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31433          ,p_balance_type_code => l_balance_type_code
31434          );
31435 
31436    -------------------------------------------------------------------------------------------
31437    -- 4262811 - Generate the Accrual Reversal lines
31438    -------------------------------------------------------------------------------------------
31439    BEGIN
31440       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31441                               (g_array_event(p_event_id).array_value_num('header_index'));
31442       IF l_acc_rev_flag IS NULL THEN
31443          l_acc_rev_flag := 'N';
31444       END IF;
31445    EXCEPTION
31446       WHEN OTHERS THEN
31447          l_acc_rev_flag := 'N';
31448    END;
31449    --
31450    IF (l_acc_rev_flag = 'Y') THEN
31451 
31452        -- 4645092  ------------------------------------------------------------------------------
31453        -- To allow MPA report to determine if it should generate report process
31454        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31455        ------------------------------------------------------------------------------------------
31456 
31457        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31458        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31459 
31460        --
31461        -- Update the line information that should be overwritten
31462        --
31463        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31464                                          p_header_num   => 1);
31465        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31466 
31467        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31468 
31469        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31470           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31471        END IF;
31472 
31473       --
31474       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31475       --
31476       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31477           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31478       ELSE
31479           ---------------------------------------------------------------------------------------------------
31480           -- 4262811a Switch Sign
31481           ---------------------------------------------------------------------------------------------------
31482           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31483           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31484                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31485           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31486                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31487           -- 5132302
31488           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31489                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31490 
31491       END IF;
31492 
31493       -- 4955764
31494       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31495       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31496 
31497 
31498       XLA_AE_LINES_PKG.ValidateCurrentLine;
31499       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31500 
31501       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31502                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31503                ,p_balance_type_code => l_balance_type_code);
31504 
31505    END IF;
31506 
31507    -----------------------------------------------------------------------------------------
31508    -- 4262811 Multiperiod Accounting
31509    -----------------------------------------------------------------------------------------
31510      -- No MPA option is assigned.
31511 
31512 
31513 END IF;
31514 END IF;
31515 --
31516 
31517 --
31518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31519    trace
31520       (p_msg      => 'END of AcctLineType_57'
31521       ,p_level    => C_LEVEL_PROCEDURE
31522       ,p_module   => l_log_module);
31523 END IF;
31524 --
31525 EXCEPTION
31526   WHEN xla_exceptions_pkg.application_exception THEN
31527       RAISE;
31528   WHEN OTHERS THEN
31529        xla_exceptions_pkg.raise_message
31530            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_57');
31531 END AcctLineType_57;
31532 --
31533 
31534 ---------------------------------------
31535 --
31536 -- PRIVATE FUNCTION
31537 --         AcctLineType_58
31538 --
31539 ---------------------------------------
31540 PROCEDURE AcctLineType_58 (
31541   p_application_id        IN NUMBER
31542  ,p_event_id              IN NUMBER
31543  ,p_calculate_acctd_flag  IN VARCHAR2
31544  ,p_calculate_g_l_flag    IN VARCHAR2
31545  ,p_actual_flag           IN OUT VARCHAR2
31546  ,p_balance_type_code     OUT VARCHAR2
31547  ,p_gain_or_loss_ref      OUT VARCHAR2
31548  
31549 --Journal entry Line Description
31550  , p_source_7            IN VARCHAR2
31551 --Budget Account
31552  , p_source_11            IN NUMBER
31553 --Main Or Backing Code
31554  , p_source_13            IN VARCHAR2
31555 --Accounting Reversal Flag
31556  , p_source_16            IN VARCHAR2
31557 --PO Distribution Identifier
31558  , p_source_29            IN NUMBER
31559 --Entered Amount
31560  , p_source_33            IN NUMBER
31561 --Currency Code
31562  , p_source_34            IN VARCHAR2
31563 --Accounted Amount
31564  , p_source_35            IN NUMBER
31565 --Applied To Application Identifier
31566  , p_source_53            IN NUMBER
31567 --Applied To Distribution Link Type
31568  , p_source_54            IN VARCHAR2
31569 --Applied To Entity Code
31570  , p_source_55            IN VARCHAR2
31571 --Applied To Distribution Identifier 1
31572  , p_source_56            IN NUMBER
31573 --Applied To Header Identifier 1
31574  , p_source_57            IN NUMBER
31575 --Distribution Link Type
31576  , p_source_58            IN VARCHAR2
31577 --PO Encumbrance Upgrade Option
31578  , p_source_59            IN VARCHAR2
31579 --JFMIP Reference
31580  , p_source_60            IN VARCHAR2
31581 --PO Upgrade Encumbrance Type Identifier
31582  , p_source_61            IN NUMBER
31583 --Currency Conversion Date
31584  , p_source_62            IN DATE
31585 --Currency Conversion Rate
31586  , p_source_63            IN NUMBER
31587 --Currency Conversion Type
31588  , p_source_64            IN VARCHAR2
31589 --PO Release Identifier
31590  , p_source_66            IN NUMBER
31591 )
31592 IS
31593 
31594 l_component_type              VARCHAR2(80);
31595 l_component_code              VARCHAR2(30);
31596 l_component_type_code         VARCHAR2(1);
31597 l_component_appl_id           INTEGER;
31598 l_amb_context_code            VARCHAR2(30);
31599 l_entity_code                 VARCHAR2(30);
31600 l_event_class_code            VARCHAR2(30);
31601 l_ae_header_id                NUMBER;
31602 l_event_type_code             VARCHAR2(30);
31603 l_line_definition_code        VARCHAR2(30);
31604 l_line_definition_owner_code  VARCHAR2(1);
31605 --
31606 -- adr variables
31607 l_segment                     VARCHAR2(30);
31608 l_ccid                        NUMBER;
31609 l_adr_transaction_coa_id      NUMBER;
31610 l_adr_accounting_coa_id       NUMBER;
31611 l_adr_flexfield_segment_code  VARCHAR2(30);
31612 l_adr_flex_value_set_id       NUMBER;
31613 l_adr_value_type_code         VARCHAR2(30);
31614 l_adr_value_combination_id    NUMBER;
31615 l_adr_value_segment_code      VARCHAR2(30);
31616 
31617 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31618 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31619 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31620 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31621 
31622 -- 4262811 Variables ------------------------------------------------------------------------------------------
31623 l_entered_amt_idx             NUMBER;
31624 l_accted_amt_idx              NUMBER;
31625 l_acc_rev_flag                VARCHAR2(1);
31626 l_accrual_line_num            NUMBER;
31627 l_tmp_amt                     NUMBER;
31628 l_acc_rev_natural_side_code   VARCHAR2(1);
31629 
31630 l_num_entries                 NUMBER;
31631 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31632 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31633 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31634 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31635 l_recog_line_1                NUMBER;
31636 l_recog_line_2                NUMBER;
31637 
31638 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31639 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31640 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31641 
31642 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31643 
31644 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31645 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31646 
31647 ---------------------------------------------------------------------------------------------------------------
31648 
31649 
31650 --
31651 -- bulk performance
31652 --
31653 l_balance_type_code           VARCHAR2(1);
31654 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31655 l_log_module                  VARCHAR2(240);
31656 
31657 --
31658 -- Upgrade strategy
31659 --
31660 l_actual_upg_option           VARCHAR2(1);
31661 l_enc_upg_option           VARCHAR2(1);
31662 
31663 --
31664 BEGIN
31665 --
31666 IF g_log_enabled THEN
31667       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
31668 END IF;
31669 --
31670 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31671 
31672       trace
31673          (p_msg      => 'BEGIN of AcctLineType_58'
31674          ,p_level    => C_LEVEL_PROCEDURE
31675          ,p_module   => l_log_module);
31676 
31677 END IF;
31678 --
31679 l_component_type             := 'AMB_JLT';
31680 l_component_code             := 'REOPEN_FINAL_CLOSED_RELEASE';
31681 l_component_type_code        := 'S';
31682 l_component_appl_id          :=  201;
31683 l_amb_context_code           := 'DEFAULT';
31684 l_entity_code                := 'RELEASE';
31685 l_event_class_code           := 'RELEASE';
31686 l_event_type_code            := 'RELEASE_ALL';
31687 l_line_definition_owner_code := 'S';
31688 l_line_definition_code       := 'RELEASE_ENC_ALL';
31689 --
31690 l_balance_type_code          := 'E';
31691 l_segment                     := NULL;
31692 l_ccid                        := NULL;
31693 l_adr_transaction_coa_id      := NULL;
31694 l_adr_accounting_coa_id       := NULL;
31695 l_adr_flexfield_segment_code  := NULL;
31696 l_adr_flex_value_set_id       := NULL;
31697 l_adr_value_type_code         := NULL;
31698 l_adr_value_combination_id    := NULL;
31699 l_adr_value_segment_code      := NULL;
31700 
31701 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31702 l_bflow_class_code           := '';    -- 4219869 Business Flow
31703 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31704 l_budgetary_control_flag     := 'Y';
31705 
31706 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31707 l_bflow_applied_to_amt       := NULL; -- 5132302
31708 l_entered_amt_idx            := NULL;          -- 4262811
31709 l_accted_amt_idx             := NULL;          -- 4262811
31710 l_acc_rev_flag               := NULL;          -- 4262811
31711 l_accrual_line_num           := NULL;          -- 4262811
31712 l_tmp_amt                    := NULL;          -- 4262811
31713 --
31714  
31715 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31716     l_balance_type_code <> 'B' THEN
31717 IF NVL(
31718 xla_ae_sources_pkg.GetSystemSourceChar(
31719    p_source_code           => 'XLA_EVENT_TYPE_CODE'
31720  , p_source_type_code      => 'Y'
31721  , p_source_application_id =>  602
31722 ),'
31723 ') =  'RELEASE_REOPEN_FINAL_CLOSED' AND 
31724 NVL(p_source_13,'
31725 ') =  'M'
31726  THEN 
31727 
31728    --
31729    XLA_AE_LINES_PKG.SetNewLine;
31730 
31731    p_balance_type_code          := l_balance_type_code;
31732    -- set the flag so later we will know whether the gain loss line needs to be created
31733    
31734    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31735      p_actual_flag :='A';
31736    END IF;
31737 
31738    --
31739    -- bulk performance
31740    --
31741    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31742                                       p_header_num   => 0); -- 4262811
31743    --
31744    -- set accounting line options
31745    --
31746    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31747            p_natural_side_code          => 'D'
31748          , p_gain_or_loss_flag          => 'N'
31749          , p_gl_transfer_mode_code      => 'S'
31750          , p_acct_entry_type_code       => 'E'
31751          , p_switch_side_flag           => 'N'
31752          , p_merge_duplicate_code       => 'N'
31753          );
31754    --
31755    l_acc_rev_natural_side_code := 'C';  -- 4262811
31756    -- 
31757    --
31758    -- set accounting line type info
31759    --
31760    xla_ae_lines_pkg.SetAcctLineType
31761       (p_component_type             => l_component_type
31762       ,p_event_type_code            => l_event_type_code
31763       ,p_line_definition_owner_code => l_line_definition_owner_code
31764       ,p_line_definition_code       => l_line_definition_code
31765       ,p_accounting_line_code       => l_component_code
31766       ,p_accounting_line_type_code  => l_component_type_code
31767       ,p_accounting_line_appl_id    => l_component_appl_id
31768       ,p_amb_context_code           => l_amb_context_code
31769       ,p_entity_code                => l_entity_code
31770       ,p_event_class_code           => l_event_class_code);
31771    --
31772    -- set accounting class
31773    --
31774    xla_ae_lines_pkg.SetAcctClass(
31775            p_accounting_class_code  => 'PURCHASE_ORDER'
31776          , p_ae_header_id           => l_ae_header_id
31777          );
31778 
31779    --
31780    -- set rounding class
31781    --
31782    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31783                       'PURCHASE_ORDER';
31784 
31785    --
31786    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31787    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31788    --
31789    -- bulk performance
31790    --
31791    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31792 
31793    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31794       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31795 
31796    -- 4955764
31797    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31798       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31799 
31800    -- 4458381 Public Sector Enh
31801       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
31802    --
31803    -- set accounting attributes for the line type
31804    --
31805    l_entered_amt_idx := 23;
31806    l_accted_amt_idx  := 28;
31807    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31808    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31809    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
31810    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
31811    l_rec_acct_attrs.array_num_value(2)  := 
31812 xla_ae_sources_pkg.GetSystemSourceNum(
31813    p_source_code           => 'XLA_EVENT_APPL_ID'
31814  , p_source_type_code      => 'Y'
31815  , p_source_application_id =>  602
31816 );
31817    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
31818    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
31819    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
31820    l_rec_acct_attrs.array_char_value(4)  := 
31821 xla_ae_sources_pkg.GetSystemSourceChar(
31822    p_source_code           => 'XLA_ENTITY_CODE'
31823  , p_source_type_code      => 'Y'
31824  , p_source_application_id =>  602
31825 );
31826    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
31827    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
31828    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
31829    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
31830    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
31831    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
31832    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
31833    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
31834    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
31835    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
31836    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
31837    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
31838    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
31839    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
31840    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
31841    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
31842    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
31843    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
31844    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
31845    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
31846    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
31847    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
31848    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
31849    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
31850    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
31851    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
31852    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
31853    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
31854    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
31855    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
31856    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
31857    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
31858    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
31859    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
31860    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
31861    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
31862    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
31863    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
31864    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
31865    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
31866    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
31867    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
31868    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
31869    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
31870    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
31871    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
31872    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
31873    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
31874    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
31875    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
31876    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
31877    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
31878    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
31879    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
31880    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
31881    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_66);
31882    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
31883    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
31884    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
31885    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
31886 
31887    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31888    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31889 
31890    ---------------------------------------------------------------------------------------------------------------
31891    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31892    ---------------------------------------------------------------------------------------------------------------
31893    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31894 
31895    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31896    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31897 
31898    IF xla_accounting_cache_pkg.GetValueChar
31899          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31900          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31901    AND l_bflow_method_code = 'PRIOR_ENTRY'
31902 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31903    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31904          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31905        )
31906    THEN
31907          xla_ae_lines_pkg.BflowUpgEntry
31908            (p_business_method_code    => l_bflow_method_code
31909            ,p_business_class_code     => l_bflow_class_code
31910            ,p_balance_type            => l_balance_type_code);
31911    ELSE
31912       NULL;
31913 -- No business flow processing for business flow method of NONE.
31914    END IF;
31915 
31916    --
31917    -- call analytical criteria
31918    --
31919    
31920    --
31921    -- call description
31922    --
31923    
31924 xla_ae_lines_pkg.SetLineDescription(
31925    p_ae_header_id => l_ae_header_id
31926   ,p_description  => Description_3 (
31927      p_application_id         => p_application_id
31928    , p_ae_header_id           => l_ae_header_id 
31929 , p_source_7 => p_source_7
31930    )
31931 );
31932 
31933 
31934    --
31935    -- call ADRs
31936    -- Bug 4922099
31937    --
31938    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31939         (NVL(l_actual_upg_option, 'N') = 'O') OR
31940         (NVL(l_enc_upg_option, 'N') = 'O')
31941       )
31942    THEN
31943    NULL;
31944    --
31945    --
31946    
31947   l_ccid := AcctDerRule_8(
31948            p_application_id           => p_application_id
31949          , p_ae_header_id             => l_ae_header_id 
31950 , p_source_11 => p_source_11
31951          , x_transaction_coa_id       => l_adr_transaction_coa_id
31952          , x_accounting_coa_id        => l_adr_accounting_coa_id
31953          , x_value_type_code          => l_adr_value_type_code
31954          , p_side                     => 'NA'
31955    );
31956 
31957    xla_ae_lines_pkg.set_ccid(
31958     p_code_combination_id          => l_ccid
31959   , p_value_type_code              => l_adr_value_type_code
31960   , p_transaction_coa_id           => l_adr_transaction_coa_id
31961   , p_accounting_coa_id            => l_adr_accounting_coa_id
31962   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
31963   , p_adr_type_code                => 'S'
31964   , p_component_type               => l_component_type
31965   , p_component_code               => l_component_code
31966   , p_component_type_code          => l_component_type_code
31967   , p_component_appl_id            => l_component_appl_id
31968   , p_amb_context_code             => l_amb_context_code
31969   , p_side                         => 'NA'
31970   );
31971 
31972 
31973    --
31974    --
31975    END IF;
31976    --
31977    -- Bug 4922099
31978    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31979           (NVL(l_enc_upg_option, 'N') = 'O')
31980         ) AND
31981         (l_bflow_method_code = 'PRIOR_ENTRY')
31982       )
31983    THEN
31984       IF
31985       --
31986       1 = 2
31987       --
31988       THEN
31989       xla_accounting_err_pkg.build_message
31990                                     (p_appli_s_name            => 'XLA'
31991                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31992                                     ,p_token_1                 => 'LINE_NUMBER'
31993                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31994                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31995                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31996                                                                              l_component_type
31997                                                                             ,l_component_code
31998                                                                             ,l_component_type_code
31999                                                                             ,l_component_appl_id
32000                                                                             ,l_amb_context_code
32001                                                                             ,l_entity_code
32002                                                                             ,l_event_class_code
32003                                                                            )
32004                                     ,p_token_3                 => 'OWNER'
32005                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32006                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32007                                                                           ,p_lookup_code    => l_component_type_code
32008                                                                          )
32009                                     ,p_token_4                 => 'PRODUCT_NAME'
32010                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32011                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32012                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32013                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32014                                     ,p_ae_header_id            =>  NULL
32015                                        );
32016 
32017         IF (C_LEVEL_ERROR>= g_log_level) THEN
32018                  trace
32019                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32020                       ,p_level    => C_LEVEL_ERROR
32021                       ,p_module   => l_log_module);
32022         END IF;
32023       END IF;
32024    END IF;
32025    --
32026    --
32027    ------------------------------------------------------------------------------------------------
32028    -- 4219869 Business Flow
32029    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32030    -- Prior Entry.  Currently, the following code is always generated.
32031    ------------------------------------------------------------------------------------------------
32032    XLA_AE_LINES_PKG.ValidateCurrentLine;
32033 
32034    ------------------------------------------------------------------------------------
32035    -- 4219869 Business Flow
32036    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32037    ------------------------------------------------------------------------------------
32038    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32039 
32040    ----------------------------------------------------------------------------------
32041    -- 4219869 Business Flow
32042    -- Update journal entry status -- Need to generate this within IF <condition>
32043    ----------------------------------------------------------------------------------
32044    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32045          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32046          ,p_balance_type_code => l_balance_type_code
32047          );
32048 
32049    -------------------------------------------------------------------------------------------
32050    -- 4262811 - Generate the Accrual Reversal lines
32051    -------------------------------------------------------------------------------------------
32052    BEGIN
32053       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32054                               (g_array_event(p_event_id).array_value_num('header_index'));
32055       IF l_acc_rev_flag IS NULL THEN
32056          l_acc_rev_flag := 'N';
32057       END IF;
32058    EXCEPTION
32059       WHEN OTHERS THEN
32060          l_acc_rev_flag := 'N';
32061    END;
32062    --
32063    IF (l_acc_rev_flag = 'Y') THEN
32064 
32065        -- 4645092  ------------------------------------------------------------------------------
32066        -- To allow MPA report to determine if it should generate report process
32067        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32068        ------------------------------------------------------------------------------------------
32069 
32070        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32071        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32072 
32073        --
32074        -- Update the line information that should be overwritten
32075        --
32076        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32077                                          p_header_num   => 1);
32078        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32079 
32080        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32081 
32082        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32083           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32084        END IF;
32085 
32086       --
32087       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32088       --
32089       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32090           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32091       ELSE
32092           ---------------------------------------------------------------------------------------------------
32093           -- 4262811a Switch Sign
32094           ---------------------------------------------------------------------------------------------------
32095           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32096           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32097                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32098           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32099                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32100           -- 5132302
32101           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32102                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32103 
32104       END IF;
32105 
32106       -- 4955764
32107       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32108       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32109 
32110 
32111       XLA_AE_LINES_PKG.ValidateCurrentLine;
32112       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32113 
32114       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32115                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32116                ,p_balance_type_code => l_balance_type_code);
32117 
32118    END IF;
32119 
32120    -----------------------------------------------------------------------------------------
32121    -- 4262811 Multiperiod Accounting
32122    -----------------------------------------------------------------------------------------
32123      -- No MPA option is assigned.
32124 
32125 
32126 END IF;
32127 END IF;
32128 --
32129 
32130 --
32131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32132    trace
32133       (p_msg      => 'END of AcctLineType_58'
32134       ,p_level    => C_LEVEL_PROCEDURE
32135       ,p_module   => l_log_module);
32136 END IF;
32137 --
32138 EXCEPTION
32139   WHEN xla_exceptions_pkg.application_exception THEN
32140       RAISE;
32141   WHEN OTHERS THEN
32142        xla_exceptions_pkg.raise_message
32143            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_58');
32144 END AcctLineType_58;
32145 --
32146 
32147 ---------------------------------------
32148 --
32149 -- PRIVATE FUNCTION
32150 --         AcctLineType_59
32151 --
32152 ---------------------------------------
32153 PROCEDURE AcctLineType_59 (
32154   p_application_id        IN NUMBER
32155  ,p_event_id              IN NUMBER
32156  ,p_calculate_acctd_flag  IN VARCHAR2
32157  ,p_calculate_g_l_flag    IN VARCHAR2
32158  ,p_actual_flag           IN OUT VARCHAR2
32159  ,p_balance_type_code     OUT VARCHAR2
32160  ,p_gain_or_loss_ref      OUT VARCHAR2
32161  
32162 --Journal entry Line Description
32163  , p_source_7            IN VARCHAR2
32164 --Budget Account
32165  , p_source_11            IN NUMBER
32166 --Main Or Backing Code
32167  , p_source_13            IN VARCHAR2
32168 --Accounting Reversal Flag
32169  , p_source_16            IN VARCHAR2
32170 --PO Distribution Identifier
32171  , p_source_29            IN NUMBER
32172 --Entered Amount
32173  , p_source_33            IN NUMBER
32174 --Currency Code
32175  , p_source_34            IN VARCHAR2
32176 --Accounted Amount
32177  , p_source_35            IN NUMBER
32178 --PO Header Identifier
32179  , p_source_52            IN NUMBER
32180 --Applied To Application Identifier
32181  , p_source_53            IN NUMBER
32182 --Applied To Distribution Link Type
32183  , p_source_54            IN VARCHAR2
32184 --Applied To Entity Code
32185  , p_source_55            IN VARCHAR2
32186 --Applied To Distribution Identifier 1
32187  , p_source_56            IN NUMBER
32188 --Applied To Header Identifier 1
32189  , p_source_57            IN NUMBER
32190 --Distribution Link Type
32191  , p_source_58            IN VARCHAR2
32192 --PO Encumbrance Upgrade Option
32193  , p_source_59            IN VARCHAR2
32194 --JFMIP Reference
32195  , p_source_60            IN VARCHAR2
32196 --PO Upgrade Encumbrance Type Identifier
32197  , p_source_61            IN NUMBER
32198 --Currency Conversion Date
32199  , p_source_62            IN DATE
32200 --Currency Conversion Rate
32201  , p_source_63            IN NUMBER
32202 --Currency Conversion Type
32203  , p_source_64            IN VARCHAR2
32204 )
32205 IS
32206 
32207 l_component_type              VARCHAR2(80);
32208 l_component_code              VARCHAR2(30);
32209 l_component_type_code         VARCHAR2(1);
32210 l_component_appl_id           INTEGER;
32211 l_amb_context_code            VARCHAR2(30);
32212 l_entity_code                 VARCHAR2(30);
32213 l_event_class_code            VARCHAR2(30);
32214 l_ae_header_id                NUMBER;
32215 l_event_type_code             VARCHAR2(30);
32216 l_line_definition_code        VARCHAR2(30);
32217 l_line_definition_owner_code  VARCHAR2(1);
32218 --
32219 -- adr variables
32220 l_segment                     VARCHAR2(30);
32221 l_ccid                        NUMBER;
32222 l_adr_transaction_coa_id      NUMBER;
32223 l_adr_accounting_coa_id       NUMBER;
32224 l_adr_flexfield_segment_code  VARCHAR2(30);
32225 l_adr_flex_value_set_id       NUMBER;
32226 l_adr_value_type_code         VARCHAR2(30);
32227 l_adr_value_combination_id    NUMBER;
32228 l_adr_value_segment_code      VARCHAR2(30);
32229 
32230 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32231 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32232 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32233 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32234 
32235 -- 4262811 Variables ------------------------------------------------------------------------------------------
32236 l_entered_amt_idx             NUMBER;
32237 l_accted_amt_idx              NUMBER;
32238 l_acc_rev_flag                VARCHAR2(1);
32239 l_accrual_line_num            NUMBER;
32240 l_tmp_amt                     NUMBER;
32241 l_acc_rev_natural_side_code   VARCHAR2(1);
32242 
32243 l_num_entries                 NUMBER;
32244 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32245 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32246 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32247 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32248 l_recog_line_1                NUMBER;
32249 l_recog_line_2                NUMBER;
32250 
32251 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32252 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32253 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32254 
32255 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32256 
32257 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32258 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32259 
32260 ---------------------------------------------------------------------------------------------------------------
32261 
32262 
32263 --
32264 -- bulk performance
32265 --
32266 l_balance_type_code           VARCHAR2(1);
32267 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32268 l_log_module                  VARCHAR2(240);
32269 
32270 --
32271 -- Upgrade strategy
32272 --
32273 l_actual_upg_option           VARCHAR2(1);
32274 l_enc_upg_option           VARCHAR2(1);
32275 
32276 --
32277 BEGIN
32278 --
32279 IF g_log_enabled THEN
32280       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
32281 END IF;
32282 --
32283 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32284 
32285       trace
32286          (p_msg      => 'BEGIN of AcctLineType_59'
32287          ,p_level    => C_LEVEL_PROCEDURE
32288          ,p_module   => l_log_module);
32289 
32290 END IF;
32291 --
32292 l_component_type             := 'AMB_JLT';
32293 l_component_code             := 'REOPEN_FINAL_MATCHED_PO';
32294 l_component_type_code        := 'S';
32295 l_component_appl_id          :=  201;
32296 l_amb_context_code           := 'DEFAULT';
32297 l_entity_code                := 'PURCHASE_ORDER';
32298 l_event_class_code           := 'PO_PA';
32299 l_event_type_code            := 'PO_PA_ALL';
32300 l_line_definition_owner_code := 'S';
32301 l_line_definition_code       := 'PO_PA_ENC_ALL';
32302 --
32303 l_balance_type_code          := 'E';
32304 l_segment                     := NULL;
32305 l_ccid                        := NULL;
32306 l_adr_transaction_coa_id      := NULL;
32307 l_adr_accounting_coa_id       := NULL;
32308 l_adr_flexfield_segment_code  := NULL;
32309 l_adr_flex_value_set_id       := NULL;
32310 l_adr_value_type_code         := NULL;
32311 l_adr_value_combination_id    := NULL;
32312 l_adr_value_segment_code      := NULL;
32313 
32314 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32315 l_bflow_class_code           := '';    -- 4219869 Business Flow
32316 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32317 l_budgetary_control_flag     := 'Y';
32318 
32319 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32320 l_bflow_applied_to_amt       := NULL; -- 5132302
32321 l_entered_amt_idx            := NULL;          -- 4262811
32322 l_accted_amt_idx             := NULL;          -- 4262811
32323 l_acc_rev_flag               := NULL;          -- 4262811
32324 l_accrual_line_num           := NULL;          -- 4262811
32325 l_tmp_amt                    := NULL;          -- 4262811
32326 --
32327  
32328 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32329     l_balance_type_code <> 'B' THEN
32330 IF NVL(
32331 xla_ae_sources_pkg.GetSystemSourceChar(
32332    p_source_code           => 'XLA_EVENT_TYPE_CODE'
32333  , p_source_type_code      => 'Y'
32334  , p_source_application_id =>  602
32335 ),'
32336 ') =  'PO_REOPEN_FINAL_MATCH' AND 
32337 NVL(p_source_13,'
32338 ') =  'M'
32339  THEN 
32340 
32341    --
32342    XLA_AE_LINES_PKG.SetNewLine;
32343 
32344    p_balance_type_code          := l_balance_type_code;
32345    -- set the flag so later we will know whether the gain loss line needs to be created
32346    
32347    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32348      p_actual_flag :='A';
32349    END IF;
32350 
32351    --
32352    -- bulk performance
32353    --
32354    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32355                                       p_header_num   => 0); -- 4262811
32356    --
32357    -- set accounting line options
32358    --
32359    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32360            p_natural_side_code          => 'D'
32361          , p_gain_or_loss_flag          => 'N'
32362          , p_gl_transfer_mode_code      => 'S'
32363          , p_acct_entry_type_code       => 'E'
32364          , p_switch_side_flag           => 'N'
32365          , p_merge_duplicate_code       => 'N'
32366          );
32367    --
32368    l_acc_rev_natural_side_code := 'C';  -- 4262811
32369    -- 
32370    --
32371    -- set accounting line type info
32372    --
32373    xla_ae_lines_pkg.SetAcctLineType
32374       (p_component_type             => l_component_type
32375       ,p_event_type_code            => l_event_type_code
32376       ,p_line_definition_owner_code => l_line_definition_owner_code
32377       ,p_line_definition_code       => l_line_definition_code
32378       ,p_accounting_line_code       => l_component_code
32379       ,p_accounting_line_type_code  => l_component_type_code
32380       ,p_accounting_line_appl_id    => l_component_appl_id
32381       ,p_amb_context_code           => l_amb_context_code
32382       ,p_entity_code                => l_entity_code
32383       ,p_event_class_code           => l_event_class_code);
32384    --
32385    -- set accounting class
32386    --
32387    xla_ae_lines_pkg.SetAcctClass(
32388            p_accounting_class_code  => 'PURCHASE_ORDER'
32389          , p_ae_header_id           => l_ae_header_id
32390          );
32391 
32392    --
32393    -- set rounding class
32394    --
32395    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32396                       'PURCHASE_ORDER';
32397 
32398    --
32399    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32400    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32401    --
32402    -- bulk performance
32403    --
32404    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32405 
32406    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32407       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32408 
32409    -- 4955764
32410    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32411       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32412 
32413    -- 4458381 Public Sector Enh
32414       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
32415    --
32416    -- set accounting attributes for the line type
32417    --
32418    l_entered_amt_idx := 23;
32419    l_accted_amt_idx  := 28;
32420    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32421    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32422    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
32423    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
32424    l_rec_acct_attrs.array_num_value(2)  := 
32425 xla_ae_sources_pkg.GetSystemSourceNum(
32426    p_source_code           => 'XLA_EVENT_APPL_ID'
32427  , p_source_type_code      => 'Y'
32428  , p_source_application_id =>  602
32429 );
32430    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
32431    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
32432    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
32433    l_rec_acct_attrs.array_char_value(4)  := 
32434 xla_ae_sources_pkg.GetSystemSourceChar(
32435    p_source_code           => 'XLA_ENTITY_CODE'
32436  , p_source_type_code      => 'Y'
32437  , p_source_application_id =>  602
32438 );
32439    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
32440    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
32441    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
32442    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
32443    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
32444    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
32445    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32446    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
32447    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
32448    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
32449    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
32450    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
32451    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32452    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
32453    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
32454    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
32455    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
32456    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
32457    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
32458    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
32459    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
32460    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
32461    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
32462    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
32463    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
32464    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
32465    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
32466    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
32467    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
32468    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
32469    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
32470    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
32471    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
32472    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
32473    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
32474    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
32475    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
32476    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
32477    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
32478    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
32479    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
32480    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
32481    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
32482    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
32483    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
32484    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
32485    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
32486    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
32487    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
32488    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
32489    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
32490    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
32491    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
32492    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
32493    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
32494    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_29);
32495    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
32496    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
32497    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
32498    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
32499 
32500    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32501    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32502 
32503    ---------------------------------------------------------------------------------------------------------------
32504    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32505    ---------------------------------------------------------------------------------------------------------------
32506    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32507 
32508    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32509    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32510 
32511    IF xla_accounting_cache_pkg.GetValueChar
32512          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32513          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32514    AND l_bflow_method_code = 'PRIOR_ENTRY'
32515 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32516    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32517          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32518        )
32519    THEN
32520          xla_ae_lines_pkg.BflowUpgEntry
32521            (p_business_method_code    => l_bflow_method_code
32522            ,p_business_class_code     => l_bflow_class_code
32523            ,p_balance_type            => l_balance_type_code);
32524    ELSE
32525       NULL;
32526 -- No business flow processing for business flow method of NONE.
32527    END IF;
32528 
32529    --
32530    -- call analytical criteria
32531    --
32532    
32533    --
32534    -- call description
32535    --
32536    
32537 xla_ae_lines_pkg.SetLineDescription(
32538    p_ae_header_id => l_ae_header_id
32539   ,p_description  => Description_3 (
32540      p_application_id         => p_application_id
32541    , p_ae_header_id           => l_ae_header_id 
32542 , p_source_7 => p_source_7
32543    )
32544 );
32545 
32546 
32547    --
32548    -- call ADRs
32549    -- Bug 4922099
32550    --
32551    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32552         (NVL(l_actual_upg_option, 'N') = 'O') OR
32553         (NVL(l_enc_upg_option, 'N') = 'O')
32554       )
32555    THEN
32556    NULL;
32557    --
32558    --
32559    
32560   l_ccid := AcctDerRule_8(
32561            p_application_id           => p_application_id
32562          , p_ae_header_id             => l_ae_header_id 
32563 , p_source_11 => p_source_11
32564          , x_transaction_coa_id       => l_adr_transaction_coa_id
32565          , x_accounting_coa_id        => l_adr_accounting_coa_id
32566          , x_value_type_code          => l_adr_value_type_code
32567          , p_side                     => 'NA'
32568    );
32569 
32570    xla_ae_lines_pkg.set_ccid(
32571     p_code_combination_id          => l_ccid
32572   , p_value_type_code              => l_adr_value_type_code
32573   , p_transaction_coa_id           => l_adr_transaction_coa_id
32574   , p_accounting_coa_id            => l_adr_accounting_coa_id
32575   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
32576   , p_adr_type_code                => 'S'
32577   , p_component_type               => l_component_type
32578   , p_component_code               => l_component_code
32579   , p_component_type_code          => l_component_type_code
32580   , p_component_appl_id            => l_component_appl_id
32581   , p_amb_context_code             => l_amb_context_code
32582   , p_side                         => 'NA'
32583   );
32584 
32585 
32586    --
32587    --
32588    END IF;
32589    --
32590    -- Bug 4922099
32591    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32592           (NVL(l_enc_upg_option, 'N') = 'O')
32593         ) AND
32594         (l_bflow_method_code = 'PRIOR_ENTRY')
32595       )
32596    THEN
32597       IF
32598       --
32599       1 = 2
32600       --
32601       THEN
32602       xla_accounting_err_pkg.build_message
32603                                     (p_appli_s_name            => 'XLA'
32604                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32605                                     ,p_token_1                 => 'LINE_NUMBER'
32606                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32607                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32608                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32609                                                                              l_component_type
32610                                                                             ,l_component_code
32611                                                                             ,l_component_type_code
32612                                                                             ,l_component_appl_id
32613                                                                             ,l_amb_context_code
32614                                                                             ,l_entity_code
32615                                                                             ,l_event_class_code
32616                                                                            )
32617                                     ,p_token_3                 => 'OWNER'
32618                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32619                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32620                                                                           ,p_lookup_code    => l_component_type_code
32621                                                                          )
32622                                     ,p_token_4                 => 'PRODUCT_NAME'
32623                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32624                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32625                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32626                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32627                                     ,p_ae_header_id            =>  NULL
32628                                        );
32629 
32630         IF (C_LEVEL_ERROR>= g_log_level) THEN
32631                  trace
32632                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32633                       ,p_level    => C_LEVEL_ERROR
32634                       ,p_module   => l_log_module);
32635         END IF;
32636       END IF;
32637    END IF;
32638    --
32639    --
32640    ------------------------------------------------------------------------------------------------
32641    -- 4219869 Business Flow
32642    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32643    -- Prior Entry.  Currently, the following code is always generated.
32644    ------------------------------------------------------------------------------------------------
32645    XLA_AE_LINES_PKG.ValidateCurrentLine;
32646 
32647    ------------------------------------------------------------------------------------
32648    -- 4219869 Business Flow
32649    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32650    ------------------------------------------------------------------------------------
32651    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32652 
32653    ----------------------------------------------------------------------------------
32654    -- 4219869 Business Flow
32655    -- Update journal entry status -- Need to generate this within IF <condition>
32656    ----------------------------------------------------------------------------------
32657    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32658          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32659          ,p_balance_type_code => l_balance_type_code
32660          );
32661 
32662    -------------------------------------------------------------------------------------------
32663    -- 4262811 - Generate the Accrual Reversal lines
32664    -------------------------------------------------------------------------------------------
32665    BEGIN
32666       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32667                               (g_array_event(p_event_id).array_value_num('header_index'));
32668       IF l_acc_rev_flag IS NULL THEN
32669          l_acc_rev_flag := 'N';
32670       END IF;
32671    EXCEPTION
32672       WHEN OTHERS THEN
32673          l_acc_rev_flag := 'N';
32674    END;
32675    --
32676    IF (l_acc_rev_flag = 'Y') THEN
32677 
32678        -- 4645092  ------------------------------------------------------------------------------
32679        -- To allow MPA report to determine if it should generate report process
32680        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32681        ------------------------------------------------------------------------------------------
32682 
32683        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32684        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32685 
32686        --
32687        -- Update the line information that should be overwritten
32688        --
32689        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32690                                          p_header_num   => 1);
32691        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32692 
32693        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32694 
32695        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32696           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32697        END IF;
32698 
32699       --
32700       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32701       --
32702       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32703           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32704       ELSE
32705           ---------------------------------------------------------------------------------------------------
32706           -- 4262811a Switch Sign
32707           ---------------------------------------------------------------------------------------------------
32708           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32709           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32710                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32711           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32712                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32713           -- 5132302
32714           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32715                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32716 
32717       END IF;
32718 
32719       -- 4955764
32720       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32721       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32722 
32723 
32724       XLA_AE_LINES_PKG.ValidateCurrentLine;
32725       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32726 
32727       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32728                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32729                ,p_balance_type_code => l_balance_type_code);
32730 
32731    END IF;
32732 
32733    -----------------------------------------------------------------------------------------
32734    -- 4262811 Multiperiod Accounting
32735    -----------------------------------------------------------------------------------------
32736      -- No MPA option is assigned.
32737 
32738 
32739 END IF;
32740 END IF;
32741 --
32742 
32743 --
32744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32745    trace
32746       (p_msg      => 'END of AcctLineType_59'
32747       ,p_level    => C_LEVEL_PROCEDURE
32748       ,p_module   => l_log_module);
32749 END IF;
32750 --
32751 EXCEPTION
32752   WHEN xla_exceptions_pkg.application_exception THEN
32753       RAISE;
32754   WHEN OTHERS THEN
32755        xla_exceptions_pkg.raise_message
32756            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_59');
32757 END AcctLineType_59;
32758 --
32759 
32760 ---------------------------------------
32761 --
32762 -- PRIVATE FUNCTION
32763 --         AcctLineType_60
32764 --
32765 ---------------------------------------
32766 PROCEDURE AcctLineType_60 (
32767   p_application_id        IN NUMBER
32768  ,p_event_id              IN NUMBER
32769  ,p_calculate_acctd_flag  IN VARCHAR2
32770  ,p_calculate_g_l_flag    IN VARCHAR2
32771  ,p_actual_flag           IN OUT VARCHAR2
32772  ,p_balance_type_code     OUT VARCHAR2
32773  ,p_gain_or_loss_ref      OUT VARCHAR2
32774  
32775 --Project Name
32776  , p_source_3            IN VARCHAR2
32777 --Task Name
32778  , p_source_4            IN VARCHAR2
32779 --Project Expenditure Organization Identifier
32780  , p_source_5            IN NUMBER
32781 --Expenditure Type
32782  , p_source_6            IN VARCHAR2
32783 --Document Type
32784  , p_source_9            IN VARCHAR2
32785 --Budget Account
32786  , p_source_11            IN NUMBER
32787 --Main Or Backing Code
32788  , p_source_13            IN VARCHAR2
32789 --Burden Record Identifier
32790  , p_source_14            IN VARCHAR2
32791  , p_source_14_meaning    IN VARCHAR2
32792 --Burden Amount Display Method
32793  , p_source_15            IN VARCHAR2
32794 --Accounting Reversal Flag
32795  , p_source_16            IN VARCHAR2
32796 --Allocated to Application Identifier
32797  , p_source_17            IN NUMBER
32798 --Allocated to Distribution Type
32799  , p_source_18            IN VARCHAR2
32800 --Allocated to Entity Code
32801  , p_source_19            IN VARCHAR2
32802 --Allocated to First Distribution Identifier
32803  , p_source_20            IN NUMBER
32804 --Allocated to First System Transaction Identifier
32805  , p_source_21            IN NUMBER
32806 --Purchase Order Burden Applied to Application Identifier
32807  , p_source_23            IN NUMBER
32808 --PO Distribution Type
32809  , p_source_24            IN VARCHAR2
32810 --Purchase Order Burden Applied to Entity Code
32811  , p_source_25            IN VARCHAR2
32812 --Purchase Order Burden Applied to First Distribution Identifier
32813  , p_source_26            IN NUMBER
32814 --Purchase Order Burden Applied to First System Transaction Identifier
32815  , p_source_27            IN NUMBER
32816 --Purchase Order Burden Applied to Second Distribution Identifier
32817  , p_source_28            IN VARCHAR2
32818 --PO Distribution Identifier
32819  , p_source_29            IN NUMBER
32820 --Line Type Name
32821  , p_source_30            IN VARCHAR2
32822 --Encumbrance Upgrade Credit Accounting Class
32823  , p_source_31            IN VARCHAR2
32824 --Encumbrance Upgrade Credit Account
32825  , p_source_32            IN NUMBER
32826 --Entered Amount
32827  , p_source_33            IN NUMBER
32828 --Currency Code
32829  , p_source_34            IN VARCHAR2
32830 --Accounted Amount
32831  , p_source_35            IN NUMBER
32832 --Encumbrance Upgrade Debit Accounting Class
32833  , p_source_36            IN VARCHAR2
32834 --Encumbrance Upgrade Debit Account
32835  , p_source_37            IN NUMBER
32836 --Use Encumbrances Upgrade Attributes Flag
32837  , p_source_38            IN VARCHAR2
32838 --Encumbrance Upgrade Credit Encumbrance Type
32839  , p_source_39            IN NUMBER
32840 --Encumbrance Upgrade Debit Encumbrance Type
32841  , p_source_40            IN NUMBER
32842 )
32843 IS
32844 
32845 l_component_type              VARCHAR2(80);
32846 l_component_code              VARCHAR2(30);
32847 l_component_type_code         VARCHAR2(1);
32848 l_component_appl_id           INTEGER;
32849 l_amb_context_code            VARCHAR2(30);
32850 l_entity_code                 VARCHAR2(30);
32851 l_event_class_code            VARCHAR2(30);
32852 l_ae_header_id                NUMBER;
32853 l_event_type_code             VARCHAR2(30);
32854 l_line_definition_code        VARCHAR2(30);
32855 l_line_definition_owner_code  VARCHAR2(1);
32856 --
32857 -- adr variables
32858 l_segment                     VARCHAR2(30);
32859 l_ccid                        NUMBER;
32860 l_adr_transaction_coa_id      NUMBER;
32861 l_adr_accounting_coa_id       NUMBER;
32862 l_adr_flexfield_segment_code  VARCHAR2(30);
32863 l_adr_flex_value_set_id       NUMBER;
32864 l_adr_value_type_code         VARCHAR2(30);
32865 l_adr_value_combination_id    NUMBER;
32866 l_adr_value_segment_code      VARCHAR2(30);
32867 
32868 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32869 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32870 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32871 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32872 
32873 -- 4262811 Variables ------------------------------------------------------------------------------------------
32874 l_entered_amt_idx             NUMBER;
32875 l_accted_amt_idx              NUMBER;
32876 l_acc_rev_flag                VARCHAR2(1);
32877 l_accrual_line_num            NUMBER;
32878 l_tmp_amt                     NUMBER;
32879 l_acc_rev_natural_side_code   VARCHAR2(1);
32880 
32881 l_num_entries                 NUMBER;
32882 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32883 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32884 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32885 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32886 l_recog_line_1                NUMBER;
32887 l_recog_line_2                NUMBER;
32888 
32889 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32890 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32891 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32892 
32893 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32894 
32895 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32896 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32897 
32898 ---------------------------------------------------------------------------------------------------------------
32899 
32900 
32901 --
32902 -- bulk performance
32903 --
32904 l_balance_type_code           VARCHAR2(1);
32905 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32906 l_log_module                  VARCHAR2(240);
32907 
32908 --
32909 -- Upgrade strategy
32910 --
32911 l_actual_upg_option           VARCHAR2(1);
32912 l_enc_upg_option           VARCHAR2(1);
32913 
32914 --
32915 BEGIN
32916 --
32917 IF g_log_enabled THEN
32918       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
32919 END IF;
32920 --
32921 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32922 
32923       trace
32924          (p_msg      => 'BEGIN of AcctLineType_60'
32925          ,p_level    => C_LEVEL_PROCEDURE
32926          ,p_module   => l_log_module);
32927 
32928 END IF;
32929 --
32930 l_component_type             := 'AMB_JLT';
32931 l_component_code             := 'RESERVE_BURDENED_PO_ENC';
32932 l_component_type_code        := 'S';
32933 l_component_appl_id          :=  201;
32934 l_amb_context_code           := 'DEFAULT';
32935 l_entity_code                := 'PURCHASE_ORDER';
32936 l_event_class_code           := 'PO_BURDEN';
32937 l_event_type_code            := 'PO_BURDEN_ALL';
32938 l_line_definition_owner_code := 'S';
32939 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
32940 --
32941 l_balance_type_code          := 'E';
32942 l_segment                     := NULL;
32943 l_ccid                        := NULL;
32944 l_adr_transaction_coa_id      := NULL;
32945 l_adr_accounting_coa_id       := NULL;
32946 l_adr_flexfield_segment_code  := NULL;
32947 l_adr_flex_value_set_id       := NULL;
32948 l_adr_value_type_code         := NULL;
32949 l_adr_value_combination_id    := NULL;
32950 l_adr_value_segment_code      := NULL;
32951 
32952 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32953 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
32954 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32955 l_budgetary_control_flag     := 'Y';
32956 
32957 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32958 l_bflow_applied_to_amt       := NULL; -- 5132302
32959 l_entered_amt_idx            := NULL;          -- 4262811
32960 l_accted_amt_idx             := NULL;          -- 4262811
32961 l_acc_rev_flag               := NULL;          -- 4262811
32962 l_accrual_line_num           := NULL;          -- 4262811
32963 l_tmp_amt                    := NULL;          -- 4262811
32964 --
32965  
32966 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32967     l_balance_type_code <> 'B' THEN
32968 IF NVL(
32969 xla_ae_sources_pkg.GetSystemSourceChar(
32970    p_source_code           => 'XLA_EVENT_TYPE_CODE'
32971  , p_source_type_code      => 'Y'
32972  , p_source_application_id =>  602
32973 ),'
32974 ') =  'PO_BURDEN_RESERVED' AND 
32975 NVL(p_source_13,'
32976 ') =  'M' AND 
32977 (NVL(p_source_14,'
32978 ') =  'N' OR 
32979 NVL(p_source_14,'
32980 ') =  'O') AND 
32981 NVL(p_source_9,'
32982 ') =  'PO' AND 
32983 NVL(p_source_15,'
32984 ') =  'S'
32985  THEN 
32986 
32987    --
32988    XLA_AE_LINES_PKG.SetNewLine;
32989 
32990    p_balance_type_code          := l_balance_type_code;
32991    -- set the flag so later we will know whether the gain loss line needs to be created
32992    
32993    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32994      p_actual_flag :='A';
32995    END IF;
32996 
32997    --
32998    -- bulk performance
32999    --
33000    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33001                                       p_header_num   => 0); -- 4262811
33002    --
33003    -- set accounting line options
33004    --
33005    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33006            p_natural_side_code          => 'D'
33007          , p_gain_or_loss_flag          => 'N'
33008          , p_gl_transfer_mode_code      => 'S'
33009          , p_acct_entry_type_code       => 'E'
33010          , p_switch_side_flag           => 'N'
33011          , p_merge_duplicate_code       => 'N'
33012          );
33013    --
33014    l_acc_rev_natural_side_code := 'C';  -- 4262811
33015    -- 
33016    --
33017    -- set accounting line type info
33018    --
33019    xla_ae_lines_pkg.SetAcctLineType
33020       (p_component_type             => l_component_type
33021       ,p_event_type_code            => l_event_type_code
33022       ,p_line_definition_owner_code => l_line_definition_owner_code
33023       ,p_line_definition_code       => l_line_definition_code
33024       ,p_accounting_line_code       => l_component_code
33025       ,p_accounting_line_type_code  => l_component_type_code
33026       ,p_accounting_line_appl_id    => l_component_appl_id
33027       ,p_amb_context_code           => l_amb_context_code
33028       ,p_entity_code                => l_entity_code
33029       ,p_event_class_code           => l_event_class_code);
33030    --
33031    -- set accounting class
33032    --
33033    xla_ae_lines_pkg.SetAcctClass(
33034            p_accounting_class_code  => 'PO_PA_BURDENED'
33035          , p_ae_header_id           => l_ae_header_id
33036          );
33037 
33038    --
33039    -- set rounding class
33040    --
33041    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33042                       'PO_PA_BURDENED';
33043 
33044    --
33045    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33046    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33047    --
33048    -- bulk performance
33049    --
33050    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33051 
33052    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33053       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33054 
33055    -- 4955764
33056    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33057       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33058 
33059    -- 4458381 Public Sector Enh
33060       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
33061    --
33062    -- set accounting attributes for the line type
33063    --
33064    l_entered_amt_idx := 27;
33065    l_accted_amt_idx  := 29;
33066    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33067    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33068    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
33069    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
33070    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
33071    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
33072    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
33073    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
33074    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
33075    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
33076    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
33077    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
33078    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
33079    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
33080    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
33081    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33082    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
33083    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
33084    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
33085    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
33086    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
33087    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33088    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
33089    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
33090    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
33091    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
33092    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
33093    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
33094    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
33095    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
33096    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
33097    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
33098    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
33099    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
33100    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
33101    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
33102    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
33103    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
33104    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
33105    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
33106    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
33107    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
33108    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
33109    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
33110    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
33111    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
33112    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
33113    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
33114    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
33115    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
33116    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
33117    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
33118    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
33119    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
33120    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
33121    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
33122    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
33123    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
33124    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
33125    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
33126    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
33127    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
33128    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
33129    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
33130    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
33131    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
33132    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
33133    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
33134    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
33135 
33136    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33137    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33138 
33139    ---------------------------------------------------------------------------------------------------------------
33140    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33141    ---------------------------------------------------------------------------------------------------------------
33142    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33143 
33144    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33145    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33146 
33147    IF xla_accounting_cache_pkg.GetValueChar
33148          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33149          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33150    AND l_bflow_method_code = 'PRIOR_ENTRY'
33151 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33152    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33153          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33154        )
33155    THEN
33156          xla_ae_lines_pkg.BflowUpgEntry
33157            (p_business_method_code    => l_bflow_method_code
33158            ,p_business_class_code     => l_bflow_class_code
33159            ,p_balance_type            => l_balance_type_code);
33160    ELSE
33161       NULL;
33162 -- No business flow processing for business flow method of NONE.
33163    END IF;
33164 
33165    --
33166    -- call analytical criteria
33167    --
33168    
33169    --
33170    -- call description
33171    --
33172    
33173 xla_ae_lines_pkg.SetLineDescription(
33174    p_ae_header_id => l_ae_header_id
33175   ,p_description  => Description_2 (
33176      p_application_id         => p_application_id
33177    , p_ae_header_id           => l_ae_header_id 
33178 , p_source_3 => p_source_3
33179 , p_source_4 => p_source_4
33180 , p_source_5 => p_source_5
33181 , p_source_6 => p_source_6
33182    )
33183 );
33184 
33185 
33186    --
33187    -- call ADRs
33188    -- Bug 4922099
33189    --
33190    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33191         (NVL(l_actual_upg_option, 'N') = 'O') OR
33192         (NVL(l_enc_upg_option, 'N') = 'O')
33193       )
33194    THEN
33195    NULL;
33196    --
33197    --
33198    
33199   l_ccid := AcctDerRule_6(
33200            p_application_id           => p_application_id
33201          , p_ae_header_id             => l_ae_header_id 
33202 , p_source_11 => p_source_11
33203          , x_transaction_coa_id       => l_adr_transaction_coa_id
33204          , x_accounting_coa_id        => l_adr_accounting_coa_id
33205          , x_value_type_code          => l_adr_value_type_code
33206          , p_side                     => 'NA'
33207    );
33208 
33209    xla_ae_lines_pkg.set_ccid(
33210     p_code_combination_id          => l_ccid
33211   , p_value_type_code              => l_adr_value_type_code
33212   , p_transaction_coa_id           => l_adr_transaction_coa_id
33213   , p_accounting_coa_id            => l_adr_accounting_coa_id
33214   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
33215   , p_adr_type_code                => 'S'
33216   , p_component_type               => l_component_type
33217   , p_component_code               => l_component_code
33218   , p_component_type_code          => l_component_type_code
33219   , p_component_appl_id            => l_component_appl_id
33220   , p_amb_context_code             => l_amb_context_code
33221   , p_side                         => 'NA'
33222   );
33223 
33224 
33225    --
33226    --
33227    END IF;
33228    --
33229    -- Bug 4922099
33230    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33231           (NVL(l_enc_upg_option, 'N') = 'O')
33232         ) AND
33233         (l_bflow_method_code = 'PRIOR_ENTRY')
33234       )
33235    THEN
33236       IF
33237       --
33238       1 = 2
33239       --
33240       THEN
33241       xla_accounting_err_pkg.build_message
33242                                     (p_appli_s_name            => 'XLA'
33243                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33244                                     ,p_token_1                 => 'LINE_NUMBER'
33245                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33246                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33247                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33248                                                                              l_component_type
33249                                                                             ,l_component_code
33250                                                                             ,l_component_type_code
33251                                                                             ,l_component_appl_id
33252                                                                             ,l_amb_context_code
33253                                                                             ,l_entity_code
33254                                                                             ,l_event_class_code
33255                                                                            )
33256                                     ,p_token_3                 => 'OWNER'
33257                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33258                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33259                                                                           ,p_lookup_code    => l_component_type_code
33260                                                                          )
33261                                     ,p_token_4                 => 'PRODUCT_NAME'
33262                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33263                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33264                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33265                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33266                                     ,p_ae_header_id            =>  NULL
33267                                        );
33268 
33269         IF (C_LEVEL_ERROR>= g_log_level) THEN
33270                  trace
33271                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33272                       ,p_level    => C_LEVEL_ERROR
33273                       ,p_module   => l_log_module);
33274         END IF;
33275       END IF;
33276    END IF;
33277    --
33278    --
33279    ------------------------------------------------------------------------------------------------
33280    -- 4219869 Business Flow
33281    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33282    -- Prior Entry.  Currently, the following code is always generated.
33283    ------------------------------------------------------------------------------------------------
33284    XLA_AE_LINES_PKG.ValidateCurrentLine;
33285 
33286    ------------------------------------------------------------------------------------
33287    -- 4219869 Business Flow
33288    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33289    ------------------------------------------------------------------------------------
33290    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33291 
33292    ----------------------------------------------------------------------------------
33293    -- 4219869 Business Flow
33294    -- Update journal entry status -- Need to generate this within IF <condition>
33295    ----------------------------------------------------------------------------------
33296    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33297          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33298          ,p_balance_type_code => l_balance_type_code
33299          );
33300 
33301    -------------------------------------------------------------------------------------------
33302    -- 4262811 - Generate the Accrual Reversal lines
33303    -------------------------------------------------------------------------------------------
33304    BEGIN
33305       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33306                               (g_array_event(p_event_id).array_value_num('header_index'));
33307       IF l_acc_rev_flag IS NULL THEN
33308          l_acc_rev_flag := 'N';
33309       END IF;
33310    EXCEPTION
33311       WHEN OTHERS THEN
33312          l_acc_rev_flag := 'N';
33313    END;
33314    --
33315    IF (l_acc_rev_flag = 'Y') THEN
33316 
33317        -- 4645092  ------------------------------------------------------------------------------
33318        -- To allow MPA report to determine if it should generate report process
33319        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33320        ------------------------------------------------------------------------------------------
33321 
33322        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33323        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33324 
33325        --
33326        -- Update the line information that should be overwritten
33327        --
33328        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33329                                          p_header_num   => 1);
33330        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33331 
33332        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33333 
33334        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33335           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33336        END IF;
33337 
33338       --
33339       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33340       --
33341       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33342           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33343       ELSE
33344           ---------------------------------------------------------------------------------------------------
33345           -- 4262811a Switch Sign
33346           ---------------------------------------------------------------------------------------------------
33347           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33348           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33349                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33350           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33351                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33352           -- 5132302
33353           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33354                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33355 
33356       END IF;
33357 
33358       -- 4955764
33359       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33361 
33362 
33363       XLA_AE_LINES_PKG.ValidateCurrentLine;
33364       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33365 
33366       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33367                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33368                ,p_balance_type_code => l_balance_type_code);
33369 
33370    END IF;
33371 
33372    -----------------------------------------------------------------------------------------
33373    -- 4262811 Multiperiod Accounting
33374    -----------------------------------------------------------------------------------------
33375      -- No MPA option is assigned.
33376 
33377 
33378 END IF;
33379 END IF;
33380 --
33381 
33382 --
33383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33384    trace
33385       (p_msg      => 'END of AcctLineType_60'
33386       ,p_level    => C_LEVEL_PROCEDURE
33387       ,p_module   => l_log_module);
33388 END IF;
33389 --
33390 EXCEPTION
33391   WHEN xla_exceptions_pkg.application_exception THEN
33392       RAISE;
33393   WHEN OTHERS THEN
33394        xla_exceptions_pkg.raise_message
33395            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_60');
33396 END AcctLineType_60;
33397 --
33398 
33399 ---------------------------------------
33400 --
33401 -- PRIVATE FUNCTION
33402 --         AcctLineType_61
33403 --
33404 ---------------------------------------
33405 PROCEDURE AcctLineType_61 (
33406   p_application_id        IN NUMBER
33407  ,p_event_id              IN NUMBER
33408  ,p_calculate_acctd_flag  IN VARCHAR2
33409  ,p_calculate_g_l_flag    IN VARCHAR2
33410  ,p_actual_flag           IN OUT VARCHAR2
33411  ,p_balance_type_code     OUT VARCHAR2
33412  ,p_gain_or_loss_ref      OUT VARCHAR2
33413  
33414 --Project Name
33415  , p_source_3            IN VARCHAR2
33416 --Task Name
33417  , p_source_4            IN VARCHAR2
33418 --Project Expenditure Organization Identifier
33419  , p_source_5            IN NUMBER
33420 --Expenditure Type
33421  , p_source_6            IN VARCHAR2
33422 --Document Type
33423  , p_source_9            IN VARCHAR2
33424 --Budget Account
33425  , p_source_11            IN NUMBER
33426 --Main Or Backing Code
33427  , p_source_13            IN VARCHAR2
33428 --Burden Record Identifier
33429  , p_source_14            IN VARCHAR2
33430  , p_source_14_meaning    IN VARCHAR2
33431 --Burden Amount Display Method
33432  , p_source_15            IN VARCHAR2
33433 --Accounting Reversal Flag
33434  , p_source_16            IN VARCHAR2
33435 --Allocated to Application Identifier
33436  , p_source_17            IN NUMBER
33437 --Allocated to Distribution Type
33438  , p_source_18            IN VARCHAR2
33439 --Allocated to Entity Code
33440  , p_source_19            IN VARCHAR2
33441 --Allocated to First Distribution Identifier
33442  , p_source_20            IN NUMBER
33443 --Allocated to First System Transaction Identifier
33444  , p_source_21            IN NUMBER
33445 --Allocated to Second Distribution Identifier
33446  , p_source_22            IN VARCHAR2
33447 --Purchase Order Burden Applied to Application Identifier
33448  , p_source_23            IN NUMBER
33449 --PO Distribution Type
33450  , p_source_24            IN VARCHAR2
33451 --Purchase Order Burden Applied to Entity Code
33452  , p_source_25            IN VARCHAR2
33453 --Purchase Order Burden Applied to First Distribution Identifier
33454  , p_source_26            IN NUMBER
33455 --Purchase Order Burden Applied to First System Transaction Identifier
33456  , p_source_27            IN NUMBER
33457 --Purchase Order Burden Applied to Second Distribution Identifier
33458  , p_source_28            IN VARCHAR2
33459 --PO Distribution Identifier
33460  , p_source_29            IN NUMBER
33461 --Line Type Name
33462  , p_source_30            IN VARCHAR2
33463 --Encumbrance Upgrade Credit Accounting Class
33464  , p_source_31            IN VARCHAR2
33465 --Encumbrance Upgrade Credit Account
33466  , p_source_32            IN NUMBER
33467 --Entered Amount
33468  , p_source_33            IN NUMBER
33469 --Currency Code
33470  , p_source_34            IN VARCHAR2
33471 --Accounted Amount
33472  , p_source_35            IN NUMBER
33473 --Encumbrance Upgrade Debit Accounting Class
33474  , p_source_36            IN VARCHAR2
33475 --Encumbrance Upgrade Debit Account
33476  , p_source_37            IN NUMBER
33477 --Use Encumbrances Upgrade Attributes Flag
33478  , p_source_38            IN VARCHAR2
33479 --Encumbrance Upgrade Credit Encumbrance Type
33480  , p_source_39            IN NUMBER
33481 --Encumbrance Upgrade Debit Encumbrance Type
33482  , p_source_40            IN NUMBER
33483 )
33484 IS
33485 
33486 l_component_type              VARCHAR2(80);
33487 l_component_code              VARCHAR2(30);
33488 l_component_type_code         VARCHAR2(1);
33489 l_component_appl_id           INTEGER;
33490 l_amb_context_code            VARCHAR2(30);
33491 l_entity_code                 VARCHAR2(30);
33492 l_event_class_code            VARCHAR2(30);
33493 l_ae_header_id                NUMBER;
33494 l_event_type_code             VARCHAR2(30);
33495 l_line_definition_code        VARCHAR2(30);
33496 l_line_definition_owner_code  VARCHAR2(1);
33497 --
33498 -- adr variables
33499 l_segment                     VARCHAR2(30);
33500 l_ccid                        NUMBER;
33501 l_adr_transaction_coa_id      NUMBER;
33502 l_adr_accounting_coa_id       NUMBER;
33503 l_adr_flexfield_segment_code  VARCHAR2(30);
33504 l_adr_flex_value_set_id       NUMBER;
33505 l_adr_value_type_code         VARCHAR2(30);
33506 l_adr_value_combination_id    NUMBER;
33507 l_adr_value_segment_code      VARCHAR2(30);
33508 
33509 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33510 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33511 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33512 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33513 
33514 -- 4262811 Variables ------------------------------------------------------------------------------------------
33515 l_entered_amt_idx             NUMBER;
33516 l_accted_amt_idx              NUMBER;
33517 l_acc_rev_flag                VARCHAR2(1);
33518 l_accrual_line_num            NUMBER;
33519 l_tmp_amt                     NUMBER;
33520 l_acc_rev_natural_side_code   VARCHAR2(1);
33521 
33522 l_num_entries                 NUMBER;
33523 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33524 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33525 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33526 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33527 l_recog_line_1                NUMBER;
33528 l_recog_line_2                NUMBER;
33529 
33530 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33531 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33532 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33533 
33534 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33535 
33536 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33537 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33538 
33539 ---------------------------------------------------------------------------------------------------------------
33540 
33541 
33542 --
33543 -- bulk performance
33544 --
33545 l_balance_type_code           VARCHAR2(1);
33546 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33547 l_log_module                  VARCHAR2(240);
33548 
33549 --
33550 -- Upgrade strategy
33551 --
33552 l_actual_upg_option           VARCHAR2(1);
33553 l_enc_upg_option           VARCHAR2(1);
33554 
33555 --
33556 BEGIN
33557 --
33558 IF g_log_enabled THEN
33559       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
33560 END IF;
33561 --
33562 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33563 
33564       trace
33565          (p_msg      => 'BEGIN of AcctLineType_61'
33566          ,p_level    => C_LEVEL_PROCEDURE
33567          ,p_module   => l_log_module);
33568 
33569 END IF;
33570 --
33571 l_component_type             := 'AMB_JLT';
33572 l_component_code             := 'RESERVE_BURDENED_RELEASE_ENC';
33573 l_component_type_code        := 'S';
33574 l_component_appl_id          :=  201;
33575 l_amb_context_code           := 'DEFAULT';
33576 l_entity_code                := 'RELEASE';
33577 l_event_class_code           := 'RELEASE_BURDEN';
33578 l_event_type_code            := 'RELEASE_BURDEN_ALL';
33579 l_line_definition_owner_code := 'S';
33580 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
33581 --
33582 l_balance_type_code          := 'E';
33583 l_segment                     := NULL;
33584 l_ccid                        := NULL;
33585 l_adr_transaction_coa_id      := NULL;
33586 l_adr_accounting_coa_id       := NULL;
33587 l_adr_flexfield_segment_code  := NULL;
33588 l_adr_flex_value_set_id       := NULL;
33589 l_adr_value_type_code         := NULL;
33590 l_adr_value_combination_id    := NULL;
33591 l_adr_value_segment_code      := NULL;
33592 
33593 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33594 l_bflow_class_code           := 'REL_PA_BURDENED_ENC';    -- 4219869 Business Flow
33595 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33596 l_budgetary_control_flag     := 'Y';
33597 
33598 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33599 l_bflow_applied_to_amt       := NULL; -- 5132302
33600 l_entered_amt_idx            := NULL;          -- 4262811
33601 l_accted_amt_idx             := NULL;          -- 4262811
33602 l_acc_rev_flag               := NULL;          -- 4262811
33603 l_accrual_line_num           := NULL;          -- 4262811
33604 l_tmp_amt                    := NULL;          -- 4262811
33605 --
33606  
33607 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33608     l_balance_type_code <> 'B' THEN
33609 IF NVL(
33610 xla_ae_sources_pkg.GetSystemSourceChar(
33611    p_source_code           => 'XLA_EVENT_TYPE_CODE'
33612  , p_source_type_code      => 'Y'
33613  , p_source_application_id =>  602
33614 ),'
33615 ') =  'REL_BURDEN_RESERVED' AND 
33616 NVL(p_source_13,'
33617 ') =  'M' AND 
33618 (NVL(p_source_14,'
33619 ') =  'O' OR 
33620 NVL(p_source_14,'
33621 ') =  'N') AND 
33622 NVL(p_source_9,'
33623 ') =  'PO' AND 
33624 NVL(p_source_15,'
33625 ') =  'S'
33626  THEN 
33627 
33628    --
33629    XLA_AE_LINES_PKG.SetNewLine;
33630 
33631    p_balance_type_code          := l_balance_type_code;
33632    -- set the flag so later we will know whether the gain loss line needs to be created
33633    
33634    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33635      p_actual_flag :='A';
33636    END IF;
33637 
33638    --
33639    -- bulk performance
33640    --
33641    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33642                                       p_header_num   => 0); -- 4262811
33643    --
33644    -- set accounting line options
33645    --
33646    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33647            p_natural_side_code          => 'D'
33648          , p_gain_or_loss_flag          => 'N'
33649          , p_gl_transfer_mode_code      => 'S'
33650          , p_acct_entry_type_code       => 'E'
33651          , p_switch_side_flag           => 'N'
33652          , p_merge_duplicate_code       => 'N'
33653          );
33654    --
33655    l_acc_rev_natural_side_code := 'C';  -- 4262811
33656    -- 
33657    --
33658    -- set accounting line type info
33659    --
33660    xla_ae_lines_pkg.SetAcctLineType
33661       (p_component_type             => l_component_type
33662       ,p_event_type_code            => l_event_type_code
33663       ,p_line_definition_owner_code => l_line_definition_owner_code
33664       ,p_line_definition_code       => l_line_definition_code
33665       ,p_accounting_line_code       => l_component_code
33666       ,p_accounting_line_type_code  => l_component_type_code
33667       ,p_accounting_line_appl_id    => l_component_appl_id
33668       ,p_amb_context_code           => l_amb_context_code
33669       ,p_entity_code                => l_entity_code
33670       ,p_event_class_code           => l_event_class_code);
33671    --
33672    -- set accounting class
33673    --
33674    xla_ae_lines_pkg.SetAcctClass(
33675            p_accounting_class_code  => 'PO_PA_BURDENED'
33676          , p_ae_header_id           => l_ae_header_id
33677          );
33678 
33679    --
33680    -- set rounding class
33681    --
33682    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33683                       'PO_PA_BURDENED';
33684 
33685    --
33686    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33687    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33688    --
33689    -- bulk performance
33690    --
33691    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33692 
33693    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33694       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33695 
33696    -- 4955764
33697    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33698       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33699 
33700    -- 4458381 Public Sector Enh
33701       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
33702    --
33703    -- set accounting attributes for the line type
33704    --
33705    l_entered_amt_idx := 28;
33706    l_accted_amt_idx  := 30;
33707    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33708    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33709    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
33710    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
33711    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
33712    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
33713    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
33714    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
33715    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
33716    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
33717    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
33718    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
33719    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
33720    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
33721    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
33722    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
33723    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
33724    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33725    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
33726    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
33727    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
33728    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
33729    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
33730    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33731    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
33732    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
33733    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
33734    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
33735    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
33736    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
33737    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
33738    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
33739    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
33740    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
33741    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
33742    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
33743    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
33744    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
33745    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
33746    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
33747    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
33748    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
33749    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
33750    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
33751    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
33752    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
33753    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
33754    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
33755    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
33756    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
33757    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
33758    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
33759    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
33760    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
33761    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
33762    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
33763    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
33764    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
33765    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
33766    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
33767    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
33768    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
33769    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
33770    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
33771    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
33772    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
33773    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
33774    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
33775    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
33776    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
33777    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
33778 
33779    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33780    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33781 
33782    ---------------------------------------------------------------------------------------------------------------
33783    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33784    ---------------------------------------------------------------------------------------------------------------
33785    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33786 
33787    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33788    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33789 
33790    IF xla_accounting_cache_pkg.GetValueChar
33791          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33792          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33793    AND l_bflow_method_code = 'PRIOR_ENTRY'
33794 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33795    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33796          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33797        )
33798    THEN
33799          xla_ae_lines_pkg.BflowUpgEntry
33800            (p_business_method_code    => l_bflow_method_code
33801            ,p_business_class_code     => l_bflow_class_code
33802            ,p_balance_type            => l_balance_type_code);
33803    ELSE
33804       NULL;
33805 -- No business flow processing for business flow method of NONE.
33806    END IF;
33807 
33808    --
33809    -- call analytical criteria
33810    --
33811    
33812    --
33813    -- call description
33814    --
33815    
33816 xla_ae_lines_pkg.SetLineDescription(
33817    p_ae_header_id => l_ae_header_id
33818   ,p_description  => Description_2 (
33819      p_application_id         => p_application_id
33820    , p_ae_header_id           => l_ae_header_id 
33821 , p_source_3 => p_source_3
33822 , p_source_4 => p_source_4
33823 , p_source_5 => p_source_5
33824 , p_source_6 => p_source_6
33825    )
33826 );
33827 
33828 
33829    --
33830    -- call ADRs
33831    -- Bug 4922099
33832    --
33833    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33834         (NVL(l_actual_upg_option, 'N') = 'O') OR
33835         (NVL(l_enc_upg_option, 'N') = 'O')
33836       )
33837    THEN
33838    NULL;
33839    --
33840    --
33841    
33842   l_ccid := AcctDerRule_6(
33843            p_application_id           => p_application_id
33844          , p_ae_header_id             => l_ae_header_id 
33845 , p_source_11 => p_source_11
33846          , x_transaction_coa_id       => l_adr_transaction_coa_id
33847          , x_accounting_coa_id        => l_adr_accounting_coa_id
33848          , x_value_type_code          => l_adr_value_type_code
33849          , p_side                     => 'NA'
33850    );
33851 
33852    xla_ae_lines_pkg.set_ccid(
33853     p_code_combination_id          => l_ccid
33854   , p_value_type_code              => l_adr_value_type_code
33855   , p_transaction_coa_id           => l_adr_transaction_coa_id
33856   , p_accounting_coa_id            => l_adr_accounting_coa_id
33857   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
33858   , p_adr_type_code                => 'S'
33859   , p_component_type               => l_component_type
33860   , p_component_code               => l_component_code
33861   , p_component_type_code          => l_component_type_code
33862   , p_component_appl_id            => l_component_appl_id
33863   , p_amb_context_code             => l_amb_context_code
33864   , p_side                         => 'NA'
33865   );
33866 
33867 
33868    --
33869    --
33870    END IF;
33871    --
33872    -- Bug 4922099
33873    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33874           (NVL(l_enc_upg_option, 'N') = 'O')
33875         ) AND
33876         (l_bflow_method_code = 'PRIOR_ENTRY')
33877       )
33878    THEN
33879       IF
33880       --
33881       1 = 2
33882       --
33883       THEN
33884       xla_accounting_err_pkg.build_message
33885                                     (p_appli_s_name            => 'XLA'
33886                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33887                                     ,p_token_1                 => 'LINE_NUMBER'
33888                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33889                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33890                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33891                                                                              l_component_type
33892                                                                             ,l_component_code
33893                                                                             ,l_component_type_code
33894                                                                             ,l_component_appl_id
33895                                                                             ,l_amb_context_code
33896                                                                             ,l_entity_code
33897                                                                             ,l_event_class_code
33898                                                                            )
33899                                     ,p_token_3                 => 'OWNER'
33900                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33901                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33902                                                                           ,p_lookup_code    => l_component_type_code
33903                                                                          )
33904                                     ,p_token_4                 => 'PRODUCT_NAME'
33905                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33906                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33907                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33908                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33909                                     ,p_ae_header_id            =>  NULL
33910                                        );
33911 
33912         IF (C_LEVEL_ERROR>= g_log_level) THEN
33913                  trace
33914                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33915                       ,p_level    => C_LEVEL_ERROR
33916                       ,p_module   => l_log_module);
33917         END IF;
33918       END IF;
33919    END IF;
33920    --
33921    --
33922    ------------------------------------------------------------------------------------------------
33923    -- 4219869 Business Flow
33924    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33925    -- Prior Entry.  Currently, the following code is always generated.
33926    ------------------------------------------------------------------------------------------------
33927    XLA_AE_LINES_PKG.ValidateCurrentLine;
33928 
33929    ------------------------------------------------------------------------------------
33930    -- 4219869 Business Flow
33931    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33932    ------------------------------------------------------------------------------------
33933    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33934 
33935    ----------------------------------------------------------------------------------
33936    -- 4219869 Business Flow
33937    -- Update journal entry status -- Need to generate this within IF <condition>
33938    ----------------------------------------------------------------------------------
33939    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33940          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33941          ,p_balance_type_code => l_balance_type_code
33942          );
33943 
33944    -------------------------------------------------------------------------------------------
33945    -- 4262811 - Generate the Accrual Reversal lines
33946    -------------------------------------------------------------------------------------------
33947    BEGIN
33948       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33949                               (g_array_event(p_event_id).array_value_num('header_index'));
33950       IF l_acc_rev_flag IS NULL THEN
33951          l_acc_rev_flag := 'N';
33952       END IF;
33953    EXCEPTION
33954       WHEN OTHERS THEN
33955          l_acc_rev_flag := 'N';
33956    END;
33957    --
33958    IF (l_acc_rev_flag = 'Y') THEN
33959 
33960        -- 4645092  ------------------------------------------------------------------------------
33961        -- To allow MPA report to determine if it should generate report process
33962        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33963        ------------------------------------------------------------------------------------------
33964 
33965        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33966        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33967 
33968        --
33969        -- Update the line information that should be overwritten
33970        --
33971        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33972                                          p_header_num   => 1);
33973        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33974 
33975        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33976 
33977        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33978           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33979        END IF;
33980 
33981       --
33982       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33983       --
33984       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33985           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33986       ELSE
33987           ---------------------------------------------------------------------------------------------------
33988           -- 4262811a Switch Sign
33989           ---------------------------------------------------------------------------------------------------
33990           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33991           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33992                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33993           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33994                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33995           -- 5132302
33996           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33997                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33998 
33999       END IF;
34000 
34001       -- 4955764
34002       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34003       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34004 
34005 
34006       XLA_AE_LINES_PKG.ValidateCurrentLine;
34007       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34008 
34009       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34010                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34011                ,p_balance_type_code => l_balance_type_code);
34012 
34013    END IF;
34014 
34015    -----------------------------------------------------------------------------------------
34016    -- 4262811 Multiperiod Accounting
34017    -----------------------------------------------------------------------------------------
34018      -- No MPA option is assigned.
34019 
34020 
34021 END IF;
34022 END IF;
34023 --
34024 
34025 --
34026 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34027    trace
34028       (p_msg      => 'END of AcctLineType_61'
34029       ,p_level    => C_LEVEL_PROCEDURE
34030       ,p_module   => l_log_module);
34031 END IF;
34032 --
34033 EXCEPTION
34034   WHEN xla_exceptions_pkg.application_exception THEN
34035       RAISE;
34036   WHEN OTHERS THEN
34037        xla_exceptions_pkg.raise_message
34038            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_61');
34039 END AcctLineType_61;
34040 --
34041 
34042 ---------------------------------------
34043 --
34044 -- PRIVATE FUNCTION
34045 --         AcctLineType_62
34046 --
34047 ---------------------------------------
34048 PROCEDURE AcctLineType_62 (
34049   p_application_id        IN NUMBER
34050  ,p_event_id              IN NUMBER
34051  ,p_calculate_acctd_flag  IN VARCHAR2
34052  ,p_calculate_g_l_flag    IN VARCHAR2
34053  ,p_actual_flag           IN OUT VARCHAR2
34054  ,p_balance_type_code     OUT VARCHAR2
34055  ,p_gain_or_loss_ref      OUT VARCHAR2
34056  
34057 --Project Name
34058  , p_source_3            IN VARCHAR2
34059 --Task Name
34060  , p_source_4            IN VARCHAR2
34061 --Project Expenditure Organization Identifier
34062  , p_source_5            IN NUMBER
34063 --Expenditure Type
34064  , p_source_6            IN VARCHAR2
34065 --Budget Account
34066  , p_source_11            IN NUMBER
34067 --Main Or Backing Code
34068  , p_source_13            IN VARCHAR2
34069 --Burden Record Identifier
34070  , p_source_14            IN VARCHAR2
34071  , p_source_14_meaning    IN VARCHAR2
34072 --Burden Amount Display Method
34073  , p_source_15            IN VARCHAR2
34074 --Accounting Reversal Flag
34075  , p_source_16            IN VARCHAR2
34076 --Allocated to Application Identifier
34077  , p_source_17            IN NUMBER
34078 --Allocated to Distribution Type
34079  , p_source_18            IN VARCHAR2
34080 --Allocated to Entity Code
34081  , p_source_19            IN VARCHAR2
34082 --Allocated to First Distribution Identifier
34083  , p_source_20            IN NUMBER
34084 --Allocated to First System Transaction Identifier
34085  , p_source_21            IN NUMBER
34086 --Allocated to Second Distribution Identifier
34087  , p_source_22            IN VARCHAR2
34088 --Line Type Name
34089  , p_source_30            IN VARCHAR2
34090 --Encumbrance Upgrade Credit Accounting Class
34091  , p_source_31            IN VARCHAR2
34092 --Encumbrance Upgrade Credit Account
34093  , p_source_32            IN NUMBER
34094 --Entered Amount
34095  , p_source_33            IN NUMBER
34096 --Currency Code
34097  , p_source_34            IN VARCHAR2
34098 --Accounted Amount
34099  , p_source_35            IN NUMBER
34100 --Encumbrance Upgrade Debit Accounting Class
34101  , p_source_36            IN VARCHAR2
34102 --Encumbrance Upgrade Debit Account
34103  , p_source_37            IN NUMBER
34104 --Use Encumbrances Upgrade Attributes Flag
34105  , p_source_38            IN VARCHAR2
34106 --Encumbrance Upgrade Credit Encumbrance Type
34107  , p_source_39            IN NUMBER
34108 --Encumbrance Upgrade Debit Encumbrance Type
34109  , p_source_40            IN NUMBER
34110 --Requisition Burden Applied to Application Identifier
34111  , p_source_41            IN NUMBER
34112 --Requisition Distribution Type
34113  , p_source_42            IN VARCHAR2
34114 --Requisition Burden Applied to Entity Code
34115  , p_source_43            IN VARCHAR2
34116 --Requisition Burden Applied to First Distribution Identifier
34117  , p_source_44            IN NUMBER
34118 --Requisition Burden Applied to First System Transaction Identifier
34119  , p_source_45            IN NUMBER
34120 --Requisition Burden Applied to Second Distribution Identifier
34121  , p_source_46            IN VARCHAR2
34122 --Requisition Distribution Identifier
34123  , p_source_47            IN NUMBER
34124 --Document Distribution Type
34125  , p_source_74            IN VARCHAR2
34126 )
34127 IS
34128 
34129 l_component_type              VARCHAR2(80);
34130 l_component_code              VARCHAR2(30);
34131 l_component_type_code         VARCHAR2(1);
34132 l_component_appl_id           INTEGER;
34133 l_amb_context_code            VARCHAR2(30);
34134 l_entity_code                 VARCHAR2(30);
34135 l_event_class_code            VARCHAR2(30);
34136 l_ae_header_id                NUMBER;
34137 l_event_type_code             VARCHAR2(30);
34138 l_line_definition_code        VARCHAR2(30);
34139 l_line_definition_owner_code  VARCHAR2(1);
34140 --
34141 -- adr variables
34142 l_segment                     VARCHAR2(30);
34143 l_ccid                        NUMBER;
34144 l_adr_transaction_coa_id      NUMBER;
34145 l_adr_accounting_coa_id       NUMBER;
34146 l_adr_flexfield_segment_code  VARCHAR2(30);
34147 l_adr_flex_value_set_id       NUMBER;
34148 l_adr_value_type_code         VARCHAR2(30);
34149 l_adr_value_combination_id    NUMBER;
34150 l_adr_value_segment_code      VARCHAR2(30);
34151 
34152 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34153 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34154 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34155 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34156 
34157 -- 4262811 Variables ------------------------------------------------------------------------------------------
34158 l_entered_amt_idx             NUMBER;
34159 l_accted_amt_idx              NUMBER;
34160 l_acc_rev_flag                VARCHAR2(1);
34161 l_accrual_line_num            NUMBER;
34162 l_tmp_amt                     NUMBER;
34163 l_acc_rev_natural_side_code   VARCHAR2(1);
34164 
34165 l_num_entries                 NUMBER;
34166 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34167 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34168 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34169 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34170 l_recog_line_1                NUMBER;
34171 l_recog_line_2                NUMBER;
34172 
34173 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34174 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34175 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34176 
34177 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34178 
34179 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34180 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34181 
34182 ---------------------------------------------------------------------------------------------------------------
34183 
34184 
34185 --
34186 -- bulk performance
34187 --
34188 l_balance_type_code           VARCHAR2(1);
34189 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34190 l_log_module                  VARCHAR2(240);
34191 
34192 --
34193 -- Upgrade strategy
34194 --
34195 l_actual_upg_option           VARCHAR2(1);
34196 l_enc_upg_option           VARCHAR2(1);
34197 
34198 --
34199 BEGIN
34200 --
34201 IF g_log_enabled THEN
34202       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
34203 END IF;
34204 --
34205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34206 
34207       trace
34208          (p_msg      => 'BEGIN of AcctLineType_62'
34209          ,p_level    => C_LEVEL_PROCEDURE
34210          ,p_module   => l_log_module);
34211 
34212 END IF;
34213 --
34214 l_component_type             := 'AMB_JLT';
34215 l_component_code             := 'RESERVE_BURDENED_REQ_ENC';
34216 l_component_type_code        := 'S';
34217 l_component_appl_id          :=  201;
34218 l_amb_context_code           := 'DEFAULT';
34219 l_entity_code                := 'REQUISITION';
34220 l_event_class_code           := 'REQUISITION_BURDEN';
34221 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
34222 l_line_definition_owner_code := 'S';
34223 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
34224 --
34225 l_balance_type_code          := 'E';
34226 l_segment                     := NULL;
34227 l_ccid                        := NULL;
34228 l_adr_transaction_coa_id      := NULL;
34229 l_adr_accounting_coa_id       := NULL;
34230 l_adr_flexfield_segment_code  := NULL;
34231 l_adr_flex_value_set_id       := NULL;
34232 l_adr_value_type_code         := NULL;
34233 l_adr_value_combination_id    := NULL;
34234 l_adr_value_segment_code      := NULL;
34235 
34236 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34237 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
34238 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34239 l_budgetary_control_flag     := 'Y';
34240 
34241 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34242 l_bflow_applied_to_amt       := NULL; -- 5132302
34243 l_entered_amt_idx            := NULL;          -- 4262811
34244 l_accted_amt_idx             := NULL;          -- 4262811
34245 l_acc_rev_flag               := NULL;          -- 4262811
34246 l_accrual_line_num           := NULL;          -- 4262811
34247 l_tmp_amt                    := NULL;          -- 4262811
34248 --
34249  
34250 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34251     l_balance_type_code <> 'B' THEN
34252 IF ((NVL(
34253 xla_ae_sources_pkg.GetSystemSourceChar(
34254    p_source_code           => 'XLA_EVENT_TYPE_CODE'
34255  , p_source_type_code      => 'Y'
34256  , p_source_application_id =>  602
34257 ),'
34258 ') =  'REQ_BURDEN_RESERVED' OR 
34259 (NVL(
34260 xla_ae_sources_pkg.GetSystemSourceChar(
34261    p_source_code           => 'XLA_EVENT_TYPE_CODE'
34262  , p_source_type_code      => 'Y'
34263  , p_source_application_id =>  602
34264 ),'
34265 ') =  'REQ_BURDEN_ADJUSTED' AND 
34266 NVL(p_source_74,'
34267 ') =  'REQUISITION_ADJUSTED_NEW')
34268 ) AND NVL(p_source_13,'
34269 ') =  'M') AND 
34270 (NVL(p_source_14,'
34271 ') =  'N' OR 
34272 NVL(p_source_14,'
34273 ') =  'O') AND 
34274 NVL(p_source_15,'
34275 ') =  'S'
34276  THEN 
34277 
34278    --
34279    XLA_AE_LINES_PKG.SetNewLine;
34280 
34281    p_balance_type_code          := l_balance_type_code;
34282    -- set the flag so later we will know whether the gain loss line needs to be created
34283    
34284    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34285      p_actual_flag :='A';
34286    END IF;
34287 
34288    --
34289    -- bulk performance
34290    --
34291    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34292                                       p_header_num   => 0); -- 4262811
34293    --
34294    -- set accounting line options
34295    --
34296    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34297            p_natural_side_code          => 'D'
34298          , p_gain_or_loss_flag          => 'N'
34299          , p_gl_transfer_mode_code      => 'S'
34300          , p_acct_entry_type_code       => 'E'
34301          , p_switch_side_flag           => 'N'
34302          , p_merge_duplicate_code       => 'N'
34303          );
34304    --
34305    l_acc_rev_natural_side_code := 'C';  -- 4262811
34306    -- 
34307    --
34308    -- set accounting line type info
34309    --
34310    xla_ae_lines_pkg.SetAcctLineType
34311       (p_component_type             => l_component_type
34312       ,p_event_type_code            => l_event_type_code
34313       ,p_line_definition_owner_code => l_line_definition_owner_code
34314       ,p_line_definition_code       => l_line_definition_code
34315       ,p_accounting_line_code       => l_component_code
34316       ,p_accounting_line_type_code  => l_component_type_code
34317       ,p_accounting_line_appl_id    => l_component_appl_id
34318       ,p_amb_context_code           => l_amb_context_code
34319       ,p_entity_code                => l_entity_code
34320       ,p_event_class_code           => l_event_class_code);
34321    --
34322    -- set accounting class
34323    --
34324    xla_ae_lines_pkg.SetAcctClass(
34325            p_accounting_class_code  => 'REQ_PA_BURDENED'
34326          , p_ae_header_id           => l_ae_header_id
34327          );
34328 
34329    --
34330    -- set rounding class
34331    --
34332    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34333                       'REQ_PA_BURDENED';
34334 
34335    --
34336    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34337    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34338    --
34339    -- bulk performance
34340    --
34341    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34342 
34343    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34344       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34345 
34346    -- 4955764
34347    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34348       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34349 
34350    -- 4458381 Public Sector Enh
34351       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
34352    --
34353    -- set accounting attributes for the line type
34354    --
34355    l_entered_amt_idx := 28;
34356    l_accted_amt_idx  := 30;
34357    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34358    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34359    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
34360    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
34361    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
34362    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
34363    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
34364    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
34365    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
34366    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
34367    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
34368    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
34369    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
34370    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
34371    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
34372    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
34373    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
34374    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
34375    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
34376    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
34377    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
34378    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
34379    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
34380    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
34381    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
34382    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
34383    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
34384    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
34385    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
34386    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
34387    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
34388    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
34389    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
34390    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
34391    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
34392    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
34393    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
34394    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
34395    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
34396    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
34397    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
34398    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
34399    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
34400    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
34401    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
34402    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
34403    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
34404    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
34405    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
34406    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
34407    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
34408    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
34409    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
34410    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
34411    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
34412    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
34413    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
34414    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
34415    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
34416    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
34417    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
34418    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
34419    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
34420    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
34421    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
34422    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
34423    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
34424    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
34425    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
34426    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
34427    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
34428 
34429    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34430    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34431 
34432    ---------------------------------------------------------------------------------------------------------------
34433    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34434    ---------------------------------------------------------------------------------------------------------------
34435    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34436 
34437    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34438    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34439 
34440    IF xla_accounting_cache_pkg.GetValueChar
34441          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34442          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34443    AND l_bflow_method_code = 'PRIOR_ENTRY'
34444 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34445    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34446          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34447        )
34448    THEN
34449          xla_ae_lines_pkg.BflowUpgEntry
34450            (p_business_method_code    => l_bflow_method_code
34451            ,p_business_class_code     => l_bflow_class_code
34452            ,p_balance_type            => l_balance_type_code);
34453    ELSE
34454       NULL;
34455 -- No business flow processing for business flow method of NONE.
34456    END IF;
34457 
34458    --
34459    -- call analytical criteria
34460    --
34461    
34462    --
34463    -- call description
34464    --
34465    
34466 xla_ae_lines_pkg.SetLineDescription(
34467    p_ae_header_id => l_ae_header_id
34468   ,p_description  => Description_2 (
34469      p_application_id         => p_application_id
34470    , p_ae_header_id           => l_ae_header_id 
34471 , p_source_3 => p_source_3
34472 , p_source_4 => p_source_4
34473 , p_source_5 => p_source_5
34474 , p_source_6 => p_source_6
34475    )
34476 );
34477 
34478 
34479    --
34480    -- call ADRs
34481    -- Bug 4922099
34482    --
34483    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34484         (NVL(l_actual_upg_option, 'N') = 'O') OR
34485         (NVL(l_enc_upg_option, 'N') = 'O')
34486       )
34487    THEN
34488    NULL;
34489    --
34490    --
34491    
34492   l_ccid := AcctDerRule_6(
34493            p_application_id           => p_application_id
34494          , p_ae_header_id             => l_ae_header_id 
34495 , p_source_11 => p_source_11
34496          , x_transaction_coa_id       => l_adr_transaction_coa_id
34497          , x_accounting_coa_id        => l_adr_accounting_coa_id
34498          , x_value_type_code          => l_adr_value_type_code
34499          , p_side                     => 'NA'
34500    );
34501 
34502    xla_ae_lines_pkg.set_ccid(
34503     p_code_combination_id          => l_ccid
34504   , p_value_type_code              => l_adr_value_type_code
34505   , p_transaction_coa_id           => l_adr_transaction_coa_id
34506   , p_accounting_coa_id            => l_adr_accounting_coa_id
34507   , p_adr_code                     => 'PROJ_BURDENED_ENC_ACCT_RULE'
34508   , p_adr_type_code                => 'S'
34509   , p_component_type               => l_component_type
34510   , p_component_code               => l_component_code
34511   , p_component_type_code          => l_component_type_code
34512   , p_component_appl_id            => l_component_appl_id
34513   , p_amb_context_code             => l_amb_context_code
34514   , p_side                         => 'NA'
34515   );
34516 
34517 
34518    --
34519    --
34520    END IF;
34521    --
34522    -- Bug 4922099
34523    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34524           (NVL(l_enc_upg_option, 'N') = 'O')
34525         ) AND
34526         (l_bflow_method_code = 'PRIOR_ENTRY')
34527       )
34528    THEN
34529       IF
34530       --
34531       1 = 2
34532       --
34533       THEN
34534       xla_accounting_err_pkg.build_message
34535                                     (p_appli_s_name            => 'XLA'
34536                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34537                                     ,p_token_1                 => 'LINE_NUMBER'
34538                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34539                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34540                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34541                                                                              l_component_type
34542                                                                             ,l_component_code
34543                                                                             ,l_component_type_code
34544                                                                             ,l_component_appl_id
34545                                                                             ,l_amb_context_code
34546                                                                             ,l_entity_code
34547                                                                             ,l_event_class_code
34548                                                                            )
34549                                     ,p_token_3                 => 'OWNER'
34550                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34551                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34552                                                                           ,p_lookup_code    => l_component_type_code
34553                                                                          )
34554                                     ,p_token_4                 => 'PRODUCT_NAME'
34555                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34556                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34557                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34558                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34559                                     ,p_ae_header_id            =>  NULL
34560                                        );
34561 
34562         IF (C_LEVEL_ERROR>= g_log_level) THEN
34563                  trace
34564                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34565                       ,p_level    => C_LEVEL_ERROR
34566                       ,p_module   => l_log_module);
34567         END IF;
34568       END IF;
34569    END IF;
34570    --
34571    --
34572    ------------------------------------------------------------------------------------------------
34573    -- 4219869 Business Flow
34574    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34575    -- Prior Entry.  Currently, the following code is always generated.
34576    ------------------------------------------------------------------------------------------------
34577    XLA_AE_LINES_PKG.ValidateCurrentLine;
34578 
34579    ------------------------------------------------------------------------------------
34580    -- 4219869 Business Flow
34581    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34582    ------------------------------------------------------------------------------------
34583    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34584 
34585    ----------------------------------------------------------------------------------
34586    -- 4219869 Business Flow
34587    -- Update journal entry status -- Need to generate this within IF <condition>
34588    ----------------------------------------------------------------------------------
34589    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34590          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34591          ,p_balance_type_code => l_balance_type_code
34592          );
34593 
34594    -------------------------------------------------------------------------------------------
34595    -- 4262811 - Generate the Accrual Reversal lines
34596    -------------------------------------------------------------------------------------------
34597    BEGIN
34598       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34599                               (g_array_event(p_event_id).array_value_num('header_index'));
34600       IF l_acc_rev_flag IS NULL THEN
34601          l_acc_rev_flag := 'N';
34602       END IF;
34603    EXCEPTION
34604       WHEN OTHERS THEN
34605          l_acc_rev_flag := 'N';
34606    END;
34607    --
34608    IF (l_acc_rev_flag = 'Y') THEN
34609 
34610        -- 4645092  ------------------------------------------------------------------------------
34611        -- To allow MPA report to determine if it should generate report process
34612        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34613        ------------------------------------------------------------------------------------------
34614 
34615        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34616        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34617 
34618        --
34619        -- Update the line information that should be overwritten
34620        --
34621        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34622                                          p_header_num   => 1);
34623        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34624 
34625        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34626 
34627        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34628           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34629        END IF;
34630 
34631       --
34632       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34633       --
34634       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34635           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34636       ELSE
34637           ---------------------------------------------------------------------------------------------------
34638           -- 4262811a Switch Sign
34639           ---------------------------------------------------------------------------------------------------
34640           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34641           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34642                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34643           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34644                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34645           -- 5132302
34646           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34647                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34648 
34649       END IF;
34650 
34651       -- 4955764
34652       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34653       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34654 
34655 
34656       XLA_AE_LINES_PKG.ValidateCurrentLine;
34657       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34658 
34659       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34660                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34661                ,p_balance_type_code => l_balance_type_code);
34662 
34663    END IF;
34664 
34665    -----------------------------------------------------------------------------------------
34666    -- 4262811 Multiperiod Accounting
34667    -----------------------------------------------------------------------------------------
34668      -- No MPA option is assigned.
34669 
34670 
34671 END IF;
34672 END IF;
34673 --
34674 
34675 --
34676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34677    trace
34678       (p_msg      => 'END of AcctLineType_62'
34679       ,p_level    => C_LEVEL_PROCEDURE
34680       ,p_module   => l_log_module);
34681 END IF;
34682 --
34683 EXCEPTION
34684   WHEN xla_exceptions_pkg.application_exception THEN
34685       RAISE;
34686   WHEN OTHERS THEN
34687        xla_exceptions_pkg.raise_message
34688            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_62');
34689 END AcctLineType_62;
34690 --
34691 
34692 ---------------------------------------
34693 --
34694 -- PRIVATE FUNCTION
34695 --         AcctLineType_63
34696 --
34697 ---------------------------------------
34698 PROCEDURE AcctLineType_63 (
34699   p_application_id        IN NUMBER
34700  ,p_event_id              IN NUMBER
34701  ,p_calculate_acctd_flag  IN VARCHAR2
34702  ,p_calculate_g_l_flag    IN VARCHAR2
34703  ,p_actual_flag           IN OUT VARCHAR2
34704  ,p_balance_type_code     OUT VARCHAR2
34705  ,p_gain_or_loss_ref      OUT VARCHAR2
34706  
34707 --Project Name
34708  , p_source_3            IN VARCHAR2
34709 --Task Name
34710  , p_source_4            IN VARCHAR2
34711 --Project Expenditure Organization Identifier
34712  , p_source_5            IN NUMBER
34713 --Expenditure Type
34714  , p_source_6            IN VARCHAR2
34715 --Document Type
34716  , p_source_9            IN VARCHAR2
34717 --Budget Account
34718  , p_source_11            IN NUMBER
34719 --Main Or Backing Code
34720  , p_source_13            IN VARCHAR2
34721 --Burden Record Identifier
34722  , p_source_14            IN VARCHAR2
34723  , p_source_14_meaning    IN VARCHAR2
34724 --Burden Amount Display Method
34725  , p_source_15            IN VARCHAR2
34726 --Accounting Reversal Flag
34727  , p_source_16            IN VARCHAR2
34728 --Allocated to Application Identifier
34729  , p_source_17            IN NUMBER
34730 --Allocated to Distribution Type
34731  , p_source_18            IN VARCHAR2
34732 --Allocated to Entity Code
34733  , p_source_19            IN VARCHAR2
34734 --Allocated to First Distribution Identifier
34735  , p_source_20            IN NUMBER
34736 --Allocated to First System Transaction Identifier
34737  , p_source_21            IN NUMBER
34738 --Purchase Order Burden Applied to Application Identifier
34739  , p_source_23            IN NUMBER
34740 --PO Distribution Type
34741  , p_source_24            IN VARCHAR2
34742 --Purchase Order Burden Applied to Entity Code
34743  , p_source_25            IN VARCHAR2
34744 --Purchase Order Burden Applied to First Distribution Identifier
34745  , p_source_26            IN NUMBER
34746 --Purchase Order Burden Applied to First System Transaction Identifier
34747  , p_source_27            IN NUMBER
34748 --Purchase Order Burden Applied to Second Distribution Identifier
34749  , p_source_28            IN VARCHAR2
34750 --PO Distribution Identifier
34751  , p_source_29            IN NUMBER
34752 --Line Type Name
34753  , p_source_30            IN VARCHAR2
34754 --Encumbrance Upgrade Credit Accounting Class
34755  , p_source_31            IN VARCHAR2
34756 --Encumbrance Upgrade Credit Account
34757  , p_source_32            IN NUMBER
34758 --Entered Amount
34759  , p_source_33            IN NUMBER
34760 --Currency Code
34761  , p_source_34            IN VARCHAR2
34762 --Accounted Amount
34763  , p_source_35            IN NUMBER
34764 --Encumbrance Upgrade Debit Accounting Class
34765  , p_source_36            IN VARCHAR2
34766 --Encumbrance Upgrade Debit Account
34767  , p_source_37            IN NUMBER
34768 --Use Encumbrances Upgrade Attributes Flag
34769  , p_source_38            IN VARCHAR2
34770 --Encumbrance Upgrade Credit Encumbrance Type
34771  , p_source_39            IN NUMBER
34772 --Encumbrance Upgrade Debit Encumbrance Type
34773  , p_source_40            IN NUMBER
34774 )
34775 IS
34776 
34777 l_component_type              VARCHAR2(80);
34778 l_component_code              VARCHAR2(30);
34779 l_component_type_code         VARCHAR2(1);
34780 l_component_appl_id           INTEGER;
34781 l_amb_context_code            VARCHAR2(30);
34782 l_entity_code                 VARCHAR2(30);
34783 l_event_class_code            VARCHAR2(30);
34784 l_ae_header_id                NUMBER;
34785 l_event_type_code             VARCHAR2(30);
34786 l_line_definition_code        VARCHAR2(30);
34787 l_line_definition_owner_code  VARCHAR2(1);
34788 --
34789 -- adr variables
34790 l_segment                     VARCHAR2(30);
34791 l_ccid                        NUMBER;
34792 l_adr_transaction_coa_id      NUMBER;
34793 l_adr_accounting_coa_id       NUMBER;
34794 l_adr_flexfield_segment_code  VARCHAR2(30);
34795 l_adr_flex_value_set_id       NUMBER;
34796 l_adr_value_type_code         VARCHAR2(30);
34797 l_adr_value_combination_id    NUMBER;
34798 l_adr_value_segment_code      VARCHAR2(30);
34799 
34800 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34801 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34802 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34803 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34804 
34805 -- 4262811 Variables ------------------------------------------------------------------------------------------
34806 l_entered_amt_idx             NUMBER;
34807 l_accted_amt_idx              NUMBER;
34808 l_acc_rev_flag                VARCHAR2(1);
34809 l_accrual_line_num            NUMBER;
34810 l_tmp_amt                     NUMBER;
34811 l_acc_rev_natural_side_code   VARCHAR2(1);
34812 
34813 l_num_entries                 NUMBER;
34814 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34815 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34816 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34817 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34818 l_recog_line_1                NUMBER;
34819 l_recog_line_2                NUMBER;
34820 
34821 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34822 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34823 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34824 
34825 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34826 
34827 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34828 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34829 
34830 ---------------------------------------------------------------------------------------------------------------
34831 
34832 
34833 --
34834 -- bulk performance
34835 --
34836 l_balance_type_code           VARCHAR2(1);
34837 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34838 l_log_module                  VARCHAR2(240);
34839 
34840 --
34841 -- Upgrade strategy
34842 --
34843 l_actual_upg_option           VARCHAR2(1);
34844 l_enc_upg_option           VARCHAR2(1);
34845 
34846 --
34847 BEGIN
34848 --
34849 IF g_log_enabled THEN
34850       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
34851 END IF;
34852 --
34853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34854 
34855       trace
34856          (p_msg      => 'BEGIN of AcctLineType_63'
34857          ,p_level    => C_LEVEL_PROCEDURE
34858          ,p_module   => l_log_module);
34859 
34860 END IF;
34861 --
34862 l_component_type             := 'AMB_JLT';
34863 l_component_code             := 'RESERVE_BURDEN_PO_ENC';
34864 l_component_type_code        := 'S';
34865 l_component_appl_id          :=  201;
34866 l_amb_context_code           := 'DEFAULT';
34867 l_entity_code                := 'PURCHASE_ORDER';
34868 l_event_class_code           := 'PO_BURDEN';
34869 l_event_type_code            := 'PO_BURDEN_ALL';
34870 l_line_definition_owner_code := 'S';
34871 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
34872 --
34873 l_balance_type_code          := 'E';
34874 l_segment                     := NULL;
34875 l_ccid                        := NULL;
34876 l_adr_transaction_coa_id      := NULL;
34877 l_adr_accounting_coa_id       := NULL;
34878 l_adr_flexfield_segment_code  := NULL;
34879 l_adr_flex_value_set_id       := NULL;
34880 l_adr_value_type_code         := NULL;
34881 l_adr_value_combination_id    := NULL;
34882 l_adr_value_segment_code      := NULL;
34883 
34884 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34885 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
34886 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34887 l_budgetary_control_flag     := 'Y';
34888 
34889 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34890 l_bflow_applied_to_amt       := NULL; -- 5132302
34891 l_entered_amt_idx            := NULL;          -- 4262811
34892 l_accted_amt_idx             := NULL;          -- 4262811
34893 l_acc_rev_flag               := NULL;          -- 4262811
34894 l_accrual_line_num           := NULL;          -- 4262811
34895 l_tmp_amt                    := NULL;          -- 4262811
34896 --
34897  
34898 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34899     l_balance_type_code <> 'B' THEN
34900 IF NVL(
34901 xla_ae_sources_pkg.GetSystemSourceChar(
34902    p_source_code           => 'XLA_EVENT_TYPE_CODE'
34903  , p_source_type_code      => 'Y'
34904  , p_source_application_id =>  602
34905 ),'
34906 ') =  'PO_BURDEN_RESERVED' AND 
34907 NVL(p_source_13,'
34908 ') =  'M' AND 
34909 NVL(p_source_14,'
34910 ') =  'O' AND 
34911 NVL(p_source_9,'
34912 ') =  'PO' AND 
34913 NVL(p_source_15,'
34914 ') =  'D'
34915  THEN 
34916 
34917    --
34918    XLA_AE_LINES_PKG.SetNewLine;
34919 
34920    p_balance_type_code          := l_balance_type_code;
34921    -- set the flag so later we will know whether the gain loss line needs to be created
34922    
34923    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34924      p_actual_flag :='A';
34925    END IF;
34926 
34927    --
34928    -- bulk performance
34929    --
34930    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34931                                       p_header_num   => 0); -- 4262811
34932    --
34933    -- set accounting line options
34934    --
34935    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34936            p_natural_side_code          => 'D'
34937          , p_gain_or_loss_flag          => 'N'
34938          , p_gl_transfer_mode_code      => 'S'
34939          , p_acct_entry_type_code       => 'E'
34940          , p_switch_side_flag           => 'N'
34941          , p_merge_duplicate_code       => 'N'
34942          );
34943    --
34944    l_acc_rev_natural_side_code := 'C';  -- 4262811
34945    -- 
34946    --
34947    -- set accounting line type info
34948    --
34949    xla_ae_lines_pkg.SetAcctLineType
34950       (p_component_type             => l_component_type
34951       ,p_event_type_code            => l_event_type_code
34952       ,p_line_definition_owner_code => l_line_definition_owner_code
34953       ,p_line_definition_code       => l_line_definition_code
34954       ,p_accounting_line_code       => l_component_code
34955       ,p_accounting_line_type_code  => l_component_type_code
34956       ,p_accounting_line_appl_id    => l_component_appl_id
34957       ,p_amb_context_code           => l_amb_context_code
34958       ,p_entity_code                => l_entity_code
34959       ,p_event_class_code           => l_event_class_code);
34960    --
34961    -- set accounting class
34962    --
34963    xla_ae_lines_pkg.SetAcctClass(
34964            p_accounting_class_code  => 'PO_PA_BURDEN'
34965          , p_ae_header_id           => l_ae_header_id
34966          );
34967 
34968    --
34969    -- set rounding class
34970    --
34971    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34972                       'PO_PA_BURDEN';
34973 
34974    --
34975    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34976    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34977    --
34978    -- bulk performance
34979    --
34980    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34981 
34982    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34983       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34984 
34985    -- 4955764
34986    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34987       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34988 
34989    -- 4458381 Public Sector Enh
34990       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
34991    --
34992    -- set accounting attributes for the line type
34993    --
34994    l_entered_amt_idx := 27;
34995    l_accted_amt_idx  := 29;
34996    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34997    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34998    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
34999    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
35000    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
35001    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
35002    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
35003    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
35004    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
35005    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
35006    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
35007    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
35008    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
35009    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
35010    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
35011    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35012    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
35013    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
35014    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
35015    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
35016    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
35017    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35018    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
35019    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
35020    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
35021    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
35022    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
35023    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
35024    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
35025    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
35026    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
35027    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
35028    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
35029    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
35030    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
35031    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
35032    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
35033    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
35034    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
35035    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
35036    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
35037    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
35038    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
35039    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
35040    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
35041    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
35042    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
35043    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
35044    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
35045    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
35046    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
35047    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
35048    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
35049    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
35050    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
35051    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
35052    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
35053    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
35054    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
35055    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
35056    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
35057    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
35058    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
35059    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
35060    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
35061    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
35062    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
35063    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
35064    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
35065 
35066    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35067    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35068 
35069    ---------------------------------------------------------------------------------------------------------------
35070    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35071    ---------------------------------------------------------------------------------------------------------------
35072    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35073 
35074    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35075    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35076 
35077    IF xla_accounting_cache_pkg.GetValueChar
35078          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35079          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35080    AND l_bflow_method_code = 'PRIOR_ENTRY'
35081 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35082    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35083          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35084        )
35085    THEN
35086          xla_ae_lines_pkg.BflowUpgEntry
35087            (p_business_method_code    => l_bflow_method_code
35088            ,p_business_class_code     => l_bflow_class_code
35089            ,p_balance_type            => l_balance_type_code);
35090    ELSE
35091       NULL;
35092 -- No business flow processing for business flow method of NONE.
35093    END IF;
35094 
35095    --
35096    -- call analytical criteria
35097    --
35098    
35099    --
35100    -- call description
35101    --
35102    
35103 xla_ae_lines_pkg.SetLineDescription(
35104    p_ae_header_id => l_ae_header_id
35105   ,p_description  => Description_2 (
35106      p_application_id         => p_application_id
35107    , p_ae_header_id           => l_ae_header_id 
35108 , p_source_3 => p_source_3
35109 , p_source_4 => p_source_4
35110 , p_source_5 => p_source_5
35111 , p_source_6 => p_source_6
35112    )
35113 );
35114 
35115 
35116    --
35117    -- call ADRs
35118    -- Bug 4922099
35119    --
35120    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35121         (NVL(l_actual_upg_option, 'N') = 'O') OR
35122         (NVL(l_enc_upg_option, 'N') = 'O')
35123       )
35124    THEN
35125    NULL;
35126    --
35127    --
35128    
35129   l_ccid := AcctDerRule_7(
35130            p_application_id           => p_application_id
35131          , p_ae_header_id             => l_ae_header_id 
35132 , p_source_11 => p_source_11
35133          , x_transaction_coa_id       => l_adr_transaction_coa_id
35134          , x_accounting_coa_id        => l_adr_accounting_coa_id
35135          , x_value_type_code          => l_adr_value_type_code
35136          , p_side                     => 'NA'
35137    );
35138 
35139    xla_ae_lines_pkg.set_ccid(
35140     p_code_combination_id          => l_ccid
35141   , p_value_type_code              => l_adr_value_type_code
35142   , p_transaction_coa_id           => l_adr_transaction_coa_id
35143   , p_accounting_coa_id            => l_adr_accounting_coa_id
35144   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
35145   , p_adr_type_code                => 'S'
35146   , p_component_type               => l_component_type
35147   , p_component_code               => l_component_code
35148   , p_component_type_code          => l_component_type_code
35149   , p_component_appl_id            => l_component_appl_id
35150   , p_amb_context_code             => l_amb_context_code
35151   , p_side                         => 'NA'
35152   );
35153 
35154 
35155    --
35156    --
35157    END IF;
35158    --
35159    -- Bug 4922099
35160    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35161           (NVL(l_enc_upg_option, 'N') = 'O')
35162         ) AND
35163         (l_bflow_method_code = 'PRIOR_ENTRY')
35164       )
35165    THEN
35166       IF
35167       --
35168       1 = 2
35169       --
35170       THEN
35171       xla_accounting_err_pkg.build_message
35172                                     (p_appli_s_name            => 'XLA'
35173                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35174                                     ,p_token_1                 => 'LINE_NUMBER'
35175                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35176                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35177                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35178                                                                              l_component_type
35179                                                                             ,l_component_code
35180                                                                             ,l_component_type_code
35181                                                                             ,l_component_appl_id
35182                                                                             ,l_amb_context_code
35183                                                                             ,l_entity_code
35184                                                                             ,l_event_class_code
35185                                                                            )
35186                                     ,p_token_3                 => 'OWNER'
35187                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35188                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35189                                                                           ,p_lookup_code    => l_component_type_code
35190                                                                          )
35191                                     ,p_token_4                 => 'PRODUCT_NAME'
35192                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35193                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35194                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35195                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35196                                     ,p_ae_header_id            =>  NULL
35197                                        );
35198 
35199         IF (C_LEVEL_ERROR>= g_log_level) THEN
35200                  trace
35201                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35202                       ,p_level    => C_LEVEL_ERROR
35203                       ,p_module   => l_log_module);
35204         END IF;
35205       END IF;
35206    END IF;
35207    --
35208    --
35209    ------------------------------------------------------------------------------------------------
35210    -- 4219869 Business Flow
35211    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35212    -- Prior Entry.  Currently, the following code is always generated.
35213    ------------------------------------------------------------------------------------------------
35214    XLA_AE_LINES_PKG.ValidateCurrentLine;
35215 
35216    ------------------------------------------------------------------------------------
35217    -- 4219869 Business Flow
35218    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35219    ------------------------------------------------------------------------------------
35220    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35221 
35222    ----------------------------------------------------------------------------------
35223    -- 4219869 Business Flow
35224    -- Update journal entry status -- Need to generate this within IF <condition>
35225    ----------------------------------------------------------------------------------
35226    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35227          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35228          ,p_balance_type_code => l_balance_type_code
35229          );
35230 
35231    -------------------------------------------------------------------------------------------
35232    -- 4262811 - Generate the Accrual Reversal lines
35233    -------------------------------------------------------------------------------------------
35234    BEGIN
35235       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35236                               (g_array_event(p_event_id).array_value_num('header_index'));
35237       IF l_acc_rev_flag IS NULL THEN
35238          l_acc_rev_flag := 'N';
35239       END IF;
35240    EXCEPTION
35241       WHEN OTHERS THEN
35242          l_acc_rev_flag := 'N';
35243    END;
35244    --
35245    IF (l_acc_rev_flag = 'Y') THEN
35246 
35247        -- 4645092  ------------------------------------------------------------------------------
35248        -- To allow MPA report to determine if it should generate report process
35249        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35250        ------------------------------------------------------------------------------------------
35251 
35252        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35253        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35254 
35255        --
35256        -- Update the line information that should be overwritten
35257        --
35258        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35259                                          p_header_num   => 1);
35260        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35261 
35262        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35263 
35264        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35265           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35266        END IF;
35267 
35268       --
35269       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35270       --
35271       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35272           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35273       ELSE
35274           ---------------------------------------------------------------------------------------------------
35275           -- 4262811a Switch Sign
35276           ---------------------------------------------------------------------------------------------------
35277           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35278           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35279                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35280           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35281                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35282           -- 5132302
35283           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35284                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35285 
35286       END IF;
35287 
35288       -- 4955764
35289       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35290       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35291 
35292 
35293       XLA_AE_LINES_PKG.ValidateCurrentLine;
35294       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35295 
35296       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35297                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35298                ,p_balance_type_code => l_balance_type_code);
35299 
35300    END IF;
35301 
35302    -----------------------------------------------------------------------------------------
35303    -- 4262811 Multiperiod Accounting
35304    -----------------------------------------------------------------------------------------
35305      -- No MPA option is assigned.
35306 
35307 
35308 END IF;
35309 END IF;
35310 --
35311 
35312 --
35313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35314    trace
35315       (p_msg      => 'END of AcctLineType_63'
35316       ,p_level    => C_LEVEL_PROCEDURE
35317       ,p_module   => l_log_module);
35318 END IF;
35319 --
35320 EXCEPTION
35321   WHEN xla_exceptions_pkg.application_exception THEN
35322       RAISE;
35323   WHEN OTHERS THEN
35324        xla_exceptions_pkg.raise_message
35325            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_63');
35326 END AcctLineType_63;
35327 --
35328 
35329 ---------------------------------------
35330 --
35331 -- PRIVATE FUNCTION
35332 --         AcctLineType_64
35333 --
35334 ---------------------------------------
35335 PROCEDURE AcctLineType_64 (
35336   p_application_id        IN NUMBER
35337  ,p_event_id              IN NUMBER
35338  ,p_calculate_acctd_flag  IN VARCHAR2
35339  ,p_calculate_g_l_flag    IN VARCHAR2
35340  ,p_actual_flag           IN OUT VARCHAR2
35341  ,p_balance_type_code     OUT VARCHAR2
35342  ,p_gain_or_loss_ref      OUT VARCHAR2
35343  
35344 --Project Name
35345  , p_source_3            IN VARCHAR2
35346 --Task Name
35347  , p_source_4            IN VARCHAR2
35348 --Project Expenditure Organization Identifier
35349  , p_source_5            IN NUMBER
35350 --Expenditure Type
35351  , p_source_6            IN VARCHAR2
35352 --Document Type
35353  , p_source_9            IN VARCHAR2
35354 --Budget Account
35355  , p_source_11            IN NUMBER
35356 --Main Or Backing Code
35357  , p_source_13            IN VARCHAR2
35358 --Burden Record Identifier
35359  , p_source_14            IN VARCHAR2
35360  , p_source_14_meaning    IN VARCHAR2
35361 --Burden Amount Display Method
35362  , p_source_15            IN VARCHAR2
35363 --Accounting Reversal Flag
35364  , p_source_16            IN VARCHAR2
35365 --Allocated to Application Identifier
35366  , p_source_17            IN NUMBER
35367 --Allocated to Distribution Type
35368  , p_source_18            IN VARCHAR2
35369 --Allocated to Entity Code
35370  , p_source_19            IN VARCHAR2
35371 --Allocated to First Distribution Identifier
35372  , p_source_20            IN NUMBER
35373 --Allocated to First System Transaction Identifier
35374  , p_source_21            IN NUMBER
35375 --Allocated to Second Distribution Identifier
35376  , p_source_22            IN VARCHAR2
35377 --Purchase Order Burden Applied to Application Identifier
35378  , p_source_23            IN NUMBER
35379 --PO Distribution Type
35380  , p_source_24            IN VARCHAR2
35381 --Purchase Order Burden Applied to Entity Code
35382  , p_source_25            IN VARCHAR2
35383 --Purchase Order Burden Applied to First Distribution Identifier
35384  , p_source_26            IN NUMBER
35385 --Purchase Order Burden Applied to First System Transaction Identifier
35386  , p_source_27            IN NUMBER
35387 --Purchase Order Burden Applied to Second Distribution Identifier
35388  , p_source_28            IN VARCHAR2
35389 --PO Distribution Identifier
35390  , p_source_29            IN NUMBER
35391 --Line Type Name
35392  , p_source_30            IN VARCHAR2
35393 --Encumbrance Upgrade Credit Accounting Class
35394  , p_source_31            IN VARCHAR2
35395 --Encumbrance Upgrade Credit Account
35396  , p_source_32            IN NUMBER
35397 --Entered Amount
35398  , p_source_33            IN NUMBER
35399 --Currency Code
35400  , p_source_34            IN VARCHAR2
35401 --Accounted Amount
35402  , p_source_35            IN NUMBER
35403 --Encumbrance Upgrade Debit Accounting Class
35404  , p_source_36            IN VARCHAR2
35405 --Encumbrance Upgrade Debit Account
35406  , p_source_37            IN NUMBER
35407 --Use Encumbrances Upgrade Attributes Flag
35408  , p_source_38            IN VARCHAR2
35409 --Encumbrance Upgrade Credit Encumbrance Type
35410  , p_source_39            IN NUMBER
35411 --Encumbrance Upgrade Debit Encumbrance Type
35412  , p_source_40            IN NUMBER
35413 )
35414 IS
35415 
35416 l_component_type              VARCHAR2(80);
35417 l_component_code              VARCHAR2(30);
35418 l_component_type_code         VARCHAR2(1);
35419 l_component_appl_id           INTEGER;
35420 l_amb_context_code            VARCHAR2(30);
35421 l_entity_code                 VARCHAR2(30);
35422 l_event_class_code            VARCHAR2(30);
35423 l_ae_header_id                NUMBER;
35424 l_event_type_code             VARCHAR2(30);
35425 l_line_definition_code        VARCHAR2(30);
35426 l_line_definition_owner_code  VARCHAR2(1);
35427 --
35428 -- adr variables
35429 l_segment                     VARCHAR2(30);
35430 l_ccid                        NUMBER;
35431 l_adr_transaction_coa_id      NUMBER;
35432 l_adr_accounting_coa_id       NUMBER;
35433 l_adr_flexfield_segment_code  VARCHAR2(30);
35434 l_adr_flex_value_set_id       NUMBER;
35435 l_adr_value_type_code         VARCHAR2(30);
35436 l_adr_value_combination_id    NUMBER;
35437 l_adr_value_segment_code      VARCHAR2(30);
35438 
35439 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35440 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35441 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35442 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35443 
35444 -- 4262811 Variables ------------------------------------------------------------------------------------------
35445 l_entered_amt_idx             NUMBER;
35446 l_accted_amt_idx              NUMBER;
35447 l_acc_rev_flag                VARCHAR2(1);
35448 l_accrual_line_num            NUMBER;
35449 l_tmp_amt                     NUMBER;
35450 l_acc_rev_natural_side_code   VARCHAR2(1);
35451 
35452 l_num_entries                 NUMBER;
35453 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35454 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35455 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35456 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35457 l_recog_line_1                NUMBER;
35458 l_recog_line_2                NUMBER;
35459 
35460 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35461 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35462 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35463 
35464 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35465 
35466 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35467 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35468 
35469 ---------------------------------------------------------------------------------------------------------------
35470 
35471 
35472 --
35473 -- bulk performance
35474 --
35475 l_balance_type_code           VARCHAR2(1);
35476 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35477 l_log_module                  VARCHAR2(240);
35478 
35479 --
35480 -- Upgrade strategy
35481 --
35482 l_actual_upg_option           VARCHAR2(1);
35483 l_enc_upg_option           VARCHAR2(1);
35484 
35485 --
35486 BEGIN
35487 --
35488 IF g_log_enabled THEN
35489       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
35490 END IF;
35491 --
35492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35493 
35494       trace
35495          (p_msg      => 'BEGIN of AcctLineType_64'
35496          ,p_level    => C_LEVEL_PROCEDURE
35497          ,p_module   => l_log_module);
35498 
35499 END IF;
35500 --
35501 l_component_type             := 'AMB_JLT';
35502 l_component_code             := 'RESERVE_BURDEN_REL_ENC';
35503 l_component_type_code        := 'S';
35504 l_component_appl_id          :=  201;
35505 l_amb_context_code           := 'DEFAULT';
35506 l_entity_code                := 'RELEASE';
35507 l_event_class_code           := 'RELEASE_BURDEN';
35508 l_event_type_code            := 'RELEASE_BURDEN_ALL';
35509 l_line_definition_owner_code := 'S';
35510 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
35511 --
35512 l_balance_type_code          := 'E';
35513 l_segment                     := NULL;
35514 l_ccid                        := NULL;
35515 l_adr_transaction_coa_id      := NULL;
35516 l_adr_accounting_coa_id       := NULL;
35517 l_adr_flexfield_segment_code  := NULL;
35518 l_adr_flex_value_set_id       := NULL;
35519 l_adr_value_type_code         := NULL;
35520 l_adr_value_combination_id    := NULL;
35521 l_adr_value_segment_code      := NULL;
35522 
35523 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35524 l_bflow_class_code           := 'REL_PA_BURDEN_ENC';    -- 4219869 Business Flow
35525 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35526 l_budgetary_control_flag     := 'Y';
35527 
35528 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35529 l_bflow_applied_to_amt       := NULL; -- 5132302
35530 l_entered_amt_idx            := NULL;          -- 4262811
35531 l_accted_amt_idx             := NULL;          -- 4262811
35532 l_acc_rev_flag               := NULL;          -- 4262811
35533 l_accrual_line_num           := NULL;          -- 4262811
35534 l_tmp_amt                    := NULL;          -- 4262811
35535 --
35536  
35537 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35538     l_balance_type_code <> 'B' THEN
35539 IF NVL(
35540 xla_ae_sources_pkg.GetSystemSourceChar(
35541    p_source_code           => 'XLA_EVENT_TYPE_CODE'
35542  , p_source_type_code      => 'Y'
35543  , p_source_application_id =>  602
35544 ),'
35545 ') =  'REL_BURDEN_RESERVED' AND 
35546 NVL(p_source_13,'
35547 ') =  'M' AND 
35548 NVL(p_source_14,'
35549 ') =  'O' AND 
35550 NVL(p_source_9,'
35551 ') =  'PO' AND 
35552 NVL(p_source_15,'
35553 ') =  'D'
35554  THEN 
35555 
35556    --
35557    XLA_AE_LINES_PKG.SetNewLine;
35558 
35559    p_balance_type_code          := l_balance_type_code;
35560    -- set the flag so later we will know whether the gain loss line needs to be created
35561    
35562    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35563      p_actual_flag :='A';
35564    END IF;
35565 
35566    --
35567    -- bulk performance
35568    --
35569    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35570                                       p_header_num   => 0); -- 4262811
35571    --
35572    -- set accounting line options
35573    --
35574    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35575            p_natural_side_code          => 'D'
35576          , p_gain_or_loss_flag          => 'N'
35577          , p_gl_transfer_mode_code      => 'S'
35578          , p_acct_entry_type_code       => 'E'
35579          , p_switch_side_flag           => 'N'
35580          , p_merge_duplicate_code       => 'N'
35581          );
35582    --
35583    l_acc_rev_natural_side_code := 'C';  -- 4262811
35584    -- 
35585    --
35586    -- set accounting line type info
35587    --
35588    xla_ae_lines_pkg.SetAcctLineType
35589       (p_component_type             => l_component_type
35590       ,p_event_type_code            => l_event_type_code
35591       ,p_line_definition_owner_code => l_line_definition_owner_code
35592       ,p_line_definition_code       => l_line_definition_code
35593       ,p_accounting_line_code       => l_component_code
35594       ,p_accounting_line_type_code  => l_component_type_code
35595       ,p_accounting_line_appl_id    => l_component_appl_id
35596       ,p_amb_context_code           => l_amb_context_code
35597       ,p_entity_code                => l_entity_code
35598       ,p_event_class_code           => l_event_class_code);
35599    --
35600    -- set accounting class
35601    --
35602    xla_ae_lines_pkg.SetAcctClass(
35603            p_accounting_class_code  => 'PO_PA_BURDEN'
35604          , p_ae_header_id           => l_ae_header_id
35605          );
35606 
35607    --
35608    -- set rounding class
35609    --
35610    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35611                       'PO_PA_BURDEN';
35612 
35613    --
35614    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35615    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35616    --
35617    -- bulk performance
35618    --
35619    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35620 
35621    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35622       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35623 
35624    -- 4955764
35625    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35626       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35627 
35628    -- 4458381 Public Sector Enh
35629       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
35630    --
35631    -- set accounting attributes for the line type
35632    --
35633    l_entered_amt_idx := 28;
35634    l_accted_amt_idx  := 30;
35635    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35636    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35637    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
35638    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
35639    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
35640    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
35641    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
35642    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
35643    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
35644    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
35645    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
35646    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
35647    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
35648    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
35649    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
35650    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
35651    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
35652    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35653    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
35654    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
35655    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
35656    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
35657    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
35658    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35659    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
35660    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
35661    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
35662    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
35663    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
35664    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
35665    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
35666    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
35667    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
35668    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
35669    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
35670    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
35671    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
35672    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
35673    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
35674    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
35675    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
35676    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
35677    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
35678    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
35679    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
35680    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
35681    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
35682    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
35683    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
35684    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
35685    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
35686    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
35687    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
35688    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
35689    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
35690    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
35691    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
35692    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
35693    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
35694    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
35695    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
35696    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
35697    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
35698    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
35699    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
35700    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
35701    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
35702    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
35703    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
35704    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
35705    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
35706 
35707    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35708    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35709 
35710    ---------------------------------------------------------------------------------------------------------------
35711    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35712    ---------------------------------------------------------------------------------------------------------------
35713    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35714 
35715    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35716    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35717 
35718    IF xla_accounting_cache_pkg.GetValueChar
35719          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35720          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35721    AND l_bflow_method_code = 'PRIOR_ENTRY'
35722 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35723    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35724          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35725        )
35726    THEN
35727          xla_ae_lines_pkg.BflowUpgEntry
35728            (p_business_method_code    => l_bflow_method_code
35729            ,p_business_class_code     => l_bflow_class_code
35730            ,p_balance_type            => l_balance_type_code);
35731    ELSE
35732       NULL;
35733 -- No business flow processing for business flow method of NONE.
35734    END IF;
35735 
35736    --
35737    -- call analytical criteria
35738    --
35739    
35740    --
35741    -- call description
35742    --
35743    
35744 xla_ae_lines_pkg.SetLineDescription(
35745    p_ae_header_id => l_ae_header_id
35746   ,p_description  => Description_2 (
35747      p_application_id         => p_application_id
35748    , p_ae_header_id           => l_ae_header_id 
35749 , p_source_3 => p_source_3
35750 , p_source_4 => p_source_4
35751 , p_source_5 => p_source_5
35752 , p_source_6 => p_source_6
35753    )
35754 );
35755 
35756 
35757    --
35758    -- call ADRs
35759    -- Bug 4922099
35760    --
35761    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35762         (NVL(l_actual_upg_option, 'N') = 'O') OR
35763         (NVL(l_enc_upg_option, 'N') = 'O')
35764       )
35765    THEN
35766    NULL;
35767    --
35768    --
35769    
35770   l_ccid := AcctDerRule_7(
35771            p_application_id           => p_application_id
35772          , p_ae_header_id             => l_ae_header_id 
35773 , p_source_11 => p_source_11
35774          , x_transaction_coa_id       => l_adr_transaction_coa_id
35775          , x_accounting_coa_id        => l_adr_accounting_coa_id
35776          , x_value_type_code          => l_adr_value_type_code
35777          , p_side                     => 'NA'
35778    );
35779 
35780    xla_ae_lines_pkg.set_ccid(
35781     p_code_combination_id          => l_ccid
35782   , p_value_type_code              => l_adr_value_type_code
35783   , p_transaction_coa_id           => l_adr_transaction_coa_id
35784   , p_accounting_coa_id            => l_adr_accounting_coa_id
35785   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
35786   , p_adr_type_code                => 'S'
35787   , p_component_type               => l_component_type
35788   , p_component_code               => l_component_code
35789   , p_component_type_code          => l_component_type_code
35790   , p_component_appl_id            => l_component_appl_id
35791   , p_amb_context_code             => l_amb_context_code
35792   , p_side                         => 'NA'
35793   );
35794 
35795 
35796    --
35797    --
35798    END IF;
35799    --
35800    -- Bug 4922099
35801    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35802           (NVL(l_enc_upg_option, 'N') = 'O')
35803         ) AND
35804         (l_bflow_method_code = 'PRIOR_ENTRY')
35805       )
35806    THEN
35807       IF
35808       --
35809       1 = 2
35810       --
35811       THEN
35812       xla_accounting_err_pkg.build_message
35813                                     (p_appli_s_name            => 'XLA'
35814                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35815                                     ,p_token_1                 => 'LINE_NUMBER'
35816                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35817                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35818                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35819                                                                              l_component_type
35820                                                                             ,l_component_code
35821                                                                             ,l_component_type_code
35822                                                                             ,l_component_appl_id
35823                                                                             ,l_amb_context_code
35824                                                                             ,l_entity_code
35825                                                                             ,l_event_class_code
35826                                                                            )
35827                                     ,p_token_3                 => 'OWNER'
35828                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35829                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35830                                                                           ,p_lookup_code    => l_component_type_code
35831                                                                          )
35832                                     ,p_token_4                 => 'PRODUCT_NAME'
35833                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35834                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35835                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35836                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35837                                     ,p_ae_header_id            =>  NULL
35838                                        );
35839 
35840         IF (C_LEVEL_ERROR>= g_log_level) THEN
35841                  trace
35842                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35843                       ,p_level    => C_LEVEL_ERROR
35844                       ,p_module   => l_log_module);
35845         END IF;
35846       END IF;
35847    END IF;
35848    --
35849    --
35850    ------------------------------------------------------------------------------------------------
35851    -- 4219869 Business Flow
35852    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35853    -- Prior Entry.  Currently, the following code is always generated.
35854    ------------------------------------------------------------------------------------------------
35855    XLA_AE_LINES_PKG.ValidateCurrentLine;
35856 
35857    ------------------------------------------------------------------------------------
35858    -- 4219869 Business Flow
35859    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35860    ------------------------------------------------------------------------------------
35861    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35862 
35863    ----------------------------------------------------------------------------------
35864    -- 4219869 Business Flow
35865    -- Update journal entry status -- Need to generate this within IF <condition>
35866    ----------------------------------------------------------------------------------
35867    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35868          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35869          ,p_balance_type_code => l_balance_type_code
35870          );
35871 
35872    -------------------------------------------------------------------------------------------
35873    -- 4262811 - Generate the Accrual Reversal lines
35874    -------------------------------------------------------------------------------------------
35875    BEGIN
35876       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35877                               (g_array_event(p_event_id).array_value_num('header_index'));
35878       IF l_acc_rev_flag IS NULL THEN
35879          l_acc_rev_flag := 'N';
35880       END IF;
35881    EXCEPTION
35882       WHEN OTHERS THEN
35883          l_acc_rev_flag := 'N';
35884    END;
35885    --
35886    IF (l_acc_rev_flag = 'Y') THEN
35887 
35888        -- 4645092  ------------------------------------------------------------------------------
35889        -- To allow MPA report to determine if it should generate report process
35890        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35891        ------------------------------------------------------------------------------------------
35892 
35893        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35894        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35895 
35896        --
35897        -- Update the line information that should be overwritten
35898        --
35899        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35900                                          p_header_num   => 1);
35901        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35902 
35903        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35904 
35905        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35906           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35907        END IF;
35908 
35909       --
35910       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35911       --
35912       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35913           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35914       ELSE
35915           ---------------------------------------------------------------------------------------------------
35916           -- 4262811a Switch Sign
35917           ---------------------------------------------------------------------------------------------------
35918           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35919           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35920                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35921           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35922                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35923           -- 5132302
35924           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35925                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35926 
35927       END IF;
35928 
35929       -- 4955764
35930       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35931       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35932 
35933 
35934       XLA_AE_LINES_PKG.ValidateCurrentLine;
35935       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35936 
35937       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35938                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35939                ,p_balance_type_code => l_balance_type_code);
35940 
35941    END IF;
35942 
35943    -----------------------------------------------------------------------------------------
35944    -- 4262811 Multiperiod Accounting
35945    -----------------------------------------------------------------------------------------
35946      -- No MPA option is assigned.
35947 
35948 
35949 END IF;
35950 END IF;
35951 --
35952 
35953 --
35954 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35955    trace
35956       (p_msg      => 'END of AcctLineType_64'
35957       ,p_level    => C_LEVEL_PROCEDURE
35958       ,p_module   => l_log_module);
35959 END IF;
35960 --
35961 EXCEPTION
35962   WHEN xla_exceptions_pkg.application_exception THEN
35963       RAISE;
35964   WHEN OTHERS THEN
35965        xla_exceptions_pkg.raise_message
35966            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_64');
35967 END AcctLineType_64;
35968 --
35969 
35970 ---------------------------------------
35971 --
35972 -- PRIVATE FUNCTION
35973 --         AcctLineType_65
35974 --
35975 ---------------------------------------
35976 PROCEDURE AcctLineType_65 (
35977   p_application_id        IN NUMBER
35978  ,p_event_id              IN NUMBER
35979  ,p_calculate_acctd_flag  IN VARCHAR2
35980  ,p_calculate_g_l_flag    IN VARCHAR2
35981  ,p_actual_flag           IN OUT VARCHAR2
35982  ,p_balance_type_code     OUT VARCHAR2
35983  ,p_gain_or_loss_ref      OUT VARCHAR2
35984  
35985 --Project Name
35986  , p_source_3            IN VARCHAR2
35987 --Task Name
35988  , p_source_4            IN VARCHAR2
35989 --Project Expenditure Organization Identifier
35990  , p_source_5            IN NUMBER
35991 --Expenditure Type
35992  , p_source_6            IN VARCHAR2
35993 --Budget Account
35994  , p_source_11            IN NUMBER
35995 --Main Or Backing Code
35996  , p_source_13            IN VARCHAR2
35997 --Burden Record Identifier
35998  , p_source_14            IN VARCHAR2
35999  , p_source_14_meaning    IN VARCHAR2
36000 --Burden Amount Display Method
36001  , p_source_15            IN VARCHAR2
36002 --Accounting Reversal Flag
36003  , p_source_16            IN VARCHAR2
36004 --Allocated to Application Identifier
36005  , p_source_17            IN NUMBER
36006 --Allocated to Distribution Type
36007  , p_source_18            IN VARCHAR2
36008 --Allocated to Entity Code
36009  , p_source_19            IN VARCHAR2
36010 --Allocated to First Distribution Identifier
36011  , p_source_20            IN NUMBER
36012 --Allocated to First System Transaction Identifier
36013  , p_source_21            IN NUMBER
36014 --Allocated to Second Distribution Identifier
36015  , p_source_22            IN VARCHAR2
36016 --Line Type Name
36017  , p_source_30            IN VARCHAR2
36018 --Encumbrance Upgrade Credit Accounting Class
36019  , p_source_31            IN VARCHAR2
36020 --Encumbrance Upgrade Credit Account
36021  , p_source_32            IN NUMBER
36022 --Entered Amount
36023  , p_source_33            IN NUMBER
36024 --Currency Code
36025  , p_source_34            IN VARCHAR2
36026 --Accounted Amount
36027  , p_source_35            IN NUMBER
36028 --Encumbrance Upgrade Debit Accounting Class
36029  , p_source_36            IN VARCHAR2
36030 --Encumbrance Upgrade Debit Account
36031  , p_source_37            IN NUMBER
36032 --Use Encumbrances Upgrade Attributes Flag
36033  , p_source_38            IN VARCHAR2
36034 --Encumbrance Upgrade Credit Encumbrance Type
36035  , p_source_39            IN NUMBER
36036 --Encumbrance Upgrade Debit Encumbrance Type
36037  , p_source_40            IN NUMBER
36038 --Requisition Burden Applied to Application Identifier
36039  , p_source_41            IN NUMBER
36040 --Requisition Distribution Type
36041  , p_source_42            IN VARCHAR2
36042 --Requisition Burden Applied to Entity Code
36043  , p_source_43            IN VARCHAR2
36044 --Requisition Burden Applied to First Distribution Identifier
36045  , p_source_44            IN NUMBER
36046 --Requisition Burden Applied to First System Transaction Identifier
36047  , p_source_45            IN NUMBER
36048 --Requisition Burden Applied to Second Distribution Identifier
36049  , p_source_46            IN VARCHAR2
36050 --Requisition Distribution Identifier
36051  , p_source_47            IN NUMBER
36052 --Document Distribution Type
36053  , p_source_74            IN VARCHAR2
36054 )
36055 IS
36056 
36057 l_component_type              VARCHAR2(80);
36058 l_component_code              VARCHAR2(30);
36059 l_component_type_code         VARCHAR2(1);
36060 l_component_appl_id           INTEGER;
36061 l_amb_context_code            VARCHAR2(30);
36062 l_entity_code                 VARCHAR2(30);
36063 l_event_class_code            VARCHAR2(30);
36064 l_ae_header_id                NUMBER;
36065 l_event_type_code             VARCHAR2(30);
36066 l_line_definition_code        VARCHAR2(30);
36067 l_line_definition_owner_code  VARCHAR2(1);
36068 --
36069 -- adr variables
36070 l_segment                     VARCHAR2(30);
36071 l_ccid                        NUMBER;
36072 l_adr_transaction_coa_id      NUMBER;
36073 l_adr_accounting_coa_id       NUMBER;
36074 l_adr_flexfield_segment_code  VARCHAR2(30);
36075 l_adr_flex_value_set_id       NUMBER;
36076 l_adr_value_type_code         VARCHAR2(30);
36077 l_adr_value_combination_id    NUMBER;
36078 l_adr_value_segment_code      VARCHAR2(30);
36079 
36080 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36081 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36082 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36083 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36084 
36085 -- 4262811 Variables ------------------------------------------------------------------------------------------
36086 l_entered_amt_idx             NUMBER;
36087 l_accted_amt_idx              NUMBER;
36088 l_acc_rev_flag                VARCHAR2(1);
36089 l_accrual_line_num            NUMBER;
36090 l_tmp_amt                     NUMBER;
36091 l_acc_rev_natural_side_code   VARCHAR2(1);
36092 
36093 l_num_entries                 NUMBER;
36094 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36095 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36096 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36097 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36098 l_recog_line_1                NUMBER;
36099 l_recog_line_2                NUMBER;
36100 
36101 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36102 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36103 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36104 
36105 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36106 
36107 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36108 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36109 
36110 ---------------------------------------------------------------------------------------------------------------
36111 
36112 
36113 --
36114 -- bulk performance
36115 --
36116 l_balance_type_code           VARCHAR2(1);
36117 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36118 l_log_module                  VARCHAR2(240);
36119 
36120 --
36121 -- Upgrade strategy
36122 --
36123 l_actual_upg_option           VARCHAR2(1);
36124 l_enc_upg_option           VARCHAR2(1);
36125 
36126 --
36127 BEGIN
36128 --
36129 IF g_log_enabled THEN
36130       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
36131 END IF;
36132 --
36133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36134 
36135       trace
36136          (p_msg      => 'BEGIN of AcctLineType_65'
36137          ,p_level    => C_LEVEL_PROCEDURE
36138          ,p_module   => l_log_module);
36139 
36140 END IF;
36141 --
36142 l_component_type             := 'AMB_JLT';
36143 l_component_code             := 'RESERVE_BURDEN_REQ_ENC';
36144 l_component_type_code        := 'S';
36145 l_component_appl_id          :=  201;
36146 l_amb_context_code           := 'DEFAULT';
36147 l_entity_code                := 'REQUISITION';
36148 l_event_class_code           := 'REQUISITION_BURDEN';
36149 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
36150 l_line_definition_owner_code := 'S';
36151 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
36152 --
36153 l_balance_type_code          := 'E';
36154 l_segment                     := NULL;
36155 l_ccid                        := NULL;
36156 l_adr_transaction_coa_id      := NULL;
36157 l_adr_accounting_coa_id       := NULL;
36158 l_adr_flexfield_segment_code  := NULL;
36159 l_adr_flex_value_set_id       := NULL;
36160 l_adr_value_type_code         := NULL;
36161 l_adr_value_combination_id    := NULL;
36162 l_adr_value_segment_code      := NULL;
36163 
36164 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36165 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
36166 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36167 l_budgetary_control_flag     := 'Y';
36168 
36169 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36170 l_bflow_applied_to_amt       := NULL; -- 5132302
36171 l_entered_amt_idx            := NULL;          -- 4262811
36172 l_accted_amt_idx             := NULL;          -- 4262811
36173 l_acc_rev_flag               := NULL;          -- 4262811
36174 l_accrual_line_num           := NULL;          -- 4262811
36175 l_tmp_amt                    := NULL;          -- 4262811
36176 --
36177  
36178 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36179     l_balance_type_code <> 'B' THEN
36180 IF ((NVL(
36181 xla_ae_sources_pkg.GetSystemSourceChar(
36182    p_source_code           => 'XLA_EVENT_TYPE_CODE'
36183  , p_source_type_code      => 'Y'
36184  , p_source_application_id =>  602
36185 ),'
36186 ') =  'REQ_BURDEN_RESERVED' OR 
36187 (NVL(
36188 xla_ae_sources_pkg.GetSystemSourceChar(
36189    p_source_code           => 'XLA_EVENT_TYPE_CODE'
36190  , p_source_type_code      => 'Y'
36191  , p_source_application_id =>  602
36192 ),'
36193 ') =  'REQ_BURDEN_ADJUSTED' AND 
36194 NVL(p_source_74,'
36195 ') =  'REQUISITION_ADJUSTED_NEW')
36196 ) AND NVL(p_source_13,'
36197 ') =  'M') AND 
36198 NVL(p_source_14,'
36199 ') =  'O' AND 
36200 NVL(p_source_15,'
36201 ') =  'D'
36202  THEN 
36203 
36204    --
36205    XLA_AE_LINES_PKG.SetNewLine;
36206 
36207    p_balance_type_code          := l_balance_type_code;
36208    -- set the flag so later we will know whether the gain loss line needs to be created
36209    
36210    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36211      p_actual_flag :='A';
36212    END IF;
36213 
36214    --
36215    -- bulk performance
36216    --
36217    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36218                                       p_header_num   => 0); -- 4262811
36219    --
36220    -- set accounting line options
36221    --
36222    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36223            p_natural_side_code          => 'D'
36224          , p_gain_or_loss_flag          => 'N'
36225          , p_gl_transfer_mode_code      => 'S'
36226          , p_acct_entry_type_code       => 'E'
36227          , p_switch_side_flag           => 'N'
36228          , p_merge_duplicate_code       => 'N'
36229          );
36230    --
36231    l_acc_rev_natural_side_code := 'C';  -- 4262811
36232    -- 
36233    --
36234    -- set accounting line type info
36235    --
36236    xla_ae_lines_pkg.SetAcctLineType
36237       (p_component_type             => l_component_type
36238       ,p_event_type_code            => l_event_type_code
36239       ,p_line_definition_owner_code => l_line_definition_owner_code
36240       ,p_line_definition_code       => l_line_definition_code
36241       ,p_accounting_line_code       => l_component_code
36242       ,p_accounting_line_type_code  => l_component_type_code
36243       ,p_accounting_line_appl_id    => l_component_appl_id
36244       ,p_amb_context_code           => l_amb_context_code
36245       ,p_entity_code                => l_entity_code
36246       ,p_event_class_code           => l_event_class_code);
36247    --
36248    -- set accounting class
36249    --
36250    xla_ae_lines_pkg.SetAcctClass(
36251            p_accounting_class_code  => 'REQ_PA_BURDEN'
36252          , p_ae_header_id           => l_ae_header_id
36253          );
36254 
36255    --
36256    -- set rounding class
36257    --
36258    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36259                       'REQ_PA_BURDEN';
36260 
36261    --
36262    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36263    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36264    --
36265    -- bulk performance
36266    --
36267    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36268 
36269    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36270       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36271 
36272    -- 4955764
36273    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36274       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36275 
36276    -- 4458381 Public Sector Enh
36277       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
36278    --
36279    -- set accounting attributes for the line type
36280    --
36281    l_entered_amt_idx := 28;
36282    l_accted_amt_idx  := 30;
36283    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36284    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36285    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
36286    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
36287    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
36288    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
36289    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
36290    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
36291    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
36292    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
36293    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
36294    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
36295    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
36296    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
36297    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
36298    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
36299    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
36300    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36301    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
36302    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
36303    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
36304    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
36305    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
36306    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36307    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
36308    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
36309    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
36310    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
36311    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
36312    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
36313    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
36314    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
36315    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
36316    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
36317    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
36318    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
36319    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
36320    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
36321    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
36322    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
36323    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
36324    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
36325    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
36326    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
36327    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
36328    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
36329    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
36330    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
36331    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
36332    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
36333    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
36334    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
36335    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
36336    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
36337    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
36338    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
36339    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
36340    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
36341    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
36342    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
36343    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
36344    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
36345    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
36346    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
36347    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
36348    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
36349    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
36350    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
36351    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
36352    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
36353    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
36354 
36355    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36356    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36357 
36358    ---------------------------------------------------------------------------------------------------------------
36359    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36360    ---------------------------------------------------------------------------------------------------------------
36361    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36362 
36363    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36364    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36365 
36366    IF xla_accounting_cache_pkg.GetValueChar
36367          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36368          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36369    AND l_bflow_method_code = 'PRIOR_ENTRY'
36370 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36371    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36372          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36373        )
36374    THEN
36375          xla_ae_lines_pkg.BflowUpgEntry
36376            (p_business_method_code    => l_bflow_method_code
36377            ,p_business_class_code     => l_bflow_class_code
36378            ,p_balance_type            => l_balance_type_code);
36379    ELSE
36380       NULL;
36381 -- No business flow processing for business flow method of NONE.
36382    END IF;
36383 
36384    --
36385    -- call analytical criteria
36386    --
36387    
36388    --
36389    -- call description
36390    --
36391    
36392 xla_ae_lines_pkg.SetLineDescription(
36393    p_ae_header_id => l_ae_header_id
36394   ,p_description  => Description_2 (
36395      p_application_id         => p_application_id
36396    , p_ae_header_id           => l_ae_header_id 
36397 , p_source_3 => p_source_3
36398 , p_source_4 => p_source_4
36399 , p_source_5 => p_source_5
36400 , p_source_6 => p_source_6
36401    )
36402 );
36403 
36404 
36405    --
36406    -- call ADRs
36407    -- Bug 4922099
36408    --
36409    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36410         (NVL(l_actual_upg_option, 'N') = 'O') OR
36411         (NVL(l_enc_upg_option, 'N') = 'O')
36412       )
36413    THEN
36414    NULL;
36415    --
36416    --
36417    
36418   l_ccid := AcctDerRule_7(
36419            p_application_id           => p_application_id
36420          , p_ae_header_id             => l_ae_header_id 
36421 , p_source_11 => p_source_11
36422          , x_transaction_coa_id       => l_adr_transaction_coa_id
36423          , x_accounting_coa_id        => l_adr_accounting_coa_id
36424          , x_value_type_code          => l_adr_value_type_code
36425          , p_side                     => 'NA'
36426    );
36427 
36428    xla_ae_lines_pkg.set_ccid(
36429     p_code_combination_id          => l_ccid
36430   , p_value_type_code              => l_adr_value_type_code
36431   , p_transaction_coa_id           => l_adr_transaction_coa_id
36432   , p_accounting_coa_id            => l_adr_accounting_coa_id
36433   , p_adr_code                     => 'PROJ_BURDEN_ENC_ACCT_RULE'
36434   , p_adr_type_code                => 'S'
36435   , p_component_type               => l_component_type
36436   , p_component_code               => l_component_code
36437   , p_component_type_code          => l_component_type_code
36438   , p_component_appl_id            => l_component_appl_id
36439   , p_amb_context_code             => l_amb_context_code
36440   , p_side                         => 'NA'
36441   );
36442 
36443 
36444    --
36445    --
36446    END IF;
36447    --
36448    -- Bug 4922099
36449    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36450           (NVL(l_enc_upg_option, 'N') = 'O')
36451         ) AND
36452         (l_bflow_method_code = 'PRIOR_ENTRY')
36453       )
36454    THEN
36455       IF
36456       --
36457       1 = 2
36458       --
36459       THEN
36460       xla_accounting_err_pkg.build_message
36461                                     (p_appli_s_name            => 'XLA'
36462                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36463                                     ,p_token_1                 => 'LINE_NUMBER'
36464                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36465                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36466                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36467                                                                              l_component_type
36468                                                                             ,l_component_code
36469                                                                             ,l_component_type_code
36470                                                                             ,l_component_appl_id
36471                                                                             ,l_amb_context_code
36472                                                                             ,l_entity_code
36473                                                                             ,l_event_class_code
36474                                                                            )
36475                                     ,p_token_3                 => 'OWNER'
36476                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36477                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36478                                                                           ,p_lookup_code    => l_component_type_code
36479                                                                          )
36480                                     ,p_token_4                 => 'PRODUCT_NAME'
36481                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36482                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36483                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36484                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36485                                     ,p_ae_header_id            =>  NULL
36486                                        );
36487 
36488         IF (C_LEVEL_ERROR>= g_log_level) THEN
36489                  trace
36490                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36491                       ,p_level    => C_LEVEL_ERROR
36492                       ,p_module   => l_log_module);
36493         END IF;
36494       END IF;
36495    END IF;
36496    --
36497    --
36498    ------------------------------------------------------------------------------------------------
36499    -- 4219869 Business Flow
36500    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36501    -- Prior Entry.  Currently, the following code is always generated.
36502    ------------------------------------------------------------------------------------------------
36503    XLA_AE_LINES_PKG.ValidateCurrentLine;
36504 
36505    ------------------------------------------------------------------------------------
36506    -- 4219869 Business Flow
36507    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36508    ------------------------------------------------------------------------------------
36509    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36510 
36511    ----------------------------------------------------------------------------------
36512    -- 4219869 Business Flow
36513    -- Update journal entry status -- Need to generate this within IF <condition>
36514    ----------------------------------------------------------------------------------
36515    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36516          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36517          ,p_balance_type_code => l_balance_type_code
36518          );
36519 
36520    -------------------------------------------------------------------------------------------
36521    -- 4262811 - Generate the Accrual Reversal lines
36522    -------------------------------------------------------------------------------------------
36523    BEGIN
36524       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36525                               (g_array_event(p_event_id).array_value_num('header_index'));
36526       IF l_acc_rev_flag IS NULL THEN
36527          l_acc_rev_flag := 'N';
36528       END IF;
36529    EXCEPTION
36530       WHEN OTHERS THEN
36531          l_acc_rev_flag := 'N';
36532    END;
36533    --
36534    IF (l_acc_rev_flag = 'Y') THEN
36535 
36536        -- 4645092  ------------------------------------------------------------------------------
36537        -- To allow MPA report to determine if it should generate report process
36538        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36539        ------------------------------------------------------------------------------------------
36540 
36541        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36542        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36543 
36544        --
36545        -- Update the line information that should be overwritten
36546        --
36547        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36548                                          p_header_num   => 1);
36549        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36550 
36551        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36552 
36553        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36554           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36555        END IF;
36556 
36557       --
36558       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36559       --
36560       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36561           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36562       ELSE
36563           ---------------------------------------------------------------------------------------------------
36564           -- 4262811a Switch Sign
36565           ---------------------------------------------------------------------------------------------------
36566           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36567           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36568                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36569           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36570                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36571           -- 5132302
36572           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36573                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36574 
36575       END IF;
36576 
36577       -- 4955764
36578       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36579       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36580 
36581 
36582       XLA_AE_LINES_PKG.ValidateCurrentLine;
36583       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36584 
36585       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36586                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36587                ,p_balance_type_code => l_balance_type_code);
36588 
36589    END IF;
36590 
36591    -----------------------------------------------------------------------------------------
36592    -- 4262811 Multiperiod Accounting
36593    -----------------------------------------------------------------------------------------
36594      -- No MPA option is assigned.
36595 
36596 
36597 END IF;
36598 END IF;
36599 --
36600 
36601 --
36602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36603    trace
36604       (p_msg      => 'END of AcctLineType_65'
36605       ,p_level    => C_LEVEL_PROCEDURE
36606       ,p_module   => l_log_module);
36607 END IF;
36608 --
36609 EXCEPTION
36610   WHEN xla_exceptions_pkg.application_exception THEN
36611       RAISE;
36612   WHEN OTHERS THEN
36613        xla_exceptions_pkg.raise_message
36614            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_65');
36615 END AcctLineType_65;
36616 --
36617 
36618 ---------------------------------------
36619 --
36620 -- PRIVATE FUNCTION
36621 --         AcctLineType_66
36622 --
36623 ---------------------------------------
36624 PROCEDURE AcctLineType_66 (
36625   p_application_id        IN NUMBER
36626  ,p_event_id              IN NUMBER
36627  ,p_calculate_acctd_flag  IN VARCHAR2
36628  ,p_calculate_g_l_flag    IN VARCHAR2
36629  ,p_actual_flag           IN OUT VARCHAR2
36630  ,p_balance_type_code     OUT VARCHAR2
36631  ,p_gain_or_loss_ref      OUT VARCHAR2
36632  
36633 --Journal entry Line Description
36634  , p_source_7            IN VARCHAR2
36635 --Budget Account
36636  , p_source_11            IN NUMBER
36637 --Main Or Backing Code
36638  , p_source_13            IN VARCHAR2
36639 --Accounting Reversal Flag
36640  , p_source_16            IN VARCHAR2
36641 --PO Distribution Type
36642  , p_source_24            IN VARCHAR2
36643 --PO Distribution Identifier
36644  , p_source_29            IN NUMBER
36645 --Entered Amount
36646  , p_source_33            IN NUMBER
36647 --Currency Code
36648  , p_source_34            IN VARCHAR2
36649 --Accounted Amount
36650  , p_source_35            IN NUMBER
36651 --PO Header Identifier
36652  , p_source_52            IN NUMBER
36653 --Applied To Application Identifier
36654  , p_source_53            IN NUMBER
36655 --Applied To Distribution Link Type
36656  , p_source_54            IN VARCHAR2
36657 --Applied To Entity Code
36658  , p_source_55            IN VARCHAR2
36659 --Applied To Distribution Identifier 1
36660  , p_source_56            IN NUMBER
36661 --Applied To Header Identifier 1
36662  , p_source_57            IN NUMBER
36663 --Distribution Link Type
36664  , p_source_58            IN VARCHAR2
36665 --PO Encumbrance Upgrade Option
36666  , p_source_59            IN VARCHAR2
36667 --JFMIP Reference
36668  , p_source_60            IN VARCHAR2
36669 --PO Upgrade Encumbrance Type Identifier
36670  , p_source_61            IN NUMBER
36671 --Currency Conversion Date
36672  , p_source_62            IN DATE
36673 --Currency Conversion Rate
36674  , p_source_63            IN NUMBER
36675 --Currency Conversion Type
36676  , p_source_64            IN VARCHAR2
36677 )
36678 IS
36679 
36680 l_component_type              VARCHAR2(80);
36681 l_component_code              VARCHAR2(30);
36682 l_component_type_code         VARCHAR2(1);
36683 l_component_appl_id           INTEGER;
36684 l_amb_context_code            VARCHAR2(30);
36685 l_entity_code                 VARCHAR2(30);
36686 l_event_class_code            VARCHAR2(30);
36687 l_ae_header_id                NUMBER;
36688 l_event_type_code             VARCHAR2(30);
36689 l_line_definition_code        VARCHAR2(30);
36690 l_line_definition_owner_code  VARCHAR2(1);
36691 --
36692 -- adr variables
36693 l_segment                     VARCHAR2(30);
36694 l_ccid                        NUMBER;
36695 l_adr_transaction_coa_id      NUMBER;
36696 l_adr_accounting_coa_id       NUMBER;
36697 l_adr_flexfield_segment_code  VARCHAR2(30);
36698 l_adr_flex_value_set_id       NUMBER;
36699 l_adr_value_type_code         VARCHAR2(30);
36700 l_adr_value_combination_id    NUMBER;
36701 l_adr_value_segment_code      VARCHAR2(30);
36702 
36703 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36704 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36705 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36706 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36707 
36708 -- 4262811 Variables ------------------------------------------------------------------------------------------
36709 l_entered_amt_idx             NUMBER;
36710 l_accted_amt_idx              NUMBER;
36711 l_acc_rev_flag                VARCHAR2(1);
36712 l_accrual_line_num            NUMBER;
36713 l_tmp_amt                     NUMBER;
36714 l_acc_rev_natural_side_code   VARCHAR2(1);
36715 
36716 l_num_entries                 NUMBER;
36717 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36718 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36719 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36720 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36721 l_recog_line_1                NUMBER;
36722 l_recog_line_2                NUMBER;
36723 
36724 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36725 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36726 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36727 
36728 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36729 
36730 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36731 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36732 
36733 ---------------------------------------------------------------------------------------------------------------
36734 
36735 
36736 --
36737 -- bulk performance
36738 --
36739 l_balance_type_code           VARCHAR2(1);
36740 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36741 l_log_module                  VARCHAR2(240);
36742 
36743 --
36744 -- Upgrade strategy
36745 --
36746 l_actual_upg_option           VARCHAR2(1);
36747 l_enc_upg_option           VARCHAR2(1);
36748 
36749 --
36750 BEGIN
36751 --
36752 IF g_log_enabled THEN
36753       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
36754 END IF;
36755 --
36756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36757 
36758       trace
36759          (p_msg      => 'BEGIN of AcctLineType_66'
36760          ,p_level    => C_LEVEL_PROCEDURE
36761          ,p_module   => l_log_module);
36762 
36763 END IF;
36764 --
36765 l_component_type             := 'AMB_JLT';
36766 l_component_code             := 'RESERVE_PA_ENCUMBRANCE';
36767 l_component_type_code        := 'S';
36768 l_component_appl_id          :=  201;
36769 l_amb_context_code           := 'DEFAULT';
36770 l_entity_code                := 'PURCHASE_ORDER';
36771 l_event_class_code           := 'PO_PA';
36772 l_event_type_code            := 'PO_PA_ALL';
36773 l_line_definition_owner_code := 'S';
36774 l_line_definition_code       := 'PO_PA_ENC_ALL';
36775 --
36776 l_balance_type_code          := 'E';
36777 l_segment                     := NULL;
36778 l_ccid                        := NULL;
36779 l_adr_transaction_coa_id      := NULL;
36780 l_adr_accounting_coa_id       := NULL;
36781 l_adr_flexfield_segment_code  := NULL;
36782 l_adr_flex_value_set_id       := NULL;
36783 l_adr_value_type_code         := NULL;
36784 l_adr_value_combination_id    := NULL;
36785 l_adr_value_segment_code      := NULL;
36786 
36787 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36788 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
36789 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36790 l_budgetary_control_flag     := 'Y';
36791 
36792 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36793 l_bflow_applied_to_amt       := NULL; -- 5132302
36794 l_entered_amt_idx            := NULL;          -- 4262811
36795 l_accted_amt_idx             := NULL;          -- 4262811
36796 l_acc_rev_flag               := NULL;          -- 4262811
36797 l_accrual_line_num           := NULL;          -- 4262811
36798 l_tmp_amt                    := NULL;          -- 4262811
36799 --
36800  
36801 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36802     l_balance_type_code <> 'B' THEN
36803 IF NVL(
36804 xla_ae_sources_pkg.GetSystemSourceChar(
36805    p_source_code           => 'XLA_EVENT_TYPE_CODE'
36806  , p_source_type_code      => 'Y'
36807  , p_source_application_id =>  602
36808 ),'
36809 ') =  'PO_PA_RESERVED' AND 
36810 NVL(p_source_13,'
36811 ') =  'M' AND 
36812 NVL(p_source_24,'
36813 ') =  'AGREEMENT'
36814  THEN 
36815 
36816    --
36817    XLA_AE_LINES_PKG.SetNewLine;
36818 
36819    p_balance_type_code          := l_balance_type_code;
36820    -- set the flag so later we will know whether the gain loss line needs to be created
36821    
36822    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36823      p_actual_flag :='A';
36824    END IF;
36825 
36826    --
36827    -- bulk performance
36828    --
36829    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36830                                       p_header_num   => 0); -- 4262811
36831    --
36832    -- set accounting line options
36833    --
36834    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36835            p_natural_side_code          => 'D'
36836          , p_gain_or_loss_flag          => 'N'
36837          , p_gl_transfer_mode_code      => 'S'
36838          , p_acct_entry_type_code       => 'E'
36839          , p_switch_side_flag           => 'N'
36840          , p_merge_duplicate_code       => 'N'
36841          );
36842    --
36843    l_acc_rev_natural_side_code := 'C';  -- 4262811
36844    -- 
36845    --
36846    -- set accounting line type info
36847    --
36848    xla_ae_lines_pkg.SetAcctLineType
36849       (p_component_type             => l_component_type
36850       ,p_event_type_code            => l_event_type_code
36851       ,p_line_definition_owner_code => l_line_definition_owner_code
36852       ,p_line_definition_code       => l_line_definition_code
36853       ,p_accounting_line_code       => l_component_code
36854       ,p_accounting_line_type_code  => l_component_type_code
36855       ,p_accounting_line_appl_id    => l_component_appl_id
36856       ,p_amb_context_code           => l_amb_context_code
36857       ,p_entity_code                => l_entity_code
36858       ,p_event_class_code           => l_event_class_code);
36859    --
36860    -- set accounting class
36861    --
36862    xla_ae_lines_pkg.SetAcctClass(
36863            p_accounting_class_code  => 'PURCHASE_ORDER'
36864          , p_ae_header_id           => l_ae_header_id
36865          );
36866 
36867    --
36868    -- set rounding class
36869    --
36870    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36871                       'PURCHASE_ORDER';
36872 
36873    --
36874    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36875    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36876    --
36877    -- bulk performance
36878    --
36879    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36880 
36881    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36882       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36883 
36884    -- 4955764
36885    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36886       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36887 
36888    -- 4458381 Public Sector Enh
36889       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
36890    --
36891    -- set accounting attributes for the line type
36892    --
36893    l_entered_amt_idx := 23;
36894    l_accted_amt_idx  := 28;
36895    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36896    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36897    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
36898    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
36899    l_rec_acct_attrs.array_num_value(2)  := 
36900 xla_ae_sources_pkg.GetSystemSourceNum(
36901    p_source_code           => 'XLA_EVENT_APPL_ID'
36902  , p_source_type_code      => 'Y'
36903  , p_source_application_id =>  602
36904 );
36905    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
36906    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
36907    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
36908    l_rec_acct_attrs.array_char_value(4)  := 
36909 xla_ae_sources_pkg.GetSystemSourceChar(
36910    p_source_code           => 'XLA_ENTITY_CODE'
36911  , p_source_type_code      => 'Y'
36912  , p_source_application_id =>  602
36913 );
36914    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
36915    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
36916    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
36917    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
36918    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
36919    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
36920    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36921    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
36922    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
36923    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
36924    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
36925    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
36926    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36927    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
36928    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
36929    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
36930    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
36931    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
36932    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
36933    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
36934    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
36935    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
36936    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
36937    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
36938    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
36939    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
36940    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
36941    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
36942    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
36943    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
36944    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
36945    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
36946    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
36947    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
36948    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
36949    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
36950    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
36951    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
36952    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
36953    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
36954    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
36955    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
36956    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
36957    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
36958    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
36959    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
36960    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
36961    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
36962    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
36963    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
36964    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
36965    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
36966    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
36967    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
36968    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
36969    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_29);
36970    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
36971    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
36972    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
36973    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
36974 
36975    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36976    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36977 
36978    ---------------------------------------------------------------------------------------------------------------
36979    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36980    ---------------------------------------------------------------------------------------------------------------
36981    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36982 
36983    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36984    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36985 
36986    IF xla_accounting_cache_pkg.GetValueChar
36987          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36988          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36989    AND l_bflow_method_code = 'PRIOR_ENTRY'
36990 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36991    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36992          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36993        )
36994    THEN
36995          xla_ae_lines_pkg.BflowUpgEntry
36996            (p_business_method_code    => l_bflow_method_code
36997            ,p_business_class_code     => l_bflow_class_code
36998            ,p_balance_type            => l_balance_type_code);
36999    ELSE
37000       NULL;
37001 -- No business flow processing for business flow method of NONE.
37002    END IF;
37003 
37004    --
37005    -- call analytical criteria
37006    --
37007    
37008    --
37009    -- call description
37010    --
37011    
37012 xla_ae_lines_pkg.SetLineDescription(
37013    p_ae_header_id => l_ae_header_id
37014   ,p_description  => Description_3 (
37015      p_application_id         => p_application_id
37016    , p_ae_header_id           => l_ae_header_id 
37017 , p_source_7 => p_source_7
37018    )
37019 );
37020 
37021 
37022    --
37023    -- call ADRs
37024    -- Bug 4922099
37025    --
37026    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37027         (NVL(l_actual_upg_option, 'N') = 'O') OR
37028         (NVL(l_enc_upg_option, 'N') = 'O')
37029       )
37030    THEN
37031    NULL;
37032    --
37033    --
37034    
37035   l_ccid := AcctDerRule_8(
37036            p_application_id           => p_application_id
37037          , p_ae_header_id             => l_ae_header_id 
37038 , p_source_11 => p_source_11
37039          , x_transaction_coa_id       => l_adr_transaction_coa_id
37040          , x_accounting_coa_id        => l_adr_accounting_coa_id
37041          , x_value_type_code          => l_adr_value_type_code
37042          , p_side                     => 'NA'
37043    );
37044 
37045    xla_ae_lines_pkg.set_ccid(
37046     p_code_combination_id          => l_ccid
37047   , p_value_type_code              => l_adr_value_type_code
37048   , p_transaction_coa_id           => l_adr_transaction_coa_id
37049   , p_accounting_coa_id            => l_adr_accounting_coa_id
37050   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
37051   , p_adr_type_code                => 'S'
37052   , p_component_type               => l_component_type
37053   , p_component_code               => l_component_code
37054   , p_component_type_code          => l_component_type_code
37055   , p_component_appl_id            => l_component_appl_id
37056   , p_amb_context_code             => l_amb_context_code
37057   , p_side                         => 'NA'
37058   );
37059 
37060 
37061    --
37062    --
37063    END IF;
37064    --
37065    -- Bug 4922099
37066    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37067           (NVL(l_enc_upg_option, 'N') = 'O')
37068         ) AND
37069         (l_bflow_method_code = 'PRIOR_ENTRY')
37070       )
37071    THEN
37072       IF
37073       --
37074       1 = 2
37075       --
37076       THEN
37077       xla_accounting_err_pkg.build_message
37078                                     (p_appli_s_name            => 'XLA'
37079                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37080                                     ,p_token_1                 => 'LINE_NUMBER'
37081                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37082                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37083                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37084                                                                              l_component_type
37085                                                                             ,l_component_code
37086                                                                             ,l_component_type_code
37087                                                                             ,l_component_appl_id
37088                                                                             ,l_amb_context_code
37089                                                                             ,l_entity_code
37090                                                                             ,l_event_class_code
37091                                                                            )
37092                                     ,p_token_3                 => 'OWNER'
37093                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37094                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37095                                                                           ,p_lookup_code    => l_component_type_code
37096                                                                          )
37097                                     ,p_token_4                 => 'PRODUCT_NAME'
37098                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37099                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37100                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37101                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37102                                     ,p_ae_header_id            =>  NULL
37103                                        );
37104 
37105         IF (C_LEVEL_ERROR>= g_log_level) THEN
37106                  trace
37107                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37108                       ,p_level    => C_LEVEL_ERROR
37109                       ,p_module   => l_log_module);
37110         END IF;
37111       END IF;
37112    END IF;
37113    --
37114    --
37115    ------------------------------------------------------------------------------------------------
37116    -- 4219869 Business Flow
37117    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37118    -- Prior Entry.  Currently, the following code is always generated.
37119    ------------------------------------------------------------------------------------------------
37120    XLA_AE_LINES_PKG.ValidateCurrentLine;
37121 
37122    ------------------------------------------------------------------------------------
37123    -- 4219869 Business Flow
37124    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37125    ------------------------------------------------------------------------------------
37126    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37127 
37128    ----------------------------------------------------------------------------------
37129    -- 4219869 Business Flow
37130    -- Update journal entry status -- Need to generate this within IF <condition>
37131    ----------------------------------------------------------------------------------
37132    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37133          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37134          ,p_balance_type_code => l_balance_type_code
37135          );
37136 
37137    -------------------------------------------------------------------------------------------
37138    -- 4262811 - Generate the Accrual Reversal lines
37139    -------------------------------------------------------------------------------------------
37140    BEGIN
37141       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37142                               (g_array_event(p_event_id).array_value_num('header_index'));
37143       IF l_acc_rev_flag IS NULL THEN
37144          l_acc_rev_flag := 'N';
37145       END IF;
37146    EXCEPTION
37147       WHEN OTHERS THEN
37148          l_acc_rev_flag := 'N';
37149    END;
37150    --
37151    IF (l_acc_rev_flag = 'Y') THEN
37152 
37153        -- 4645092  ------------------------------------------------------------------------------
37154        -- To allow MPA report to determine if it should generate report process
37155        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37156        ------------------------------------------------------------------------------------------
37157 
37158        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37159        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37160 
37161        --
37162        -- Update the line information that should be overwritten
37163        --
37164        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37165                                          p_header_num   => 1);
37166        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37167 
37168        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37169 
37170        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37171           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37172        END IF;
37173 
37174       --
37175       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37176       --
37177       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37178           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37179       ELSE
37180           ---------------------------------------------------------------------------------------------------
37181           -- 4262811a Switch Sign
37182           ---------------------------------------------------------------------------------------------------
37183           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37184           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37185                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37186           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37187                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37188           -- 5132302
37189           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37190                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37191 
37192       END IF;
37193 
37194       -- 4955764
37195       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37196       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37197 
37198 
37199       XLA_AE_LINES_PKG.ValidateCurrentLine;
37200       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37201 
37202       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37203                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37204                ,p_balance_type_code => l_balance_type_code);
37205 
37206    END IF;
37207 
37208    -----------------------------------------------------------------------------------------
37209    -- 4262811 Multiperiod Accounting
37210    -----------------------------------------------------------------------------------------
37211      -- No MPA option is assigned.
37212 
37213 
37214 END IF;
37215 END IF;
37216 --
37217 
37218 --
37219 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37220    trace
37221       (p_msg      => 'END of AcctLineType_66'
37222       ,p_level    => C_LEVEL_PROCEDURE
37223       ,p_module   => l_log_module);
37224 END IF;
37225 --
37226 EXCEPTION
37227   WHEN xla_exceptions_pkg.application_exception THEN
37228       RAISE;
37229   WHEN OTHERS THEN
37230        xla_exceptions_pkg.raise_message
37231            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_66');
37232 END AcctLineType_66;
37233 --
37234 
37235 ---------------------------------------
37236 --
37237 -- PRIVATE FUNCTION
37238 --         AcctLineType_67
37239 --
37240 ---------------------------------------
37241 PROCEDURE AcctLineType_67 (
37242   p_application_id        IN NUMBER
37243  ,p_event_id              IN NUMBER
37244  ,p_calculate_acctd_flag  IN VARCHAR2
37245  ,p_calculate_g_l_flag    IN VARCHAR2
37246  ,p_actual_flag           IN OUT VARCHAR2
37247  ,p_balance_type_code     OUT VARCHAR2
37248  ,p_gain_or_loss_ref      OUT VARCHAR2
37249  
37250 --Journal entry Line Description
37251  , p_source_7            IN VARCHAR2
37252 --Budget Account
37253  , p_source_11            IN NUMBER
37254 --Main Or Backing Code
37255  , p_source_13            IN VARCHAR2
37256 --Accounting Reversal Flag
37257  , p_source_16            IN VARCHAR2
37258 --PO Distribution Type
37259  , p_source_24            IN VARCHAR2
37260 --PO Distribution Identifier
37261  , p_source_29            IN NUMBER
37262 --Entered Amount
37263  , p_source_33            IN NUMBER
37264 --Currency Code
37265  , p_source_34            IN VARCHAR2
37266 --Accounted Amount
37267  , p_source_35            IN NUMBER
37268 --PO Header Identifier
37269  , p_source_52            IN NUMBER
37270 --Applied To Application Identifier
37271  , p_source_53            IN NUMBER
37272 --Applied To Distribution Link Type
37273  , p_source_54            IN VARCHAR2
37274 --Applied To Entity Code
37275  , p_source_55            IN VARCHAR2
37276 --Applied To Distribution Identifier 1
37277  , p_source_56            IN NUMBER
37278 --Applied To Header Identifier 1
37279  , p_source_57            IN NUMBER
37280 --Distribution Link Type
37281  , p_source_58            IN VARCHAR2
37282 --PO Encumbrance Upgrade Option
37283  , p_source_59            IN VARCHAR2
37284 --JFMIP Reference
37285  , p_source_60            IN VARCHAR2
37286 --PO Upgrade Encumbrance Type Identifier
37287  , p_source_61            IN NUMBER
37288 --Currency Conversion Date
37289  , p_source_62            IN DATE
37290 --Currency Conversion Rate
37291  , p_source_63            IN NUMBER
37292 --Currency Conversion Type
37293  , p_source_64            IN VARCHAR2
37294 --Adjustment Status
37295  , p_source_75            IN VARCHAR2
37296 )
37297 IS
37298 
37299 l_component_type              VARCHAR2(80);
37300 l_component_code              VARCHAR2(30);
37301 l_component_type_code         VARCHAR2(1);
37302 l_component_appl_id           INTEGER;
37303 l_amb_context_code            VARCHAR2(30);
37304 l_entity_code                 VARCHAR2(30);
37305 l_event_class_code            VARCHAR2(30);
37306 l_ae_header_id                NUMBER;
37307 l_event_type_code             VARCHAR2(30);
37308 l_line_definition_code        VARCHAR2(30);
37309 l_line_definition_owner_code  VARCHAR2(1);
37310 --
37311 -- adr variables
37312 l_segment                     VARCHAR2(30);
37313 l_ccid                        NUMBER;
37314 l_adr_transaction_coa_id      NUMBER;
37315 l_adr_accounting_coa_id       NUMBER;
37316 l_adr_flexfield_segment_code  VARCHAR2(30);
37317 l_adr_flex_value_set_id       NUMBER;
37318 l_adr_value_type_code         VARCHAR2(30);
37319 l_adr_value_combination_id    NUMBER;
37320 l_adr_value_segment_code      VARCHAR2(30);
37321 
37322 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37323 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37324 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37325 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37326 
37327 -- 4262811 Variables ------------------------------------------------------------------------------------------
37328 l_entered_amt_idx             NUMBER;
37329 l_accted_amt_idx              NUMBER;
37330 l_acc_rev_flag                VARCHAR2(1);
37331 l_accrual_line_num            NUMBER;
37332 l_tmp_amt                     NUMBER;
37333 l_acc_rev_natural_side_code   VARCHAR2(1);
37334 
37335 l_num_entries                 NUMBER;
37336 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37337 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37338 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37339 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37340 l_recog_line_1                NUMBER;
37341 l_recog_line_2                NUMBER;
37342 
37343 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37344 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37345 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37346 
37347 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37348 
37349 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37350 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37351 
37352 ---------------------------------------------------------------------------------------------------------------
37353 
37354 
37355 --
37356 -- bulk performance
37357 --
37358 l_balance_type_code           VARCHAR2(1);
37359 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37360 l_log_module                  VARCHAR2(240);
37361 
37362 --
37363 -- Upgrade strategy
37364 --
37365 l_actual_upg_option           VARCHAR2(1);
37366 l_enc_upg_option           VARCHAR2(1);
37367 
37368 --
37369 BEGIN
37370 --
37371 IF g_log_enabled THEN
37372       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
37373 END IF;
37374 --
37375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37376 
37377       trace
37378          (p_msg      => 'BEGIN of AcctLineType_67'
37379          ,p_level    => C_LEVEL_PROCEDURE
37380          ,p_module   => l_log_module);
37381 
37382 END IF;
37383 --
37384 l_component_type             := 'AMB_JLT';
37385 l_component_code             := 'RESERVE_PO_ENCUMBRANCE';
37386 l_component_type_code        := 'S';
37387 l_component_appl_id          :=  201;
37388 l_amb_context_code           := 'DEFAULT';
37389 l_entity_code                := 'PURCHASE_ORDER';
37390 l_event_class_code           := 'PO_PA';
37391 l_event_type_code            := 'PO_PA_ALL';
37392 l_line_definition_owner_code := 'S';
37393 l_line_definition_code       := 'PO_PA_ENC_ALL';
37394 --
37395 l_balance_type_code          := 'E';
37396 l_segment                     := NULL;
37397 l_ccid                        := NULL;
37398 l_adr_transaction_coa_id      := NULL;
37399 l_adr_accounting_coa_id       := NULL;
37400 l_adr_flexfield_segment_code  := NULL;
37401 l_adr_flex_value_set_id       := NULL;
37402 l_adr_value_type_code         := NULL;
37403 l_adr_value_combination_id    := NULL;
37404 l_adr_value_segment_code      := NULL;
37405 
37406 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37407 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
37408 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37409 l_budgetary_control_flag     := 'Y';
37410 
37411 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37412 l_bflow_applied_to_amt       := NULL; -- 5132302
37413 l_entered_amt_idx            := NULL;          -- 4262811
37414 l_accted_amt_idx             := NULL;          -- 4262811
37415 l_acc_rev_flag               := NULL;          -- 4262811
37416 l_accrual_line_num           := NULL;          -- 4262811
37417 l_tmp_amt                    := NULL;          -- 4262811
37418 --
37419  
37420 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37421     l_balance_type_code <> 'B' THEN
37422 IF (NVL(
37423 xla_ae_sources_pkg.GetSystemSourceChar(
37424    p_source_code           => 'XLA_EVENT_TYPE_CODE'
37425  , p_source_type_code      => 'Y'
37426  , p_source_application_id =>  602
37427 ),'
37428 ') =  'PO_PA_RESERVED' OR 
37429 (NVL(
37430 xla_ae_sources_pkg.GetSystemSourceChar(
37431    p_source_code           => 'XLA_EVENT_TYPE_CODE'
37432  , p_source_type_code      => 'Y'
37433  , p_source_application_id =>  602
37434 ),'
37435 ') =  'PO_PA_ADJUSTED' AND 
37436 NVL(p_source_75,'
37437 ') =  'NEW')
37438 ) AND NVL(p_source_13,'
37439 ') =  'M' AND 
37440 (NVL(p_source_24,'
37441 ') <>  'AGREEMENT' OR 
37442 p_source_24 IS NULL )
37443  THEN 
37444 
37445    --
37446    XLA_AE_LINES_PKG.SetNewLine;
37447 
37448    p_balance_type_code          := l_balance_type_code;
37449    -- set the flag so later we will know whether the gain loss line needs to be created
37450    
37451    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37452      p_actual_flag :='A';
37453    END IF;
37454 
37455    --
37456    -- bulk performance
37457    --
37458    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37459                                       p_header_num   => 0); -- 4262811
37460    --
37461    -- set accounting line options
37462    --
37463    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37464            p_natural_side_code          => 'D'
37465          , p_gain_or_loss_flag          => 'N'
37466          , p_gl_transfer_mode_code      => 'S'
37467          , p_acct_entry_type_code       => 'E'
37468          , p_switch_side_flag           => 'N'
37469          , p_merge_duplicate_code       => 'N'
37470          );
37471    --
37472    l_acc_rev_natural_side_code := 'C';  -- 4262811
37473    -- 
37474    --
37475    -- set accounting line type info
37476    --
37477    xla_ae_lines_pkg.SetAcctLineType
37478       (p_component_type             => l_component_type
37479       ,p_event_type_code            => l_event_type_code
37480       ,p_line_definition_owner_code => l_line_definition_owner_code
37481       ,p_line_definition_code       => l_line_definition_code
37482       ,p_accounting_line_code       => l_component_code
37483       ,p_accounting_line_type_code  => l_component_type_code
37484       ,p_accounting_line_appl_id    => l_component_appl_id
37485       ,p_amb_context_code           => l_amb_context_code
37486       ,p_entity_code                => l_entity_code
37487       ,p_event_class_code           => l_event_class_code);
37488    --
37489    -- set accounting class
37490    --
37491    xla_ae_lines_pkg.SetAcctClass(
37492            p_accounting_class_code  => 'PURCHASE_ORDER'
37493          , p_ae_header_id           => l_ae_header_id
37494          );
37495 
37496    --
37497    -- set rounding class
37498    --
37499    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37500                       'PURCHASE_ORDER';
37501 
37502    --
37503    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37504    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37505    --
37506    -- bulk performance
37507    --
37508    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37509 
37510    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37511       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37512 
37513    -- 4955764
37514    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37515       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37516 
37517    -- 4458381 Public Sector Enh
37518       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
37519    --
37520    -- set accounting attributes for the line type
37521    --
37522    l_entered_amt_idx := 23;
37523    l_accted_amt_idx  := 28;
37524    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37525    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37526    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
37527    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
37528    l_rec_acct_attrs.array_num_value(2)  := 
37529 xla_ae_sources_pkg.GetSystemSourceNum(
37530    p_source_code           => 'XLA_EVENT_APPL_ID'
37531  , p_source_type_code      => 'Y'
37532  , p_source_application_id =>  602
37533 );
37534    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
37535    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
37536    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
37537    l_rec_acct_attrs.array_char_value(4)  := 
37538 xla_ae_sources_pkg.GetSystemSourceChar(
37539    p_source_code           => 'XLA_ENTITY_CODE'
37540  , p_source_type_code      => 'Y'
37541  , p_source_application_id =>  602
37542 );
37543    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
37544    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
37545    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
37546    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
37547    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
37548    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
37549    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37550    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
37551    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
37552    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
37553    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
37554    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
37555    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37556    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
37557    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
37558    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
37559    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
37560    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
37561    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
37562    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
37563    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
37564    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
37565    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
37566    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
37567    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
37568    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
37569    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
37570    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
37571    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
37572    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
37573    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
37574    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
37575    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
37576    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
37577    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
37578    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
37579    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
37580    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
37581    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
37582    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
37583    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
37584    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
37585    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
37586    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
37587    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
37588    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
37589    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
37590    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
37591    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
37592    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
37593    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
37594    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
37595    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
37596    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
37597    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
37598    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_29);
37599    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
37600    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
37601    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
37602    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
37603 
37604    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37605    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37606 
37607    ---------------------------------------------------------------------------------------------------------------
37608    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37609    ---------------------------------------------------------------------------------------------------------------
37610    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37611 
37612    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37613    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37614 
37615    IF xla_accounting_cache_pkg.GetValueChar
37616          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37617          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37618    AND l_bflow_method_code = 'PRIOR_ENTRY'
37619 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37620    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37621          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37622        )
37623    THEN
37624          xla_ae_lines_pkg.BflowUpgEntry
37625            (p_business_method_code    => l_bflow_method_code
37626            ,p_business_class_code     => l_bflow_class_code
37627            ,p_balance_type            => l_balance_type_code);
37628    ELSE
37629       NULL;
37630 -- No business flow processing for business flow method of NONE.
37631    END IF;
37632 
37633    --
37634    -- call analytical criteria
37635    --
37636    
37637    --
37638    -- call description
37639    --
37640    
37641 xla_ae_lines_pkg.SetLineDescription(
37642    p_ae_header_id => l_ae_header_id
37643   ,p_description  => Description_3 (
37644      p_application_id         => p_application_id
37645    , p_ae_header_id           => l_ae_header_id 
37646 , p_source_7 => p_source_7
37647    )
37648 );
37649 
37650 
37651    --
37652    -- call ADRs
37653    -- Bug 4922099
37654    --
37655    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37656         (NVL(l_actual_upg_option, 'N') = 'O') OR
37657         (NVL(l_enc_upg_option, 'N') = 'O')
37658       )
37659    THEN
37660    NULL;
37661    --
37662    --
37663    
37664   l_ccid := AcctDerRule_8(
37665            p_application_id           => p_application_id
37666          , p_ae_header_id             => l_ae_header_id 
37667 , p_source_11 => p_source_11
37668          , x_transaction_coa_id       => l_adr_transaction_coa_id
37669          , x_accounting_coa_id        => l_adr_accounting_coa_id
37670          , x_value_type_code          => l_adr_value_type_code
37671          , p_side                     => 'NA'
37672    );
37673 
37674    xla_ae_lines_pkg.set_ccid(
37675     p_code_combination_id          => l_ccid
37676   , p_value_type_code              => l_adr_value_type_code
37677   , p_transaction_coa_id           => l_adr_transaction_coa_id
37678   , p_accounting_coa_id            => l_adr_accounting_coa_id
37679   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
37680   , p_adr_type_code                => 'S'
37681   , p_component_type               => l_component_type
37682   , p_component_code               => l_component_code
37683   , p_component_type_code          => l_component_type_code
37684   , p_component_appl_id            => l_component_appl_id
37685   , p_amb_context_code             => l_amb_context_code
37686   , p_side                         => 'NA'
37687   );
37688 
37689 
37690    --
37691    --
37692    END IF;
37693    --
37694    -- Bug 4922099
37695    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37696           (NVL(l_enc_upg_option, 'N') = 'O')
37697         ) AND
37698         (l_bflow_method_code = 'PRIOR_ENTRY')
37699       )
37700    THEN
37701       IF
37702       --
37703       1 = 2
37704       --
37705       THEN
37706       xla_accounting_err_pkg.build_message
37707                                     (p_appli_s_name            => 'XLA'
37708                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37709                                     ,p_token_1                 => 'LINE_NUMBER'
37710                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37711                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37712                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37713                                                                              l_component_type
37714                                                                             ,l_component_code
37715                                                                             ,l_component_type_code
37716                                                                             ,l_component_appl_id
37717                                                                             ,l_amb_context_code
37718                                                                             ,l_entity_code
37719                                                                             ,l_event_class_code
37720                                                                            )
37721                                     ,p_token_3                 => 'OWNER'
37722                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37723                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37724                                                                           ,p_lookup_code    => l_component_type_code
37725                                                                          )
37726                                     ,p_token_4                 => 'PRODUCT_NAME'
37727                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37728                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37729                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37730                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37731                                     ,p_ae_header_id            =>  NULL
37732                                        );
37733 
37734         IF (C_LEVEL_ERROR>= g_log_level) THEN
37735                  trace
37736                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37737                       ,p_level    => C_LEVEL_ERROR
37738                       ,p_module   => l_log_module);
37739         END IF;
37740       END IF;
37741    END IF;
37742    --
37743    --
37744    ------------------------------------------------------------------------------------------------
37745    -- 4219869 Business Flow
37746    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37747    -- Prior Entry.  Currently, the following code is always generated.
37748    ------------------------------------------------------------------------------------------------
37749    XLA_AE_LINES_PKG.ValidateCurrentLine;
37750 
37751    ------------------------------------------------------------------------------------
37752    -- 4219869 Business Flow
37753    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37754    ------------------------------------------------------------------------------------
37755    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37756 
37757    ----------------------------------------------------------------------------------
37758    -- 4219869 Business Flow
37759    -- Update journal entry status -- Need to generate this within IF <condition>
37760    ----------------------------------------------------------------------------------
37761    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37762          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37763          ,p_balance_type_code => l_balance_type_code
37764          );
37765 
37766    -------------------------------------------------------------------------------------------
37767    -- 4262811 - Generate the Accrual Reversal lines
37768    -------------------------------------------------------------------------------------------
37769    BEGIN
37770       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37771                               (g_array_event(p_event_id).array_value_num('header_index'));
37772       IF l_acc_rev_flag IS NULL THEN
37773          l_acc_rev_flag := 'N';
37774       END IF;
37775    EXCEPTION
37776       WHEN OTHERS THEN
37777          l_acc_rev_flag := 'N';
37778    END;
37779    --
37780    IF (l_acc_rev_flag = 'Y') THEN
37781 
37782        -- 4645092  ------------------------------------------------------------------------------
37783        -- To allow MPA report to determine if it should generate report process
37784        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37785        ------------------------------------------------------------------------------------------
37786 
37787        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37788        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37789 
37790        --
37791        -- Update the line information that should be overwritten
37792        --
37793        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37794                                          p_header_num   => 1);
37795        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37796 
37797        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37798 
37799        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37800           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37801        END IF;
37802 
37803       --
37804       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37805       --
37806       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37807           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37808       ELSE
37809           ---------------------------------------------------------------------------------------------------
37810           -- 4262811a Switch Sign
37811           ---------------------------------------------------------------------------------------------------
37812           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37813           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37814                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37815           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37816                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37817           -- 5132302
37818           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37819                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37820 
37821       END IF;
37822 
37823       -- 4955764
37824       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37825       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37826 
37827 
37828       XLA_AE_LINES_PKG.ValidateCurrentLine;
37829       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37830 
37831       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37832                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37833                ,p_balance_type_code => l_balance_type_code);
37834 
37835    END IF;
37836 
37837    -----------------------------------------------------------------------------------------
37838    -- 4262811 Multiperiod Accounting
37839    -----------------------------------------------------------------------------------------
37840      -- No MPA option is assigned.
37841 
37842 
37843 END IF;
37844 END IF;
37845 --
37846 
37847 --
37848 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37849    trace
37850       (p_msg      => 'END of AcctLineType_67'
37851       ,p_level    => C_LEVEL_PROCEDURE
37852       ,p_module   => l_log_module);
37853 END IF;
37854 --
37855 EXCEPTION
37856   WHEN xla_exceptions_pkg.application_exception THEN
37857       RAISE;
37858   WHEN OTHERS THEN
37859        xla_exceptions_pkg.raise_message
37860            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_67');
37861 END AcctLineType_67;
37862 --
37863 
37864 ---------------------------------------
37865 --
37866 -- PRIVATE FUNCTION
37867 --         AcctLineType_68
37868 --
37869 ---------------------------------------
37870 PROCEDURE AcctLineType_68 (
37871   p_application_id        IN NUMBER
37872  ,p_event_id              IN NUMBER
37873  ,p_calculate_acctd_flag  IN VARCHAR2
37874  ,p_calculate_g_l_flag    IN VARCHAR2
37875  ,p_actual_flag           IN OUT VARCHAR2
37876  ,p_balance_type_code     OUT VARCHAR2
37877  ,p_gain_or_loss_ref      OUT VARCHAR2
37878  
37879 --Project Name
37880  , p_source_3            IN VARCHAR2
37881 --Task Name
37882  , p_source_4            IN VARCHAR2
37883 --Project Expenditure Organization Identifier
37884  , p_source_5            IN NUMBER
37885 --Expenditure Type
37886  , p_source_6            IN VARCHAR2
37887 --Main Or Backing Code
37888  , p_source_13            IN VARCHAR2
37889 --Accounting Reversal Flag
37890  , p_source_16            IN VARCHAR2
37891 --Allocated to Application Identifier
37892  , p_source_17            IN NUMBER
37893 --Allocated to Distribution Type
37894  , p_source_18            IN VARCHAR2
37895 --Allocated to Entity Code
37896  , p_source_19            IN VARCHAR2
37897 --Allocated to First Distribution Identifier
37898  , p_source_20            IN NUMBER
37899 --Allocated to First System Transaction Identifier
37900  , p_source_21            IN NUMBER
37901 --Allocated to Second Distribution Identifier
37902  , p_source_22            IN VARCHAR2
37903 --PO Distribution Identifier
37904  , p_source_29            IN NUMBER
37905 --Line Type Name
37906  , p_source_30            IN VARCHAR2
37907 --Encumbrance Upgrade Credit Accounting Class
37908  , p_source_31            IN VARCHAR2
37909 --Encumbrance Upgrade Credit Account
37910  , p_source_32            IN NUMBER
37911 --Entered Amount
37912  , p_source_33            IN NUMBER
37913 --Currency Code
37914  , p_source_34            IN VARCHAR2
37915 --Accounted Amount
37916  , p_source_35            IN NUMBER
37917 --Encumbrance Upgrade Debit Accounting Class
37918  , p_source_36            IN VARCHAR2
37919 --Encumbrance Upgrade Debit Account
37920  , p_source_37            IN NUMBER
37921 --Use Encumbrances Upgrade Attributes Flag
37922  , p_source_38            IN VARCHAR2
37923 --Encumbrance Upgrade Credit Encumbrance Type
37924  , p_source_39            IN NUMBER
37925 --Encumbrance Upgrade Debit Encumbrance Type
37926  , p_source_40            IN NUMBER
37927 --Project Encumbrance Applied to Application Identifier
37928  , p_source_68            IN NUMBER
37929 --Project Encumbrance Applied to Distribution Type
37930  , p_source_69            IN VARCHAR2
37931 --Project Encumbrance Applied to Entity Code
37932  , p_source_70            IN VARCHAR2
37933 --Project Encumbrance Applied to First Distribution Identifier
37934  , p_source_71            IN NUMBER
37935 --Project Encumbrance Applied to First System Transaction Identifier
37936  , p_source_72            IN NUMBER
37937 --Project Encumbrance Applied to Second Distribution Identifier
37938  , p_source_73            IN VARCHAR2
37939 )
37940 IS
37941 
37942 l_component_type              VARCHAR2(80);
37943 l_component_code              VARCHAR2(30);
37944 l_component_type_code         VARCHAR2(1);
37945 l_component_appl_id           INTEGER;
37946 l_amb_context_code            VARCHAR2(30);
37947 l_entity_code                 VARCHAR2(30);
37948 l_event_class_code            VARCHAR2(30);
37949 l_ae_header_id                NUMBER;
37950 l_event_type_code             VARCHAR2(30);
37951 l_line_definition_code        VARCHAR2(30);
37952 l_line_definition_owner_code  VARCHAR2(1);
37953 --
37954 -- adr variables
37955 l_segment                     VARCHAR2(30);
37956 l_ccid                        NUMBER;
37957 l_adr_transaction_coa_id      NUMBER;
37958 l_adr_accounting_coa_id       NUMBER;
37959 l_adr_flexfield_segment_code  VARCHAR2(30);
37960 l_adr_flex_value_set_id       NUMBER;
37961 l_adr_value_type_code         VARCHAR2(30);
37962 l_adr_value_combination_id    NUMBER;
37963 l_adr_value_segment_code      VARCHAR2(30);
37964 
37965 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37966 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37967 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37968 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37969 
37970 -- 4262811 Variables ------------------------------------------------------------------------------------------
37971 l_entered_amt_idx             NUMBER;
37972 l_accted_amt_idx              NUMBER;
37973 l_acc_rev_flag                VARCHAR2(1);
37974 l_accrual_line_num            NUMBER;
37975 l_tmp_amt                     NUMBER;
37976 l_acc_rev_natural_side_code   VARCHAR2(1);
37977 
37978 l_num_entries                 NUMBER;
37979 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37980 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37981 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37982 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37983 l_recog_line_1                NUMBER;
37984 l_recog_line_2                NUMBER;
37985 
37986 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37987 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37988 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37989 
37990 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37991 
37992 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37993 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37994 
37995 ---------------------------------------------------------------------------------------------------------------
37996 
37997 
37998 --
37999 -- bulk performance
38000 --
38001 l_balance_type_code           VARCHAR2(1);
38002 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38003 l_log_module                  VARCHAR2(240);
38004 
38005 --
38006 -- Upgrade strategy
38007 --
38008 l_actual_upg_option           VARCHAR2(1);
38009 l_enc_upg_option           VARCHAR2(1);
38010 
38011 --
38012 BEGIN
38013 --
38014 IF g_log_enabled THEN
38015       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
38016 END IF;
38017 --
38018 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38019 
38020       trace
38021          (p_msg      => 'BEGIN of AcctLineType_68'
38022          ,p_level    => C_LEVEL_PROCEDURE
38023          ,p_module   => l_log_module);
38024 
38025 END IF;
38026 --
38027 l_component_type             := 'AMB_JLT';
38028 l_component_code             := 'RESERVE_PROJ_ENC';
38029 l_component_type_code        := 'S';
38030 l_component_appl_id          :=  201;
38031 l_amb_context_code           := 'DEFAULT';
38032 l_entity_code                := 'RELEASE';
38033 l_event_class_code           := 'RELEASE_BURDEN';
38034 l_event_type_code            := 'RELEASE_BURDEN_ALL';
38035 l_line_definition_owner_code := 'S';
38036 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
38037 --
38038 l_balance_type_code          := 'E';
38039 l_segment                     := NULL;
38040 l_ccid                        := NULL;
38041 l_adr_transaction_coa_id      := NULL;
38042 l_adr_accounting_coa_id       := NULL;
38043 l_adr_flexfield_segment_code  := NULL;
38044 l_adr_flex_value_set_id       := NULL;
38045 l_adr_value_type_code         := NULL;
38046 l_adr_value_combination_id    := NULL;
38047 l_adr_value_segment_code      := NULL;
38048 
38049 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
38050 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
38051 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38052 l_budgetary_control_flag     := 'Y';
38053 
38054 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38055 l_bflow_applied_to_amt       := NULL; -- 5132302
38056 l_entered_amt_idx            := NULL;          -- 4262811
38057 l_accted_amt_idx             := NULL;          -- 4262811
38058 l_acc_rev_flag               := NULL;          -- 4262811
38059 l_accrual_line_num           := NULL;          -- 4262811
38060 l_tmp_amt                    := NULL;          -- 4262811
38061 --
38062  
38063 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38064     l_balance_type_code <> 'B' THEN
38065 IF ((NVL(
38066 xla_ae_sources_pkg.GetSystemSourceChar(
38067    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38068  , p_source_type_code      => 'Y'
38069  , p_source_application_id =>  602
38070 ),'
38071 ') =  'REL_BURDEN_CANCELLED' OR 
38072 NVL(
38073 xla_ae_sources_pkg.GetSystemSourceChar(
38074    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38075  , p_source_type_code      => 'Y'
38076  , p_source_application_id =>  602
38077 ),'
38078 ') =  'REL_BURDEN_CR_MEMO_CANCELLED' OR 
38079 NVL(
38080 xla_ae_sources_pkg.GetSystemSourceChar(
38081    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38082  , p_source_type_code      => 'Y'
38083  , p_source_application_id =>  602
38084 ),'
38085 ') =  'REL_BURDEN_RESERVED') AND 
38086 (NVL(p_source_13,'
38087 ') =  'B_PO' OR 
38088 NVL(p_source_13,'
38089 ') =  'B_PA' OR 
38090 NVL(p_source_13,'
38091 ') =  'B_REQ')
38092 ) OR ((NVL(
38093 xla_ae_sources_pkg.GetSystemSourceChar(
38094    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38095  , p_source_type_code      => 'Y'
38096  , p_source_application_id =>  602
38097 ),'
38098 ') =  'REL_BURDEN_UNRESERVED' OR 
38099 NVL(
38100 xla_ae_sources_pkg.GetSystemSourceChar(
38101    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38102  , p_source_type_code      => 'Y'
38103  , p_source_application_id =>  602
38104 ),'
38105 ') =  'REL_BURDEN_INV_CANCELLED' OR 
38106 NVL(
38107 xla_ae_sources_pkg.GetSystemSourceChar(
38108    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38109  , p_source_type_code      => 'Y'
38110  , p_source_application_id =>  602
38111 ),'
38112 ') =  'REL_BURDEN_REJECTED' OR 
38113 NVL(
38114 xla_ae_sources_pkg.GetSystemSourceChar(
38115    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38116  , p_source_type_code      => 'Y'
38117  , p_source_application_id =>  602
38118 ),'
38119 ') =  'REL_BURDEN_FINAL_CLOSED') AND 
38120 NVL(p_source_13,'
38121 ') =  'M'
38122 ) THEN 
38123 
38124    --
38125    XLA_AE_LINES_PKG.SetNewLine;
38126 
38127    p_balance_type_code          := l_balance_type_code;
38128    -- set the flag so later we will know whether the gain loss line needs to be created
38129    
38130    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38131      p_actual_flag :='A';
38132    END IF;
38133 
38134    --
38135    -- bulk performance
38136    --
38137    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38138                                       p_header_num   => 0); -- 4262811
38139    --
38140    -- set accounting line options
38141    --
38142    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38143            p_natural_side_code          => 'D'
38144          , p_gain_or_loss_flag          => 'N'
38145          , p_gl_transfer_mode_code      => 'S'
38146          , p_acct_entry_type_code       => 'E'
38147          , p_switch_side_flag           => 'N'
38148          , p_merge_duplicate_code       => 'N'
38149          );
38150    --
38151    l_acc_rev_natural_side_code := 'C';  -- 4262811
38152    -- 
38153    --
38154    -- set accounting line type info
38155    --
38156    xla_ae_lines_pkg.SetAcctLineType
38157       (p_component_type             => l_component_type
38158       ,p_event_type_code            => l_event_type_code
38159       ,p_line_definition_owner_code => l_line_definition_owner_code
38160       ,p_line_definition_code       => l_line_definition_code
38161       ,p_accounting_line_code       => l_component_code
38162       ,p_accounting_line_type_code  => l_component_type_code
38163       ,p_accounting_line_appl_id    => l_component_appl_id
38164       ,p_amb_context_code           => l_amb_context_code
38165       ,p_entity_code                => l_entity_code
38166       ,p_event_class_code           => l_event_class_code);
38167    --
38168    -- set accounting class
38169    --
38170    xla_ae_lines_pkg.SetAcctClass(
38171            p_accounting_class_code  => 'PA_BUDGET_ENC'
38172          , p_ae_header_id           => l_ae_header_id
38173          );
38174 
38175    --
38176    -- set rounding class
38177    --
38178    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38179                       'PA_BUDGET_ENC';
38180 
38181    --
38182    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38183    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38184    --
38185    -- bulk performance
38186    --
38187    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38188 
38189    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38190       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38191 
38192    -- 4955764
38193    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38194       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38195 
38196    -- 4458381 Public Sector Enh
38197    
38198    --
38199    -- set accounting attributes for the line type
38200    --
38201    l_entered_amt_idx := 28;
38202    l_accted_amt_idx  := 30;
38203    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38204    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
38205    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
38206    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
38207    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
38208    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
38209    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
38210    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
38211    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
38212    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
38213    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
38214    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
38215    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
38216    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
38217    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
38218    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
38219    l_rec_acct_attrs.array_num_value(8)  := p_source_68;
38220    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
38221    l_rec_acct_attrs.array_char_value(9)  := p_source_69;
38222    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
38223    l_rec_acct_attrs.array_char_value(10)  := p_source_70;
38224    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
38225    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_71);
38226    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
38227    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_72);
38228    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
38229    l_rec_acct_attrs.array_char_value(13)  := p_source_73;
38230    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
38231    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
38232    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
38233    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
38234    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
38235    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
38236    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
38237    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
38238    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
38239    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
38240    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
38241    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
38242    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
38243    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
38244    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
38245    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
38246    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
38247    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
38248    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
38249    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
38250    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
38251    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
38252    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
38253    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
38254    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
38255    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
38256    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
38257    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
38258    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
38259    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
38260    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
38261    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
38262    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
38263    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
38264    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
38265    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
38266    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
38267    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
38268    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
38269    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
38270    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
38271    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
38272    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
38273    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
38274 
38275    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38276    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38277 
38278    ---------------------------------------------------------------------------------------------------------------
38279    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38280    ---------------------------------------------------------------------------------------------------------------
38281    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38282 
38283    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38284    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38285 
38286    IF xla_accounting_cache_pkg.GetValueChar
38287          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38288          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38289    AND l_bflow_method_code = 'PRIOR_ENTRY'
38290 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38291    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38292          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38293        )
38294    THEN
38295          xla_ae_lines_pkg.BflowUpgEntry
38296            (p_business_method_code    => l_bflow_method_code
38297            ,p_business_class_code     => l_bflow_class_code
38298            ,p_balance_type            => l_balance_type_code);
38299    ELSE
38300       NULL;
38301 XLA_AE_LINES_PKG.business_flow_validation(
38302                                 p_business_method_code     => l_bflow_method_code
38303                                ,p_business_class_code      => l_bflow_class_code
38304                                ,p_inherit_description_flag => l_inherit_desc_flag);
38305    END IF;
38306 
38307    --
38308    -- call analytical criteria
38309    --
38310    -- Inherited Analytical Criteria for business flow method of Prior Entry.
38311    --
38312    -- call description
38313    --
38314    
38315 xla_ae_lines_pkg.SetLineDescription(
38316    p_ae_header_id => l_ae_header_id
38317   ,p_description  => Description_2 (
38318      p_application_id         => p_application_id
38319    , p_ae_header_id           => l_ae_header_id 
38320 , p_source_3 => p_source_3
38321 , p_source_4 => p_source_4
38322 , p_source_5 => p_source_5
38323 , p_source_6 => p_source_6
38324    )
38325 );
38326 
38327 
38328    --
38329    -- call ADRs
38330    -- Bug 4922099
38331    --
38332    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38333         (NVL(l_actual_upg_option, 'N') = 'O') OR
38334         (NVL(l_enc_upg_option, 'N') = 'O')
38335       )
38336    THEN
38337    NULL;
38338    --
38339    --
38340    
38341    --
38342    --
38343    END IF;
38344    --
38345    -- Bug 4922099
38346    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38347           (NVL(l_enc_upg_option, 'N') = 'O')
38348         ) AND
38349         (l_bflow_method_code = 'PRIOR_ENTRY')
38350       )
38351    THEN
38352       IF
38353       --
38354       1 = 1
38355       --
38356       THEN
38357       xla_accounting_err_pkg.build_message
38358                                     (p_appli_s_name            => 'XLA'
38359                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38360                                     ,p_token_1                 => 'LINE_NUMBER'
38361                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38362                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38363                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38364                                                                              l_component_type
38365                                                                             ,l_component_code
38366                                                                             ,l_component_type_code
38367                                                                             ,l_component_appl_id
38368                                                                             ,l_amb_context_code
38369                                                                             ,l_entity_code
38370                                                                             ,l_event_class_code
38371                                                                            )
38372                                     ,p_token_3                 => 'OWNER'
38373                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38374                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38375                                                                           ,p_lookup_code    => l_component_type_code
38376                                                                          )
38377                                     ,p_token_4                 => 'PRODUCT_NAME'
38378                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38379                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38380                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38381                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38382                                     ,p_ae_header_id            =>  NULL
38383                                        );
38384 
38385         IF (C_LEVEL_ERROR>= g_log_level) THEN
38386                  trace
38387                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38388                       ,p_level    => C_LEVEL_ERROR
38389                       ,p_module   => l_log_module);
38390         END IF;
38391       END IF;
38392    END IF;
38393    --
38394    --
38395    ------------------------------------------------------------------------------------------------
38396    -- 4219869 Business Flow
38397    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38398    -- Prior Entry.  Currently, the following code is always generated.
38399    ------------------------------------------------------------------------------------------------
38400    -- No ValidateCurrentLine for business flow method of Prior Entry
38401 
38402    ------------------------------------------------------------------------------------
38403    -- 4219869 Business Flow
38404    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38405    ------------------------------------------------------------------------------------
38406    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38407 
38408    ----------------------------------------------------------------------------------
38409    -- 4219869 Business Flow
38410    -- Update journal entry status -- Need to generate this within IF <condition>
38411    ----------------------------------------------------------------------------------
38412    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38413          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38414          ,p_balance_type_code => l_balance_type_code
38415          );
38416 
38417    -------------------------------------------------------------------------------------------
38418    -- 4262811 - Generate the Accrual Reversal lines
38419    -------------------------------------------------------------------------------------------
38420    BEGIN
38421       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38422                               (g_array_event(p_event_id).array_value_num('header_index'));
38423       IF l_acc_rev_flag IS NULL THEN
38424          l_acc_rev_flag := 'N';
38425       END IF;
38426    EXCEPTION
38427       WHEN OTHERS THEN
38428          l_acc_rev_flag := 'N';
38429    END;
38430    --
38431    IF (l_acc_rev_flag = 'Y') THEN
38432 
38433        -- 4645092  ------------------------------------------------------------------------------
38434        -- To allow MPA report to determine if it should generate report process
38435        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38436        ------------------------------------------------------------------------------------------
38437 
38438        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38439        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38440 
38441        --
38442        -- Update the line information that should be overwritten
38443        --
38444        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38445                                          p_header_num   => 1);
38446        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38447 
38448        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38449 
38450        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38451           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38452        END IF;
38453 
38454       --
38455       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38456       --
38457       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38458           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38459       ELSE
38460           ---------------------------------------------------------------------------------------------------
38461           -- 4262811a Switch Sign
38462           ---------------------------------------------------------------------------------------------------
38463           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38464           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38465                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38466           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38467                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38468           -- 5132302
38469           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38470                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38471 
38472       END IF;
38473 
38474       -- 4955764
38475       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38476       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38477 
38478 
38479       XLA_AE_LINES_PKG.ValidateCurrentLine;
38480       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38481 
38482       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38483                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38484                ,p_balance_type_code => l_balance_type_code);
38485 
38486    END IF;
38487 
38488    -----------------------------------------------------------------------------------------
38489    -- 4262811 Multiperiod Accounting
38490    -----------------------------------------------------------------------------------------
38491      -- No MPA option is assigned.
38492 
38493 
38494 END IF;
38495 END IF;
38496 --
38497 
38498 --
38499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38500    trace
38501       (p_msg      => 'END of AcctLineType_68'
38502       ,p_level    => C_LEVEL_PROCEDURE
38503       ,p_module   => l_log_module);
38504 END IF;
38505 --
38506 EXCEPTION
38507   WHEN xla_exceptions_pkg.application_exception THEN
38508       RAISE;
38509   WHEN OTHERS THEN
38510        xla_exceptions_pkg.raise_message
38511            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_68');
38512 END AcctLineType_68;
38513 --
38514 
38515 ---------------------------------------
38516 --
38517 -- PRIVATE FUNCTION
38518 --         AcctLineType_69
38519 --
38520 ---------------------------------------
38521 PROCEDURE AcctLineType_69 (
38522   p_application_id        IN NUMBER
38523  ,p_event_id              IN NUMBER
38524  ,p_calculate_acctd_flag  IN VARCHAR2
38525  ,p_calculate_g_l_flag    IN VARCHAR2
38526  ,p_actual_flag           IN OUT VARCHAR2
38527  ,p_balance_type_code     OUT VARCHAR2
38528  ,p_gain_or_loss_ref      OUT VARCHAR2
38529  
38530 --Project Name
38531  , p_source_3            IN VARCHAR2
38532 --Task Name
38533  , p_source_4            IN VARCHAR2
38534 --Project Expenditure Organization Identifier
38535  , p_source_5            IN NUMBER
38536 --Expenditure Type
38537  , p_source_6            IN VARCHAR2
38538 --Main Or Backing Code
38539  , p_source_13            IN VARCHAR2
38540 --Accounting Reversal Flag
38541  , p_source_16            IN VARCHAR2
38542 --Allocated to Application Identifier
38543  , p_source_17            IN NUMBER
38544 --Allocated to Distribution Type
38545  , p_source_18            IN VARCHAR2
38546 --Allocated to Entity Code
38547  , p_source_19            IN VARCHAR2
38548 --Allocated to First Distribution Identifier
38549  , p_source_20            IN NUMBER
38550 --Allocated to First System Transaction Identifier
38551  , p_source_21            IN NUMBER
38552 --PO Distribution Identifier
38553  , p_source_29            IN NUMBER
38554 --Line Type Name
38555  , p_source_30            IN VARCHAR2
38556 --Encumbrance Upgrade Credit Accounting Class
38557  , p_source_31            IN VARCHAR2
38558 --Encumbrance Upgrade Credit Account
38559  , p_source_32            IN NUMBER
38560 --Entered Amount
38561  , p_source_33            IN NUMBER
38562 --Currency Code
38563  , p_source_34            IN VARCHAR2
38564 --Accounted Amount
38565  , p_source_35            IN NUMBER
38566 --Encumbrance Upgrade Debit Accounting Class
38567  , p_source_36            IN VARCHAR2
38568 --Encumbrance Upgrade Debit Account
38569  , p_source_37            IN NUMBER
38570 --Use Encumbrances Upgrade Attributes Flag
38571  , p_source_38            IN VARCHAR2
38572 --Encumbrance Upgrade Credit Encumbrance Type
38573  , p_source_39            IN NUMBER
38574 --Encumbrance Upgrade Debit Encumbrance Type
38575  , p_source_40            IN NUMBER
38576 --Project Encumbrance Applied to Application Identifier
38577  , p_source_68            IN NUMBER
38578 --Project Encumbrance Applied to Distribution Type
38579  , p_source_69            IN VARCHAR2
38580 --Project Encumbrance Applied to Entity Code
38581  , p_source_70            IN VARCHAR2
38582 --Project Encumbrance Applied to First Distribution Identifier
38583  , p_source_71            IN NUMBER
38584 --Project Encumbrance Applied to First System Transaction Identifier
38585  , p_source_72            IN NUMBER
38586 --Project Encumbrance Applied to Second Distribution Identifier
38587  , p_source_73            IN VARCHAR2
38588 )
38589 IS
38590 
38591 l_component_type              VARCHAR2(80);
38592 l_component_code              VARCHAR2(30);
38593 l_component_type_code         VARCHAR2(1);
38594 l_component_appl_id           INTEGER;
38595 l_amb_context_code            VARCHAR2(30);
38596 l_entity_code                 VARCHAR2(30);
38597 l_event_class_code            VARCHAR2(30);
38598 l_ae_header_id                NUMBER;
38599 l_event_type_code             VARCHAR2(30);
38600 l_line_definition_code        VARCHAR2(30);
38601 l_line_definition_owner_code  VARCHAR2(1);
38602 --
38603 -- adr variables
38604 l_segment                     VARCHAR2(30);
38605 l_ccid                        NUMBER;
38606 l_adr_transaction_coa_id      NUMBER;
38607 l_adr_accounting_coa_id       NUMBER;
38608 l_adr_flexfield_segment_code  VARCHAR2(30);
38609 l_adr_flex_value_set_id       NUMBER;
38610 l_adr_value_type_code         VARCHAR2(30);
38611 l_adr_value_combination_id    NUMBER;
38612 l_adr_value_segment_code      VARCHAR2(30);
38613 
38614 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38615 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38616 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38617 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38618 
38619 -- 4262811 Variables ------------------------------------------------------------------------------------------
38620 l_entered_amt_idx             NUMBER;
38621 l_accted_amt_idx              NUMBER;
38622 l_acc_rev_flag                VARCHAR2(1);
38623 l_accrual_line_num            NUMBER;
38624 l_tmp_amt                     NUMBER;
38625 l_acc_rev_natural_side_code   VARCHAR2(1);
38626 
38627 l_num_entries                 NUMBER;
38628 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38629 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38630 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38631 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38632 l_recog_line_1                NUMBER;
38633 l_recog_line_2                NUMBER;
38634 
38635 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38636 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38637 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38638 
38639 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38640 
38641 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38642 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38643 
38644 ---------------------------------------------------------------------------------------------------------------
38645 
38646 
38647 --
38648 -- bulk performance
38649 --
38650 l_balance_type_code           VARCHAR2(1);
38651 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38652 l_log_module                  VARCHAR2(240);
38653 
38654 --
38655 -- Upgrade strategy
38656 --
38657 l_actual_upg_option           VARCHAR2(1);
38658 l_enc_upg_option           VARCHAR2(1);
38659 
38660 --
38661 BEGIN
38662 --
38663 IF g_log_enabled THEN
38664       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
38665 END IF;
38666 --
38667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38668 
38669       trace
38670          (p_msg      => 'BEGIN of AcctLineType_69'
38671          ,p_level    => C_LEVEL_PROCEDURE
38672          ,p_module   => l_log_module);
38673 
38674 END IF;
38675 --
38676 l_component_type             := 'AMB_JLT';
38677 l_component_code             := 'RESERVE_PROJ_ENC';
38678 l_component_type_code        := 'S';
38679 l_component_appl_id          :=  201;
38680 l_amb_context_code           := 'DEFAULT';
38681 l_entity_code                := 'PURCHASE_ORDER';
38682 l_event_class_code           := 'PO_BURDEN';
38683 l_event_type_code            := 'PO_BURDEN_ALL';
38684 l_line_definition_owner_code := 'S';
38685 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
38686 --
38687 l_balance_type_code          := 'E';
38688 l_segment                     := NULL;
38689 l_ccid                        := NULL;
38690 l_adr_transaction_coa_id      := NULL;
38691 l_adr_accounting_coa_id       := NULL;
38692 l_adr_flexfield_segment_code  := NULL;
38693 l_adr_flex_value_set_id       := NULL;
38694 l_adr_value_type_code         := NULL;
38695 l_adr_value_combination_id    := NULL;
38696 l_adr_value_segment_code      := NULL;
38697 
38698 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
38699 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
38700 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38701 l_budgetary_control_flag     := 'Y';
38702 
38703 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38704 l_bflow_applied_to_amt       := NULL; -- 5132302
38705 l_entered_amt_idx            := NULL;          -- 4262811
38706 l_accted_amt_idx             := NULL;          -- 4262811
38707 l_acc_rev_flag               := NULL;          -- 4262811
38708 l_accrual_line_num           := NULL;          -- 4262811
38709 l_tmp_amt                    := NULL;          -- 4262811
38710 --
38711  
38712 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38713     l_balance_type_code <> 'B' THEN
38714 IF ((NVL(
38715 xla_ae_sources_pkg.GetSystemSourceChar(
38716    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38717  , p_source_type_code      => 'Y'
38718  , p_source_application_id =>  602
38719 ),'
38720 ') =  'PO_BURDEN_UNRESERVED' OR 
38721 NVL(
38722 xla_ae_sources_pkg.GetSystemSourceChar(
38723    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38724  , p_source_type_code      => 'Y'
38725  , p_source_application_id =>  602
38726 ),'
38727 ') =  'PO_BURDEN_REJECTED' OR 
38728 NVL(
38729 xla_ae_sources_pkg.GetSystemSourceChar(
38730    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38731  , p_source_type_code      => 'Y'
38732  , p_source_application_id =>  602
38733 ),'
38734 ') =  'PO_BURDEN_FINAL_CLOSED' OR 
38735 NVL(
38736 xla_ae_sources_pkg.GetSystemSourceChar(
38737    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38738  , p_source_type_code      => 'Y'
38739  , p_source_application_id =>  602
38740 ),'
38741 ') =  'PO_BURDEN_INV_CANCELLED') AND 
38742 (NVL(p_source_13,'
38743 ') =  'M')
38744 ) OR ((NVL(
38745 xla_ae_sources_pkg.GetSystemSourceChar(
38746    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38747  , p_source_type_code      => 'Y'
38748  , p_source_application_id =>  602
38749 ),'
38750 ') =  'PO_BURDEN_CANCELLED' OR 
38751 NVL(
38752 xla_ae_sources_pkg.GetSystemSourceChar(
38753    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38754  , p_source_type_code      => 'Y'
38755  , p_source_application_id =>  602
38756 ),'
38757 ') =  'PO_BURDEN_CR_MEMO_CANCELLED' OR 
38758 NVL(
38759 xla_ae_sources_pkg.GetSystemSourceChar(
38760    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38761  , p_source_type_code      => 'Y'
38762  , p_source_application_id =>  602
38763 ),'
38764 ') =  'PO_BURDEN_RESERVED') AND 
38765 (NVL(p_source_13,'
38766 ') =  'B_REQ')
38767 ) THEN 
38768 
38769    --
38770    XLA_AE_LINES_PKG.SetNewLine;
38771 
38772    p_balance_type_code          := l_balance_type_code;
38773    -- set the flag so later we will know whether the gain loss line needs to be created
38774    
38775    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38776      p_actual_flag :='A';
38777    END IF;
38778 
38779    --
38780    -- bulk performance
38781    --
38782    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38783                                       p_header_num   => 0); -- 4262811
38784    --
38785    -- set accounting line options
38786    --
38787    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38788            p_natural_side_code          => 'D'
38789          , p_gain_or_loss_flag          => 'N'
38790          , p_gl_transfer_mode_code      => 'S'
38791          , p_acct_entry_type_code       => 'E'
38792          , p_switch_side_flag           => 'N'
38793          , p_merge_duplicate_code       => 'N'
38794          );
38795    --
38796    l_acc_rev_natural_side_code := 'C';  -- 4262811
38797    -- 
38798    --
38799    -- set accounting line type info
38800    --
38801    xla_ae_lines_pkg.SetAcctLineType
38802       (p_component_type             => l_component_type
38803       ,p_event_type_code            => l_event_type_code
38804       ,p_line_definition_owner_code => l_line_definition_owner_code
38805       ,p_line_definition_code       => l_line_definition_code
38806       ,p_accounting_line_code       => l_component_code
38807       ,p_accounting_line_type_code  => l_component_type_code
38808       ,p_accounting_line_appl_id    => l_component_appl_id
38809       ,p_amb_context_code           => l_amb_context_code
38810       ,p_entity_code                => l_entity_code
38811       ,p_event_class_code           => l_event_class_code);
38812    --
38813    -- set accounting class
38814    --
38815    xla_ae_lines_pkg.SetAcctClass(
38816            p_accounting_class_code  => 'PA_BUDGET_ENC'
38817          , p_ae_header_id           => l_ae_header_id
38818          );
38819 
38820    --
38821    -- set rounding class
38822    --
38823    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38824                       'PA_BUDGET_ENC';
38825 
38826    --
38827    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38828    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38829    --
38830    -- bulk performance
38831    --
38832    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38833 
38834    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38835       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38836 
38837    -- 4955764
38838    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38839       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38840 
38841    -- 4458381 Public Sector Enh
38842    
38843    --
38844    -- set accounting attributes for the line type
38845    --
38846    l_entered_amt_idx := 27;
38847    l_accted_amt_idx  := 29;
38848    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38849    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
38850    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
38851    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
38852    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
38853    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
38854    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
38855    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
38856    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
38857    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
38858    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
38859    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
38860    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
38861    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
38862    l_rec_acct_attrs.array_num_value(7)  := p_source_68;
38863    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
38864    l_rec_acct_attrs.array_char_value(8)  := p_source_69;
38865    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
38866    l_rec_acct_attrs.array_char_value(9)  := p_source_70;
38867    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
38868    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_71);
38869    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
38870    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_72);
38871    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
38872    l_rec_acct_attrs.array_char_value(12)  := p_source_73;
38873    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
38874    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
38875    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
38876    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
38877    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
38878    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
38879    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
38880    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
38881    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
38882    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
38883    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
38884    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
38885    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
38886    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
38887    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
38888    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
38889    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
38890    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
38891    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
38892    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
38893    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
38894    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
38895    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
38896    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
38897    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
38898    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
38899    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
38900    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
38901    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
38902    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
38903    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
38904    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
38905    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
38906    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
38907    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
38908    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
38909    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
38910    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
38911    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
38912    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
38913    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
38914    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
38915    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
38916    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
38917 
38918    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38919    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38920 
38921    ---------------------------------------------------------------------------------------------------------------
38922    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38923    ---------------------------------------------------------------------------------------------------------------
38924    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38925 
38926    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38927    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38928 
38929    IF xla_accounting_cache_pkg.GetValueChar
38930          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38931          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38932    AND l_bflow_method_code = 'PRIOR_ENTRY'
38933 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38934    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38935          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38936        )
38937    THEN
38938          xla_ae_lines_pkg.BflowUpgEntry
38939            (p_business_method_code    => l_bflow_method_code
38940            ,p_business_class_code     => l_bflow_class_code
38941            ,p_balance_type            => l_balance_type_code);
38942    ELSE
38943       NULL;
38944 XLA_AE_LINES_PKG.business_flow_validation(
38945                                 p_business_method_code     => l_bflow_method_code
38946                                ,p_business_class_code      => l_bflow_class_code
38947                                ,p_inherit_description_flag => l_inherit_desc_flag);
38948    END IF;
38949 
38950    --
38951    -- call analytical criteria
38952    --
38953    -- Inherited Analytical Criteria for business flow method of Prior Entry.
38954    --
38955    -- call description
38956    --
38957    
38958 xla_ae_lines_pkg.SetLineDescription(
38959    p_ae_header_id => l_ae_header_id
38960   ,p_description  => Description_2 (
38961      p_application_id         => p_application_id
38962    , p_ae_header_id           => l_ae_header_id 
38963 , p_source_3 => p_source_3
38964 , p_source_4 => p_source_4
38965 , p_source_5 => p_source_5
38966 , p_source_6 => p_source_6
38967    )
38968 );
38969 
38970 
38971    --
38972    -- call ADRs
38973    -- Bug 4922099
38974    --
38975    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38976         (NVL(l_actual_upg_option, 'N') = 'O') OR
38977         (NVL(l_enc_upg_option, 'N') = 'O')
38978       )
38979    THEN
38980    NULL;
38981    --
38982    --
38983    
38984    --
38985    --
38986    END IF;
38987    --
38988    -- Bug 4922099
38989    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38990           (NVL(l_enc_upg_option, 'N') = 'O')
38991         ) AND
38992         (l_bflow_method_code = 'PRIOR_ENTRY')
38993       )
38994    THEN
38995       IF
38996       --
38997       1 = 1
38998       --
38999       THEN
39000       xla_accounting_err_pkg.build_message
39001                                     (p_appli_s_name            => 'XLA'
39002                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39003                                     ,p_token_1                 => 'LINE_NUMBER'
39004                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39005                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39006                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39007                                                                              l_component_type
39008                                                                             ,l_component_code
39009                                                                             ,l_component_type_code
39010                                                                             ,l_component_appl_id
39011                                                                             ,l_amb_context_code
39012                                                                             ,l_entity_code
39013                                                                             ,l_event_class_code
39014                                                                            )
39015                                     ,p_token_3                 => 'OWNER'
39016                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39017                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39018                                                                           ,p_lookup_code    => l_component_type_code
39019                                                                          )
39020                                     ,p_token_4                 => 'PRODUCT_NAME'
39021                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39022                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39023                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39024                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39025                                     ,p_ae_header_id            =>  NULL
39026                                        );
39027 
39028         IF (C_LEVEL_ERROR>= g_log_level) THEN
39029                  trace
39030                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39031                       ,p_level    => C_LEVEL_ERROR
39032                       ,p_module   => l_log_module);
39033         END IF;
39034       END IF;
39035    END IF;
39036    --
39037    --
39038    ------------------------------------------------------------------------------------------------
39039    -- 4219869 Business Flow
39040    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39041    -- Prior Entry.  Currently, the following code is always generated.
39042    ------------------------------------------------------------------------------------------------
39043    -- No ValidateCurrentLine for business flow method of Prior Entry
39044 
39045    ------------------------------------------------------------------------------------
39046    -- 4219869 Business Flow
39047    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39048    ------------------------------------------------------------------------------------
39049    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39050 
39051    ----------------------------------------------------------------------------------
39052    -- 4219869 Business Flow
39053    -- Update journal entry status -- Need to generate this within IF <condition>
39054    ----------------------------------------------------------------------------------
39055    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39056          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39057          ,p_balance_type_code => l_balance_type_code
39058          );
39059 
39060    -------------------------------------------------------------------------------------------
39061    -- 4262811 - Generate the Accrual Reversal lines
39062    -------------------------------------------------------------------------------------------
39063    BEGIN
39064       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39065                               (g_array_event(p_event_id).array_value_num('header_index'));
39066       IF l_acc_rev_flag IS NULL THEN
39067          l_acc_rev_flag := 'N';
39068       END IF;
39069    EXCEPTION
39070       WHEN OTHERS THEN
39071          l_acc_rev_flag := 'N';
39072    END;
39073    --
39074    IF (l_acc_rev_flag = 'Y') THEN
39075 
39076        -- 4645092  ------------------------------------------------------------------------------
39077        -- To allow MPA report to determine if it should generate report process
39078        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39079        ------------------------------------------------------------------------------------------
39080 
39081        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39082        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39083 
39084        --
39085        -- Update the line information that should be overwritten
39086        --
39087        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39088                                          p_header_num   => 1);
39089        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39090 
39091        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39092 
39093        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39094           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39095        END IF;
39096 
39097       --
39098       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39099       --
39100       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39101           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39102       ELSE
39103           ---------------------------------------------------------------------------------------------------
39104           -- 4262811a Switch Sign
39105           ---------------------------------------------------------------------------------------------------
39106           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39107           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39108                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39109           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39110                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39111           -- 5132302
39112           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39113                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39114 
39115       END IF;
39116 
39117       -- 4955764
39118       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39119       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39120 
39121 
39122       XLA_AE_LINES_PKG.ValidateCurrentLine;
39123       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39124 
39125       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39126                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39127                ,p_balance_type_code => l_balance_type_code);
39128 
39129    END IF;
39130 
39131    -----------------------------------------------------------------------------------------
39132    -- 4262811 Multiperiod Accounting
39133    -----------------------------------------------------------------------------------------
39134      -- No MPA option is assigned.
39135 
39136 
39137 END IF;
39138 END IF;
39139 --
39140 
39141 --
39142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39143    trace
39144       (p_msg      => 'END of AcctLineType_69'
39145       ,p_level    => C_LEVEL_PROCEDURE
39146       ,p_module   => l_log_module);
39147 END IF;
39148 --
39149 EXCEPTION
39150   WHEN xla_exceptions_pkg.application_exception THEN
39151       RAISE;
39152   WHEN OTHERS THEN
39153        xla_exceptions_pkg.raise_message
39154            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_69');
39155 END AcctLineType_69;
39156 --
39157 
39158 ---------------------------------------
39159 --
39160 -- PRIVATE FUNCTION
39161 --         AcctLineType_70
39162 --
39163 ---------------------------------------
39164 PROCEDURE AcctLineType_70 (
39165   p_application_id        IN NUMBER
39166  ,p_event_id              IN NUMBER
39167  ,p_calculate_acctd_flag  IN VARCHAR2
39168  ,p_calculate_g_l_flag    IN VARCHAR2
39169  ,p_actual_flag           IN OUT VARCHAR2
39170  ,p_balance_type_code     OUT VARCHAR2
39171  ,p_gain_or_loss_ref      OUT VARCHAR2
39172  
39173 --Project Name
39174  , p_source_3            IN VARCHAR2
39175 --Task Name
39176  , p_source_4            IN VARCHAR2
39177 --Project Expenditure Organization Identifier
39178  , p_source_5            IN NUMBER
39179 --Expenditure Type
39180  , p_source_6            IN VARCHAR2
39181 --Main Or Backing Code
39182  , p_source_13            IN VARCHAR2
39183 --Accounting Reversal Flag
39184  , p_source_16            IN VARCHAR2
39185 --Allocated to Application Identifier
39186  , p_source_17            IN NUMBER
39187 --Allocated to Distribution Type
39188  , p_source_18            IN VARCHAR2
39189 --Allocated to Entity Code
39190  , p_source_19            IN VARCHAR2
39191 --Allocated to First Distribution Identifier
39192  , p_source_20            IN NUMBER
39193 --Allocated to First System Transaction Identifier
39194  , p_source_21            IN NUMBER
39195 --Allocated to Second Distribution Identifier
39196  , p_source_22            IN VARCHAR2
39197 --Line Type Name
39198  , p_source_30            IN VARCHAR2
39199 --Encumbrance Upgrade Credit Accounting Class
39200  , p_source_31            IN VARCHAR2
39201 --Encumbrance Upgrade Credit Account
39202  , p_source_32            IN NUMBER
39203 --Entered Amount
39204  , p_source_33            IN NUMBER
39205 --Currency Code
39206  , p_source_34            IN VARCHAR2
39207 --Accounted Amount
39208  , p_source_35            IN NUMBER
39209 --Encumbrance Upgrade Debit Accounting Class
39210  , p_source_36            IN VARCHAR2
39211 --Encumbrance Upgrade Debit Account
39212  , p_source_37            IN NUMBER
39213 --Use Encumbrances Upgrade Attributes Flag
39214  , p_source_38            IN VARCHAR2
39215 --Encumbrance Upgrade Credit Encumbrance Type
39216  , p_source_39            IN NUMBER
39217 --Encumbrance Upgrade Debit Encumbrance Type
39218  , p_source_40            IN NUMBER
39219 --Requisition Distribution Identifier
39220  , p_source_47            IN NUMBER
39221 --Project Encumbrance Applied to Application Identifier
39222  , p_source_68            IN NUMBER
39223 --Project Encumbrance Applied to Distribution Type
39224  , p_source_69            IN VARCHAR2
39225 --Project Encumbrance Applied to Entity Code
39226  , p_source_70            IN VARCHAR2
39227 --Project Encumbrance Applied to First Distribution Identifier
39228  , p_source_71            IN NUMBER
39229 --Project Encumbrance Applied to First System Transaction Identifier
39230  , p_source_72            IN NUMBER
39231 --Project Encumbrance Applied to Second Distribution Identifier
39232  , p_source_73            IN VARCHAR2
39233 --Document Distribution Type
39234  , p_source_74            IN VARCHAR2
39235 )
39236 IS
39237 
39238 l_component_type              VARCHAR2(80);
39239 l_component_code              VARCHAR2(30);
39240 l_component_type_code         VARCHAR2(1);
39241 l_component_appl_id           INTEGER;
39242 l_amb_context_code            VARCHAR2(30);
39243 l_entity_code                 VARCHAR2(30);
39244 l_event_class_code            VARCHAR2(30);
39245 l_ae_header_id                NUMBER;
39246 l_event_type_code             VARCHAR2(30);
39247 l_line_definition_code        VARCHAR2(30);
39248 l_line_definition_owner_code  VARCHAR2(1);
39249 --
39250 -- adr variables
39251 l_segment                     VARCHAR2(30);
39252 l_ccid                        NUMBER;
39253 l_adr_transaction_coa_id      NUMBER;
39254 l_adr_accounting_coa_id       NUMBER;
39255 l_adr_flexfield_segment_code  VARCHAR2(30);
39256 l_adr_flex_value_set_id       NUMBER;
39257 l_adr_value_type_code         VARCHAR2(30);
39258 l_adr_value_combination_id    NUMBER;
39259 l_adr_value_segment_code      VARCHAR2(30);
39260 
39261 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39262 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39263 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39264 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39265 
39266 -- 4262811 Variables ------------------------------------------------------------------------------------------
39267 l_entered_amt_idx             NUMBER;
39268 l_accted_amt_idx              NUMBER;
39269 l_acc_rev_flag                VARCHAR2(1);
39270 l_accrual_line_num            NUMBER;
39271 l_tmp_amt                     NUMBER;
39272 l_acc_rev_natural_side_code   VARCHAR2(1);
39273 
39274 l_num_entries                 NUMBER;
39275 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39276 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39277 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39278 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39279 l_recog_line_1                NUMBER;
39280 l_recog_line_2                NUMBER;
39281 
39282 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39283 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39284 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39285 
39286 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39287 
39288 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39289 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39290 
39291 ---------------------------------------------------------------------------------------------------------------
39292 
39293 
39294 --
39295 -- bulk performance
39296 --
39297 l_balance_type_code           VARCHAR2(1);
39298 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39299 l_log_module                  VARCHAR2(240);
39300 
39301 --
39302 -- Upgrade strategy
39303 --
39304 l_actual_upg_option           VARCHAR2(1);
39305 l_enc_upg_option           VARCHAR2(1);
39306 
39307 --
39308 BEGIN
39309 --
39310 IF g_log_enabled THEN
39311       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
39312 END IF;
39313 --
39314 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39315 
39316       trace
39317          (p_msg      => 'BEGIN of AcctLineType_70'
39318          ,p_level    => C_LEVEL_PROCEDURE
39319          ,p_module   => l_log_module);
39320 
39321 END IF;
39322 --
39323 l_component_type             := 'AMB_JLT';
39324 l_component_code             := 'RESERVE_PROJ_ENC';
39325 l_component_type_code        := 'S';
39326 l_component_appl_id          :=  201;
39327 l_amb_context_code           := 'DEFAULT';
39328 l_entity_code                := 'REQUISITION';
39329 l_event_class_code           := 'REQUISITION_BURDEN';
39330 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
39331 l_line_definition_owner_code := 'S';
39332 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
39333 --
39334 l_balance_type_code          := 'E';
39335 l_segment                     := NULL;
39336 l_ccid                        := NULL;
39337 l_adr_transaction_coa_id      := NULL;
39338 l_adr_accounting_coa_id       := NULL;
39339 l_adr_flexfield_segment_code  := NULL;
39340 l_adr_flex_value_set_id       := NULL;
39341 l_adr_value_type_code         := NULL;
39342 l_adr_value_combination_id    := NULL;
39343 l_adr_value_segment_code      := NULL;
39344 
39345 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
39346 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
39347 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39348 l_budgetary_control_flag     := 'Y';
39349 
39350 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39351 l_bflow_applied_to_amt       := NULL; -- 5132302
39352 l_entered_amt_idx            := NULL;          -- 4262811
39353 l_accted_amt_idx             := NULL;          -- 4262811
39354 l_acc_rev_flag               := NULL;          -- 4262811
39355 l_accrual_line_num           := NULL;          -- 4262811
39356 l_tmp_amt                    := NULL;          -- 4262811
39357 --
39358  
39359 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39360     l_balance_type_code <> 'B' THEN
39361 IF ((NVL(
39362 xla_ae_sources_pkg.GetSystemSourceChar(
39363    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39364  , p_source_type_code      => 'Y'
39365  , p_source_application_id =>  602
39366 ),'
39367 ') =  'REQ_BURDEN_ADJUSTED' AND 
39368 NVL(p_source_74,'
39369 ') <>  'REQUISITION_ADJUSTED_NEW') OR 
39370 NVL(
39371 xla_ae_sources_pkg.GetSystemSourceChar(
39372    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39373  , p_source_type_code      => 'Y'
39374  , p_source_application_id =>  602
39375 ),'
39376 ') =  'REQ_BURDEN_UNRESERVED' OR 
39377 NVL(
39378 xla_ae_sources_pkg.GetSystemSourceChar(
39379    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39380  , p_source_type_code      => 'Y'
39381  , p_source_application_id =>  602
39382 ),'
39383 ') =  'REQ_BURDEN_REJECTED' OR 
39384 NVL(
39385 xla_ae_sources_pkg.GetSystemSourceChar(
39386    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39387  , p_source_type_code      => 'Y'
39388  , p_source_application_id =>  602
39389 ),'
39390 ') =  'REQ_BURDEN_RETURNED' OR 
39391 NVL(
39392 xla_ae_sources_pkg.GetSystemSourceChar(
39393    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39394  , p_source_type_code      => 'Y'
39395  , p_source_application_id =>  602
39396 ),'
39397 ') =  'REQ_BURDEN_FINAL_CLOSED') AND 
39398 NVL(p_source_13,'
39399 ') =  'M'
39400  THEN 
39401 
39402    --
39403    XLA_AE_LINES_PKG.SetNewLine;
39404 
39405    p_balance_type_code          := l_balance_type_code;
39406    -- set the flag so later we will know whether the gain loss line needs to be created
39407    
39408    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39409      p_actual_flag :='A';
39410    END IF;
39411 
39412    --
39413    -- bulk performance
39414    --
39415    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39416                                       p_header_num   => 0); -- 4262811
39417    --
39418    -- set accounting line options
39419    --
39420    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39421            p_natural_side_code          => 'D'
39422          , p_gain_or_loss_flag          => 'N'
39423          , p_gl_transfer_mode_code      => 'S'
39424          , p_acct_entry_type_code       => 'E'
39425          , p_switch_side_flag           => 'N'
39426          , p_merge_duplicate_code       => 'N'
39427          );
39428    --
39429    l_acc_rev_natural_side_code := 'C';  -- 4262811
39430    -- 
39431    --
39432    -- set accounting line type info
39433    --
39434    xla_ae_lines_pkg.SetAcctLineType
39435       (p_component_type             => l_component_type
39436       ,p_event_type_code            => l_event_type_code
39437       ,p_line_definition_owner_code => l_line_definition_owner_code
39438       ,p_line_definition_code       => l_line_definition_code
39439       ,p_accounting_line_code       => l_component_code
39440       ,p_accounting_line_type_code  => l_component_type_code
39441       ,p_accounting_line_appl_id    => l_component_appl_id
39442       ,p_amb_context_code           => l_amb_context_code
39443       ,p_entity_code                => l_entity_code
39444       ,p_event_class_code           => l_event_class_code);
39445    --
39446    -- set accounting class
39447    --
39448    xla_ae_lines_pkg.SetAcctClass(
39449            p_accounting_class_code  => 'PA_BUDGET_ENC'
39450          , p_ae_header_id           => l_ae_header_id
39451          );
39452 
39453    --
39454    -- set rounding class
39455    --
39456    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39457                       'PA_BUDGET_ENC';
39458 
39459    --
39460    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39461    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39462    --
39463    -- bulk performance
39464    --
39465    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39466 
39467    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39468       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39469 
39470    -- 4955764
39471    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39473 
39474    -- 4458381 Public Sector Enh
39475    
39476    --
39477    -- set accounting attributes for the line type
39478    --
39479    l_entered_amt_idx := 28;
39480    l_accted_amt_idx  := 30;
39481    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39482    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
39483    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
39484    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
39485    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
39486    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
39487    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
39488    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
39489    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
39490    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
39491    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
39492    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
39493    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
39494    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
39495    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
39496    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
39497    l_rec_acct_attrs.array_num_value(8)  := p_source_68;
39498    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
39499    l_rec_acct_attrs.array_char_value(9)  := p_source_69;
39500    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
39501    l_rec_acct_attrs.array_char_value(10)  := p_source_70;
39502    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
39503    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_71);
39504    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
39505    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_72);
39506    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
39507    l_rec_acct_attrs.array_char_value(13)  := p_source_73;
39508    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
39509    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
39510    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
39511    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
39512    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
39513    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
39514    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
39515    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
39516    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
39517    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
39518    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
39519    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
39520    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
39521    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
39522    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
39523    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
39524    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
39525    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
39526    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
39527    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
39528    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
39529    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
39530    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
39531    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
39532    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
39533    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
39534    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
39535    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
39536    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
39537    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
39538    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
39539    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
39540    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
39541    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
39542    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
39543    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
39544    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
39545    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
39546    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
39547    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
39548    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
39549    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
39550    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
39551    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
39552 
39553    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39554    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39555 
39556    ---------------------------------------------------------------------------------------------------------------
39557    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39558    ---------------------------------------------------------------------------------------------------------------
39559    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39560 
39561    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39562    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39563 
39564    IF xla_accounting_cache_pkg.GetValueChar
39565          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39566          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39567    AND l_bflow_method_code = 'PRIOR_ENTRY'
39568 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39569    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39570          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39571        )
39572    THEN
39573          xla_ae_lines_pkg.BflowUpgEntry
39574            (p_business_method_code    => l_bflow_method_code
39575            ,p_business_class_code     => l_bflow_class_code
39576            ,p_balance_type            => l_balance_type_code);
39577    ELSE
39578       NULL;
39579 XLA_AE_LINES_PKG.business_flow_validation(
39580                                 p_business_method_code     => l_bflow_method_code
39581                                ,p_business_class_code      => l_bflow_class_code
39582                                ,p_inherit_description_flag => l_inherit_desc_flag);
39583    END IF;
39584 
39585    --
39586    -- call analytical criteria
39587    --
39588    -- Inherited Analytical Criteria for business flow method of Prior Entry.
39589    --
39590    -- call description
39591    --
39592    
39593 xla_ae_lines_pkg.SetLineDescription(
39594    p_ae_header_id => l_ae_header_id
39595   ,p_description  => Description_2 (
39596      p_application_id         => p_application_id
39597    , p_ae_header_id           => l_ae_header_id 
39598 , p_source_3 => p_source_3
39599 , p_source_4 => p_source_4
39600 , p_source_5 => p_source_5
39601 , p_source_6 => p_source_6
39602    )
39603 );
39604 
39605 
39606    --
39607    -- call ADRs
39608    -- Bug 4922099
39609    --
39610    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39611         (NVL(l_actual_upg_option, 'N') = 'O') OR
39612         (NVL(l_enc_upg_option, 'N') = 'O')
39613       )
39614    THEN
39615    NULL;
39616    --
39617    --
39618    
39619    --
39620    --
39621    END IF;
39622    --
39623    -- Bug 4922099
39624    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39625           (NVL(l_enc_upg_option, 'N') = 'O')
39626         ) AND
39627         (l_bflow_method_code = 'PRIOR_ENTRY')
39628       )
39629    THEN
39630       IF
39631       --
39632       1 = 1
39633       --
39634       THEN
39635       xla_accounting_err_pkg.build_message
39636                                     (p_appli_s_name            => 'XLA'
39637                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39638                                     ,p_token_1                 => 'LINE_NUMBER'
39639                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39640                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39641                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39642                                                                              l_component_type
39643                                                                             ,l_component_code
39644                                                                             ,l_component_type_code
39645                                                                             ,l_component_appl_id
39646                                                                             ,l_amb_context_code
39647                                                                             ,l_entity_code
39648                                                                             ,l_event_class_code
39649                                                                            )
39650                                     ,p_token_3                 => 'OWNER'
39651                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39652                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39653                                                                           ,p_lookup_code    => l_component_type_code
39654                                                                          )
39655                                     ,p_token_4                 => 'PRODUCT_NAME'
39656                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39657                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39658                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39659                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39660                                     ,p_ae_header_id            =>  NULL
39661                                        );
39662 
39663         IF (C_LEVEL_ERROR>= g_log_level) THEN
39664                  trace
39665                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39666                       ,p_level    => C_LEVEL_ERROR
39667                       ,p_module   => l_log_module);
39668         END IF;
39669       END IF;
39670    END IF;
39671    --
39672    --
39673    ------------------------------------------------------------------------------------------------
39674    -- 4219869 Business Flow
39675    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39676    -- Prior Entry.  Currently, the following code is always generated.
39677    ------------------------------------------------------------------------------------------------
39678    -- No ValidateCurrentLine for business flow method of Prior Entry
39679 
39680    ------------------------------------------------------------------------------------
39681    -- 4219869 Business Flow
39682    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39683    ------------------------------------------------------------------------------------
39684    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39685 
39686    ----------------------------------------------------------------------------------
39687    -- 4219869 Business Flow
39688    -- Update journal entry status -- Need to generate this within IF <condition>
39689    ----------------------------------------------------------------------------------
39690    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39691          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39692          ,p_balance_type_code => l_balance_type_code
39693          );
39694 
39695    -------------------------------------------------------------------------------------------
39696    -- 4262811 - Generate the Accrual Reversal lines
39697    -------------------------------------------------------------------------------------------
39698    BEGIN
39699       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39700                               (g_array_event(p_event_id).array_value_num('header_index'));
39701       IF l_acc_rev_flag IS NULL THEN
39702          l_acc_rev_flag := 'N';
39703       END IF;
39704    EXCEPTION
39705       WHEN OTHERS THEN
39706          l_acc_rev_flag := 'N';
39707    END;
39708    --
39709    IF (l_acc_rev_flag = 'Y') THEN
39710 
39711        -- 4645092  ------------------------------------------------------------------------------
39712        -- To allow MPA report to determine if it should generate report process
39713        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39714        ------------------------------------------------------------------------------------------
39715 
39716        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39717        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39718 
39719        --
39720        -- Update the line information that should be overwritten
39721        --
39722        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39723                                          p_header_num   => 1);
39724        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39725 
39726        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39727 
39728        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39729           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39730        END IF;
39731 
39732       --
39733       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39734       --
39735       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39736           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39737       ELSE
39738           ---------------------------------------------------------------------------------------------------
39739           -- 4262811a Switch Sign
39740           ---------------------------------------------------------------------------------------------------
39741           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39742           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39743                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39744           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39745                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39746           -- 5132302
39747           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39748                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39749 
39750       END IF;
39751 
39752       -- 4955764
39753       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39754       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39755 
39756 
39757       XLA_AE_LINES_PKG.ValidateCurrentLine;
39758       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39759 
39760       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39761                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39762                ,p_balance_type_code => l_balance_type_code);
39763 
39764    END IF;
39765 
39766    -----------------------------------------------------------------------------------------
39767    -- 4262811 Multiperiod Accounting
39768    -----------------------------------------------------------------------------------------
39769      -- No MPA option is assigned.
39770 
39771 
39772 END IF;
39773 END IF;
39774 --
39775 
39776 --
39777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39778    trace
39779       (p_msg      => 'END of AcctLineType_70'
39780       ,p_level    => C_LEVEL_PROCEDURE
39781       ,p_module   => l_log_module);
39782 END IF;
39783 --
39784 EXCEPTION
39785   WHEN xla_exceptions_pkg.application_exception THEN
39786       RAISE;
39787   WHEN OTHERS THEN
39788        xla_exceptions_pkg.raise_message
39789            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_70');
39790 END AcctLineType_70;
39791 --
39792 
39793 ---------------------------------------
39794 --
39795 -- PRIVATE FUNCTION
39796 --         AcctLineType_71
39797 --
39798 ---------------------------------------
39799 PROCEDURE AcctLineType_71 (
39800   p_application_id        IN NUMBER
39801  ,p_event_id              IN NUMBER
39802  ,p_calculate_acctd_flag  IN VARCHAR2
39803  ,p_calculate_g_l_flag    IN VARCHAR2
39804  ,p_actual_flag           IN OUT VARCHAR2
39805  ,p_balance_type_code     OUT VARCHAR2
39806  ,p_gain_or_loss_ref      OUT VARCHAR2
39807  
39808 --Journal entry Line Description
39809  , p_source_7            IN VARCHAR2
39810 --Budget Account
39811  , p_source_11            IN NUMBER
39812 --Main Or Backing Code
39813  , p_source_13            IN VARCHAR2
39814 --Accounting Reversal Flag
39815  , p_source_16            IN VARCHAR2
39816 --PO Distribution Identifier
39817  , p_source_29            IN NUMBER
39818 --Entered Amount
39819  , p_source_33            IN NUMBER
39820 --Currency Code
39821  , p_source_34            IN VARCHAR2
39822 --Accounted Amount
39823  , p_source_35            IN NUMBER
39824 --Applied To Application Identifier
39825  , p_source_53            IN NUMBER
39826 --Applied To Distribution Link Type
39827  , p_source_54            IN VARCHAR2
39828 --Applied To Entity Code
39829  , p_source_55            IN VARCHAR2
39830 --Applied To Distribution Identifier 1
39831  , p_source_56            IN NUMBER
39832 --Applied To Header Identifier 1
39833  , p_source_57            IN NUMBER
39834 --Distribution Link Type
39835  , p_source_58            IN VARCHAR2
39836 --PO Encumbrance Upgrade Option
39837  , p_source_59            IN VARCHAR2
39838 --JFMIP Reference
39839  , p_source_60            IN VARCHAR2
39840 --PO Upgrade Encumbrance Type Identifier
39841  , p_source_61            IN NUMBER
39842 --Currency Conversion Date
39843  , p_source_62            IN DATE
39844 --Currency Conversion Rate
39845  , p_source_63            IN NUMBER
39846 --Currency Conversion Type
39847  , p_source_64            IN VARCHAR2
39848 --PO Release Identifier
39849  , p_source_66            IN NUMBER
39850 --Adjustment Status
39851  , p_source_75            IN VARCHAR2
39852 )
39853 IS
39854 
39855 l_component_type              VARCHAR2(80);
39856 l_component_code              VARCHAR2(30);
39857 l_component_type_code         VARCHAR2(1);
39858 l_component_appl_id           INTEGER;
39859 l_amb_context_code            VARCHAR2(30);
39860 l_entity_code                 VARCHAR2(30);
39861 l_event_class_code            VARCHAR2(30);
39862 l_ae_header_id                NUMBER;
39863 l_event_type_code             VARCHAR2(30);
39864 l_line_definition_code        VARCHAR2(30);
39865 l_line_definition_owner_code  VARCHAR2(1);
39866 --
39867 -- adr variables
39868 l_segment                     VARCHAR2(30);
39869 l_ccid                        NUMBER;
39870 l_adr_transaction_coa_id      NUMBER;
39871 l_adr_accounting_coa_id       NUMBER;
39872 l_adr_flexfield_segment_code  VARCHAR2(30);
39873 l_adr_flex_value_set_id       NUMBER;
39874 l_adr_value_type_code         VARCHAR2(30);
39875 l_adr_value_combination_id    NUMBER;
39876 l_adr_value_segment_code      VARCHAR2(30);
39877 
39878 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39879 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39880 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39881 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39882 
39883 -- 4262811 Variables ------------------------------------------------------------------------------------------
39884 l_entered_amt_idx             NUMBER;
39885 l_accted_amt_idx              NUMBER;
39886 l_acc_rev_flag                VARCHAR2(1);
39887 l_accrual_line_num            NUMBER;
39888 l_tmp_amt                     NUMBER;
39889 l_acc_rev_natural_side_code   VARCHAR2(1);
39890 
39891 l_num_entries                 NUMBER;
39892 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39893 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39894 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39895 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39896 l_recog_line_1                NUMBER;
39897 l_recog_line_2                NUMBER;
39898 
39899 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39900 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39901 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39902 
39903 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39904 
39905 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39906 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39907 
39908 ---------------------------------------------------------------------------------------------------------------
39909 
39910 
39911 --
39912 -- bulk performance
39913 --
39914 l_balance_type_code           VARCHAR2(1);
39915 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39916 l_log_module                  VARCHAR2(240);
39917 
39918 --
39919 -- Upgrade strategy
39920 --
39921 l_actual_upg_option           VARCHAR2(1);
39922 l_enc_upg_option           VARCHAR2(1);
39923 
39924 --
39925 BEGIN
39926 --
39927 IF g_log_enabled THEN
39928       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
39929 END IF;
39930 --
39931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39932 
39933       trace
39934          (p_msg      => 'BEGIN of AcctLineType_71'
39935          ,p_level    => C_LEVEL_PROCEDURE
39936          ,p_module   => l_log_module);
39937 
39938 END IF;
39939 --
39940 l_component_type             := 'AMB_JLT';
39941 l_component_code             := 'RESERVE_RELEASE_ENCUMBRANCE';
39942 l_component_type_code        := 'S';
39943 l_component_appl_id          :=  201;
39944 l_amb_context_code           := 'DEFAULT';
39945 l_entity_code                := 'RELEASE';
39946 l_event_class_code           := 'RELEASE';
39947 l_event_type_code            := 'RELEASE_ALL';
39948 l_line_definition_owner_code := 'S';
39949 l_line_definition_code       := 'RELEASE_ENC_ALL';
39950 --
39951 l_balance_type_code          := 'E';
39952 l_segment                     := NULL;
39953 l_ccid                        := NULL;
39954 l_adr_transaction_coa_id      := NULL;
39955 l_adr_accounting_coa_id       := NULL;
39956 l_adr_flexfield_segment_code  := NULL;
39957 l_adr_flex_value_set_id       := NULL;
39958 l_adr_value_type_code         := NULL;
39959 l_adr_value_combination_id    := NULL;
39960 l_adr_value_segment_code      := NULL;
39961 
39962 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39963 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
39964 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39965 l_budgetary_control_flag     := 'Y';
39966 
39967 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39968 l_bflow_applied_to_amt       := NULL; -- 5132302
39969 l_entered_amt_idx            := NULL;          -- 4262811
39970 l_accted_amt_idx             := NULL;          -- 4262811
39971 l_acc_rev_flag               := NULL;          -- 4262811
39972 l_accrual_line_num           := NULL;          -- 4262811
39973 l_tmp_amt                    := NULL;          -- 4262811
39974 --
39975  
39976 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39977     l_balance_type_code <> 'B' THEN
39978 IF (NVL(
39979 xla_ae_sources_pkg.GetSystemSourceChar(
39980    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39981  , p_source_type_code      => 'Y'
39982  , p_source_application_id =>  602
39983 ),'
39984 ') =  'RELEASE_RESERVED' OR 
39985 (NVL(
39986 xla_ae_sources_pkg.GetSystemSourceChar(
39987    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39988  , p_source_type_code      => 'Y'
39989  , p_source_application_id =>  602
39990 ),'
39991 ') =  'RELEASE_ADJUSTED' AND 
39992 NVL(p_source_75,'
39993 ') =  'NEW')
39994 ) AND NVL(p_source_13,'
39995 ') =  'M'
39996  THEN 
39997 
39998    --
39999    XLA_AE_LINES_PKG.SetNewLine;
40000 
40001    p_balance_type_code          := l_balance_type_code;
40002    -- set the flag so later we will know whether the gain loss line needs to be created
40003    
40004    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40005      p_actual_flag :='A';
40006    END IF;
40007 
40008    --
40009    -- bulk performance
40010    --
40011    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40012                                       p_header_num   => 0); -- 4262811
40013    --
40014    -- set accounting line options
40015    --
40016    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40017            p_natural_side_code          => 'D'
40018          , p_gain_or_loss_flag          => 'N'
40019          , p_gl_transfer_mode_code      => 'S'
40020          , p_acct_entry_type_code       => 'E'
40021          , p_switch_side_flag           => 'N'
40022          , p_merge_duplicate_code       => 'N'
40023          );
40024    --
40025    l_acc_rev_natural_side_code := 'C';  -- 4262811
40026    -- 
40027    --
40028    -- set accounting line type info
40029    --
40030    xla_ae_lines_pkg.SetAcctLineType
40031       (p_component_type             => l_component_type
40032       ,p_event_type_code            => l_event_type_code
40033       ,p_line_definition_owner_code => l_line_definition_owner_code
40034       ,p_line_definition_code       => l_line_definition_code
40035       ,p_accounting_line_code       => l_component_code
40036       ,p_accounting_line_type_code  => l_component_type_code
40037       ,p_accounting_line_appl_id    => l_component_appl_id
40038       ,p_amb_context_code           => l_amb_context_code
40039       ,p_entity_code                => l_entity_code
40040       ,p_event_class_code           => l_event_class_code);
40041    --
40042    -- set accounting class
40043    --
40044    xla_ae_lines_pkg.SetAcctClass(
40045            p_accounting_class_code  => 'PURCHASE_ORDER'
40046          , p_ae_header_id           => l_ae_header_id
40047          );
40048 
40049    --
40050    -- set rounding class
40051    --
40052    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40053                       'PURCHASE_ORDER';
40054 
40055    --
40056    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40057    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40058    --
40059    -- bulk performance
40060    --
40061    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40062 
40063    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40064       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40065 
40066    -- 4955764
40067    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40068       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40069 
40070    -- 4458381 Public Sector Enh
40071       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1001;
40072    --
40073    -- set accounting attributes for the line type
40074    --
40075    l_entered_amt_idx := 23;
40076    l_accted_amt_idx  := 28;
40077    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40078    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
40079    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
40080    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
40081    l_rec_acct_attrs.array_num_value(2)  := 
40082 xla_ae_sources_pkg.GetSystemSourceNum(
40083    p_source_code           => 'XLA_EVENT_APPL_ID'
40084  , p_source_type_code      => 'Y'
40085  , p_source_application_id =>  602
40086 );
40087    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
40088    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
40089    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
40090    l_rec_acct_attrs.array_char_value(4)  := 
40091 xla_ae_sources_pkg.GetSystemSourceChar(
40092    p_source_code           => 'XLA_ENTITY_CODE'
40093  , p_source_type_code      => 'Y'
40094  , p_source_application_id =>  602
40095 );
40096    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
40097    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
40098    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
40099    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
40100    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
40101    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
40102    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
40103    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
40104    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
40105    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
40106    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
40107    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
40108    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
40109    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
40110    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
40111    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
40112    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
40113    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
40114    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
40115    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
40116    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
40117    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
40118    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
40119    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
40120    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
40121    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
40122    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
40123    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
40124    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
40125    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
40126    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
40127    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
40128    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
40129    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
40130    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
40131    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
40132    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
40133    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
40134    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
40135    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
40136    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
40137    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
40138    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
40139    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
40140    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
40141    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
40142    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
40143    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
40144    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
40145    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
40146    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
40147    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
40148    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
40149    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
40150    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
40151    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_66);
40152    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
40153    l_rec_acct_attrs.array_num_value(33)  := p_source_61;
40154    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
40155    l_rec_acct_attrs.array_num_value(34)  := p_source_61;
40156 
40157    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40158    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40159 
40160    ---------------------------------------------------------------------------------------------------------------
40161    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40162    ---------------------------------------------------------------------------------------------------------------
40163    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40164 
40165    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40166    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40167 
40168    IF xla_accounting_cache_pkg.GetValueChar
40169          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40170          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40171    AND l_bflow_method_code = 'PRIOR_ENTRY'
40172 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40173    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40174          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40175        )
40176    THEN
40177          xla_ae_lines_pkg.BflowUpgEntry
40178            (p_business_method_code    => l_bflow_method_code
40179            ,p_business_class_code     => l_bflow_class_code
40180            ,p_balance_type            => l_balance_type_code);
40181    ELSE
40182       NULL;
40183 -- No business flow processing for business flow method of NONE.
40184    END IF;
40185 
40186    --
40187    -- call analytical criteria
40188    --
40189    
40190    --
40191    -- call description
40192    --
40193    
40194 xla_ae_lines_pkg.SetLineDescription(
40195    p_ae_header_id => l_ae_header_id
40196   ,p_description  => Description_3 (
40197      p_application_id         => p_application_id
40198    , p_ae_header_id           => l_ae_header_id 
40199 , p_source_7 => p_source_7
40200    )
40201 );
40202 
40203 
40204    --
40205    -- call ADRs
40206    -- Bug 4922099
40207    --
40208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40209         (NVL(l_actual_upg_option, 'N') = 'O') OR
40210         (NVL(l_enc_upg_option, 'N') = 'O')
40211       )
40212    THEN
40213    NULL;
40214    --
40215    --
40216    
40217   l_ccid := AcctDerRule_8(
40218            p_application_id           => p_application_id
40219          , p_ae_header_id             => l_ae_header_id 
40220 , p_source_11 => p_source_11
40221          , x_transaction_coa_id       => l_adr_transaction_coa_id
40222          , x_accounting_coa_id        => l_adr_accounting_coa_id
40223          , x_value_type_code          => l_adr_value_type_code
40224          , p_side                     => 'NA'
40225    );
40226 
40227    xla_ae_lines_pkg.set_ccid(
40228     p_code_combination_id          => l_ccid
40229   , p_value_type_code              => l_adr_value_type_code
40230   , p_transaction_coa_id           => l_adr_transaction_coa_id
40231   , p_accounting_coa_id            => l_adr_accounting_coa_id
40232   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
40233   , p_adr_type_code                => 'S'
40234   , p_component_type               => l_component_type
40235   , p_component_code               => l_component_code
40236   , p_component_type_code          => l_component_type_code
40237   , p_component_appl_id            => l_component_appl_id
40238   , p_amb_context_code             => l_amb_context_code
40239   , p_side                         => 'NA'
40240   );
40241 
40242 
40243    --
40244    --
40245    END IF;
40246    --
40247    -- Bug 4922099
40248    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40249           (NVL(l_enc_upg_option, 'N') = 'O')
40250         ) AND
40251         (l_bflow_method_code = 'PRIOR_ENTRY')
40252       )
40253    THEN
40254       IF
40255       --
40256       1 = 2
40257       --
40258       THEN
40259       xla_accounting_err_pkg.build_message
40260                                     (p_appli_s_name            => 'XLA'
40261                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40262                                     ,p_token_1                 => 'LINE_NUMBER'
40263                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40264                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40265                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40266                                                                              l_component_type
40267                                                                             ,l_component_code
40268                                                                             ,l_component_type_code
40269                                                                             ,l_component_appl_id
40270                                                                             ,l_amb_context_code
40271                                                                             ,l_entity_code
40272                                                                             ,l_event_class_code
40273                                                                            )
40274                                     ,p_token_3                 => 'OWNER'
40275                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40276                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40277                                                                           ,p_lookup_code    => l_component_type_code
40278                                                                          )
40279                                     ,p_token_4                 => 'PRODUCT_NAME'
40280                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40281                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40282                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40283                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40284                                     ,p_ae_header_id            =>  NULL
40285                                        );
40286 
40287         IF (C_LEVEL_ERROR>= g_log_level) THEN
40288                  trace
40289                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40290                       ,p_level    => C_LEVEL_ERROR
40291                       ,p_module   => l_log_module);
40292         END IF;
40293       END IF;
40294    END IF;
40295    --
40296    --
40297    ------------------------------------------------------------------------------------------------
40298    -- 4219869 Business Flow
40299    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40300    -- Prior Entry.  Currently, the following code is always generated.
40301    ------------------------------------------------------------------------------------------------
40302    XLA_AE_LINES_PKG.ValidateCurrentLine;
40303 
40304    ------------------------------------------------------------------------------------
40305    -- 4219869 Business Flow
40306    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40307    ------------------------------------------------------------------------------------
40308    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40309 
40310    ----------------------------------------------------------------------------------
40311    -- 4219869 Business Flow
40312    -- Update journal entry status -- Need to generate this within IF <condition>
40313    ----------------------------------------------------------------------------------
40314    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40315          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40316          ,p_balance_type_code => l_balance_type_code
40317          );
40318 
40319    -------------------------------------------------------------------------------------------
40320    -- 4262811 - Generate the Accrual Reversal lines
40321    -------------------------------------------------------------------------------------------
40322    BEGIN
40323       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40324                               (g_array_event(p_event_id).array_value_num('header_index'));
40325       IF l_acc_rev_flag IS NULL THEN
40326          l_acc_rev_flag := 'N';
40327       END IF;
40328    EXCEPTION
40329       WHEN OTHERS THEN
40330          l_acc_rev_flag := 'N';
40331    END;
40332    --
40333    IF (l_acc_rev_flag = 'Y') THEN
40334 
40335        -- 4645092  ------------------------------------------------------------------------------
40336        -- To allow MPA report to determine if it should generate report process
40337        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40338        ------------------------------------------------------------------------------------------
40339 
40340        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40341        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40342 
40343        --
40344        -- Update the line information that should be overwritten
40345        --
40346        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40347                                          p_header_num   => 1);
40348        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40349 
40350        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40351 
40352        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40353           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40354        END IF;
40355 
40356       --
40357       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40358       --
40359       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40360           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40361       ELSE
40362           ---------------------------------------------------------------------------------------------------
40363           -- 4262811a Switch Sign
40364           ---------------------------------------------------------------------------------------------------
40365           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40366           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40367                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40368           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40369                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40370           -- 5132302
40371           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40372                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40373 
40374       END IF;
40375 
40376       -- 4955764
40377       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40378       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40379 
40380 
40381       XLA_AE_LINES_PKG.ValidateCurrentLine;
40382       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40383 
40384       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40385                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40386                ,p_balance_type_code => l_balance_type_code);
40387 
40388    END IF;
40389 
40390    -----------------------------------------------------------------------------------------
40391    -- 4262811 Multiperiod Accounting
40392    -----------------------------------------------------------------------------------------
40393      -- No MPA option is assigned.
40394 
40395 
40396 END IF;
40397 END IF;
40398 --
40399 
40400 --
40401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40402    trace
40403       (p_msg      => 'END of AcctLineType_71'
40404       ,p_level    => C_LEVEL_PROCEDURE
40405       ,p_module   => l_log_module);
40406 END IF;
40407 --
40408 EXCEPTION
40409   WHEN xla_exceptions_pkg.application_exception THEN
40410       RAISE;
40411   WHEN OTHERS THEN
40412        xla_exceptions_pkg.raise_message
40413            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_71');
40414 END AcctLineType_71;
40415 --
40416 
40417 ---------------------------------------
40418 --
40419 -- PRIVATE FUNCTION
40420 --         AcctLineType_72
40421 --
40422 ---------------------------------------
40423 PROCEDURE AcctLineType_72 (
40424   p_application_id        IN NUMBER
40425  ,p_event_id              IN NUMBER
40426  ,p_calculate_acctd_flag  IN VARCHAR2
40427  ,p_calculate_g_l_flag    IN VARCHAR2
40428  ,p_actual_flag           IN OUT VARCHAR2
40429  ,p_balance_type_code     OUT VARCHAR2
40430  ,p_gain_or_loss_ref      OUT VARCHAR2
40431  
40432 --Journal entry Line Description
40433  , p_source_7            IN VARCHAR2
40434 --Budget Account
40435  , p_source_11            IN NUMBER
40436 --Main Or Backing Code
40437  , p_source_13            IN VARCHAR2
40438 --Accounting Reversal Flag
40439  , p_source_16            IN VARCHAR2
40440 --Entered Amount
40441  , p_source_33            IN NUMBER
40442 --Currency Code
40443  , p_source_34            IN VARCHAR2
40444 --Accounted Amount
40445  , p_source_35            IN NUMBER
40446 --Requisition Distribution Identifier
40447  , p_source_47            IN NUMBER
40448 --Applied To Application Identifier
40449  , p_source_53            IN NUMBER
40450 --Applied To Distribution Link Type
40451  , p_source_54            IN VARCHAR2
40452 --Applied To Entity Code
40453  , p_source_55            IN VARCHAR2
40454 --Applied To Distribution Identifier 1
40455  , p_source_56            IN NUMBER
40456 --Applied To Header Identifier 1
40457  , p_source_57            IN NUMBER
40458 --Distribution Link Type
40459  , p_source_58            IN VARCHAR2
40460 --JFMIP Reference
40461  , p_source_60            IN VARCHAR2
40462 --Currency Conversion Date
40463  , p_source_62            IN DATE
40464 --Currency Conversion Rate
40465  , p_source_63            IN NUMBER
40466 --Currency Conversion Type
40467  , p_source_64            IN VARCHAR2
40468 --Adjustment Status
40469  , p_source_75            IN VARCHAR2
40470 --Requisition Identifier
40471  , p_source_76            IN NUMBER
40472 --Requisition Encumbrance Upgrade Option
40473  , p_source_77            IN VARCHAR2
40474 --Requisition Upgrade Encumbrance Type Identifier
40475  , p_source_78            IN NUMBER
40476 )
40477 IS
40478 
40479 l_component_type              VARCHAR2(80);
40480 l_component_code              VARCHAR2(30);
40481 l_component_type_code         VARCHAR2(1);
40482 l_component_appl_id           INTEGER;
40483 l_amb_context_code            VARCHAR2(30);
40484 l_entity_code                 VARCHAR2(30);
40485 l_event_class_code            VARCHAR2(30);
40486 l_ae_header_id                NUMBER;
40487 l_event_type_code             VARCHAR2(30);
40488 l_line_definition_code        VARCHAR2(30);
40489 l_line_definition_owner_code  VARCHAR2(1);
40490 --
40491 -- adr variables
40492 l_segment                     VARCHAR2(30);
40493 l_ccid                        NUMBER;
40494 l_adr_transaction_coa_id      NUMBER;
40495 l_adr_accounting_coa_id       NUMBER;
40496 l_adr_flexfield_segment_code  VARCHAR2(30);
40497 l_adr_flex_value_set_id       NUMBER;
40498 l_adr_value_type_code         VARCHAR2(30);
40499 l_adr_value_combination_id    NUMBER;
40500 l_adr_value_segment_code      VARCHAR2(30);
40501 
40502 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40503 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40504 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40505 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40506 
40507 -- 4262811 Variables ------------------------------------------------------------------------------------------
40508 l_entered_amt_idx             NUMBER;
40509 l_accted_amt_idx              NUMBER;
40510 l_acc_rev_flag                VARCHAR2(1);
40511 l_accrual_line_num            NUMBER;
40512 l_tmp_amt                     NUMBER;
40513 l_acc_rev_natural_side_code   VARCHAR2(1);
40514 
40515 l_num_entries                 NUMBER;
40516 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40517 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40518 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40519 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40520 l_recog_line_1                NUMBER;
40521 l_recog_line_2                NUMBER;
40522 
40523 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40524 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40525 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40526 
40527 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40528 
40529 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40530 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40531 
40532 ---------------------------------------------------------------------------------------------------------------
40533 
40534 
40535 --
40536 -- bulk performance
40537 --
40538 l_balance_type_code           VARCHAR2(1);
40539 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40540 l_log_module                  VARCHAR2(240);
40541 
40542 --
40543 -- Upgrade strategy
40544 --
40545 l_actual_upg_option           VARCHAR2(1);
40546 l_enc_upg_option           VARCHAR2(1);
40547 
40548 --
40549 BEGIN
40550 --
40551 IF g_log_enabled THEN
40552       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
40553 END IF;
40554 --
40555 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40556 
40557       trace
40558          (p_msg      => 'BEGIN of AcctLineType_72'
40559          ,p_level    => C_LEVEL_PROCEDURE
40560          ,p_module   => l_log_module);
40561 
40562 END IF;
40563 --
40564 l_component_type             := 'AMB_JLT';
40565 l_component_code             := 'RESERVE_REQ_ENCUMBRANCE';
40566 l_component_type_code        := 'S';
40567 l_component_appl_id          :=  201;
40568 l_amb_context_code           := 'DEFAULT';
40569 l_entity_code                := 'REQUISITION';
40570 l_event_class_code           := 'REQUISITION';
40571 l_event_type_code            := 'REQUISITION_ALL';
40572 l_line_definition_owner_code := 'S';
40573 l_line_definition_code       := 'REQ_ENC_ALL';
40574 --
40575 l_balance_type_code          := 'E';
40576 l_segment                     := NULL;
40577 l_ccid                        := NULL;
40578 l_adr_transaction_coa_id      := NULL;
40579 l_adr_accounting_coa_id       := NULL;
40580 l_adr_flexfield_segment_code  := NULL;
40581 l_adr_flex_value_set_id       := NULL;
40582 l_adr_value_type_code         := NULL;
40583 l_adr_value_combination_id    := NULL;
40584 l_adr_value_segment_code      := NULL;
40585 
40586 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40587 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
40588 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40589 l_budgetary_control_flag     := 'Y';
40590 
40591 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40592 l_bflow_applied_to_amt       := NULL; -- 5132302
40593 l_entered_amt_idx            := NULL;          -- 4262811
40594 l_accted_amt_idx             := NULL;          -- 4262811
40595 l_acc_rev_flag               := NULL;          -- 4262811
40596 l_accrual_line_num           := NULL;          -- 4262811
40597 l_tmp_amt                    := NULL;          -- 4262811
40598 --
40599  
40600 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40601     l_balance_type_code <> 'B' THEN
40602 IF (NVL(
40603 xla_ae_sources_pkg.GetSystemSourceChar(
40604    p_source_code           => 'XLA_EVENT_TYPE_CODE'
40605  , p_source_type_code      => 'Y'
40606  , p_source_application_id =>  602
40607 ),'
40608 ') =  'REQ_RESERVED' OR 
40609 NVL(
40610 xla_ae_sources_pkg.GetSystemSourceChar(
40611    p_source_code           => 'XLA_EVENT_TYPE_CODE'
40612  , p_source_type_code      => 'Y'
40613  , p_source_application_id =>  602
40614 ),'
40615 ') =  'REQ_ADJUSTED' AND 
40616 NVL(p_source_75,'
40617 ') =  'NEW') AND 
40618 NVL(p_source_13,'
40619 ') =  'M'
40620  THEN 
40621 
40622    --
40623    XLA_AE_LINES_PKG.SetNewLine;
40624 
40625    p_balance_type_code          := l_balance_type_code;
40626    -- set the flag so later we will know whether the gain loss line needs to be created
40627    
40628    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40629      p_actual_flag :='A';
40630    END IF;
40631 
40632    --
40633    -- bulk performance
40634    --
40635    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40636                                       p_header_num   => 0); -- 4262811
40637    --
40638    -- set accounting line options
40639    --
40640    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40641            p_natural_side_code          => 'D'
40642          , p_gain_or_loss_flag          => 'N'
40643          , p_gl_transfer_mode_code      => 'S'
40644          , p_acct_entry_type_code       => 'E'
40645          , p_switch_side_flag           => 'N'
40646          , p_merge_duplicate_code       => 'N'
40647          );
40648    --
40649    l_acc_rev_natural_side_code := 'C';  -- 4262811
40650    -- 
40651    --
40652    -- set accounting line type info
40653    --
40654    xla_ae_lines_pkg.SetAcctLineType
40655       (p_component_type             => l_component_type
40656       ,p_event_type_code            => l_event_type_code
40657       ,p_line_definition_owner_code => l_line_definition_owner_code
40658       ,p_line_definition_code       => l_line_definition_code
40659       ,p_accounting_line_code       => l_component_code
40660       ,p_accounting_line_type_code  => l_component_type_code
40661       ,p_accounting_line_appl_id    => l_component_appl_id
40662       ,p_amb_context_code           => l_amb_context_code
40663       ,p_entity_code                => l_entity_code
40664       ,p_event_class_code           => l_event_class_code);
40665    --
40666    -- set accounting class
40667    --
40668    xla_ae_lines_pkg.SetAcctClass(
40669            p_accounting_class_code  => 'REQUISITION'
40670          , p_ae_header_id           => l_ae_header_id
40671          );
40672 
40673    --
40674    -- set rounding class
40675    --
40676    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40677                       'REQUISITION';
40678 
40679    --
40680    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40681    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40682    --
40683    -- bulk performance
40684    --
40685    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40686 
40687    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40688       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40689 
40690    -- 4955764
40691    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40693 
40694    -- 4458381 Public Sector Enh
40695       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
40696    --
40697    -- set accounting attributes for the line type
40698    --
40699    l_entered_amt_idx := 23;
40700    l_accted_amt_idx  := 28;
40701    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40702    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
40703    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
40704    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
40705    l_rec_acct_attrs.array_num_value(2)  := 
40706 xla_ae_sources_pkg.GetSystemSourceNum(
40707    p_source_code           => 'XLA_EVENT_APPL_ID'
40708  , p_source_type_code      => 'Y'
40709  , p_source_application_id =>  602
40710 );
40711    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
40712    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
40713    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
40714    l_rec_acct_attrs.array_char_value(4)  := 
40715 xla_ae_sources_pkg.GetSystemSourceChar(
40716    p_source_code           => 'XLA_ENTITY_CODE'
40717  , p_source_type_code      => 'Y'
40718  , p_source_application_id =>  602
40719 );
40720    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
40721    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_47);
40722    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
40723    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_76);
40724    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
40725    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
40726    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
40727    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
40728    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
40729    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
40730    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
40731    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
40732    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
40733    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
40734    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
40735    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_47);
40736    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
40737    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
40738    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
40739    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
40740    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
40741    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
40742    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
40743    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
40744    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
40745    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
40746    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
40747    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
40748    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
40749    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
40750    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
40751    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
40752    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
40753    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
40754    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
40755    l_rec_acct_attrs.array_char_value(22)  := p_source_77;
40756    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
40757    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
40758    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
40759    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
40760    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
40761    l_rec_acct_attrs.array_date_value(25)  := p_source_62;
40762    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
40763    l_rec_acct_attrs.array_num_value(26)  := p_source_63;
40764    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
40765    l_rec_acct_attrs.array_char_value(27)  := p_source_64;
40766    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
40767    l_rec_acct_attrs.array_num_value(28)  := p_source_35;
40768    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
40769    l_rec_acct_attrs.array_char_value(29)  := p_source_60;
40770    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
40771    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_56);
40772    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
40773    l_rec_acct_attrs.array_char_value(31)  := p_source_54;
40774    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
40775    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_47);
40776    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
40777    l_rec_acct_attrs.array_num_value(33)  := p_source_78;
40778    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
40779    l_rec_acct_attrs.array_num_value(34)  := p_source_78;
40780 
40781    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40782    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40783 
40784    ---------------------------------------------------------------------------------------------------------------
40785    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40786    ---------------------------------------------------------------------------------------------------------------
40787    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40788 
40789    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40790    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40791 
40792    IF xla_accounting_cache_pkg.GetValueChar
40793          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40794          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40795    AND l_bflow_method_code = 'PRIOR_ENTRY'
40796 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40797    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40798          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40799        )
40800    THEN
40801          xla_ae_lines_pkg.BflowUpgEntry
40802            (p_business_method_code    => l_bflow_method_code
40803            ,p_business_class_code     => l_bflow_class_code
40804            ,p_balance_type            => l_balance_type_code);
40805    ELSE
40806       NULL;
40807 -- No business flow processing for business flow method of NONE.
40808    END IF;
40809 
40810    --
40811    -- call analytical criteria
40812    --
40813    
40814    --
40815    -- call description
40816    --
40817    
40818 xla_ae_lines_pkg.SetLineDescription(
40819    p_ae_header_id => l_ae_header_id
40820   ,p_description  => Description_3 (
40821      p_application_id         => p_application_id
40822    , p_ae_header_id           => l_ae_header_id 
40823 , p_source_7 => p_source_7
40824    )
40825 );
40826 
40827 
40828    --
40829    -- call ADRs
40830    -- Bug 4922099
40831    --
40832    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40833         (NVL(l_actual_upg_option, 'N') = 'O') OR
40834         (NVL(l_enc_upg_option, 'N') = 'O')
40835       )
40836    THEN
40837    NULL;
40838    --
40839    --
40840    
40841   l_ccid := AcctDerRule_8(
40842            p_application_id           => p_application_id
40843          , p_ae_header_id             => l_ae_header_id 
40844 , p_source_11 => p_source_11
40845          , x_transaction_coa_id       => l_adr_transaction_coa_id
40846          , x_accounting_coa_id        => l_adr_accounting_coa_id
40847          , x_value_type_code          => l_adr_value_type_code
40848          , p_side                     => 'NA'
40849    );
40850 
40851    xla_ae_lines_pkg.set_ccid(
40852     p_code_combination_id          => l_ccid
40853   , p_value_type_code              => l_adr_value_type_code
40854   , p_transaction_coa_id           => l_adr_transaction_coa_id
40855   , p_accounting_coa_id            => l_adr_accounting_coa_id
40856   , p_adr_code                     => 'PURCHASING_ENCUMBRANCE_ADR'
40857   , p_adr_type_code                => 'S'
40858   , p_component_type               => l_component_type
40859   , p_component_code               => l_component_code
40860   , p_component_type_code          => l_component_type_code
40861   , p_component_appl_id            => l_component_appl_id
40862   , p_amb_context_code             => l_amb_context_code
40863   , p_side                         => 'NA'
40864   );
40865 
40866 
40867    --
40868    --
40869    END IF;
40870    --
40871    -- Bug 4922099
40872    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40873           (NVL(l_enc_upg_option, 'N') = 'O')
40874         ) AND
40875         (l_bflow_method_code = 'PRIOR_ENTRY')
40876       )
40877    THEN
40878       IF
40879       --
40880       1 = 2
40881       --
40882       THEN
40883       xla_accounting_err_pkg.build_message
40884                                     (p_appli_s_name            => 'XLA'
40885                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40886                                     ,p_token_1                 => 'LINE_NUMBER'
40887                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40888                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40889                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40890                                                                              l_component_type
40891                                                                             ,l_component_code
40892                                                                             ,l_component_type_code
40893                                                                             ,l_component_appl_id
40894                                                                             ,l_amb_context_code
40895                                                                             ,l_entity_code
40896                                                                             ,l_event_class_code
40897                                                                            )
40898                                     ,p_token_3                 => 'OWNER'
40899                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40900                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40901                                                                           ,p_lookup_code    => l_component_type_code
40902                                                                          )
40903                                     ,p_token_4                 => 'PRODUCT_NAME'
40904                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40905                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40906                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40907                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40908                                     ,p_ae_header_id            =>  NULL
40909                                        );
40910 
40911         IF (C_LEVEL_ERROR>= g_log_level) THEN
40912                  trace
40913                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40914                       ,p_level    => C_LEVEL_ERROR
40915                       ,p_module   => l_log_module);
40916         END IF;
40917       END IF;
40918    END IF;
40919    --
40920    --
40921    ------------------------------------------------------------------------------------------------
40922    -- 4219869 Business Flow
40923    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40924    -- Prior Entry.  Currently, the following code is always generated.
40925    ------------------------------------------------------------------------------------------------
40926    XLA_AE_LINES_PKG.ValidateCurrentLine;
40927 
40928    ------------------------------------------------------------------------------------
40929    -- 4219869 Business Flow
40930    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40931    ------------------------------------------------------------------------------------
40932    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40933 
40934    ----------------------------------------------------------------------------------
40935    -- 4219869 Business Flow
40936    -- Update journal entry status -- Need to generate this within IF <condition>
40937    ----------------------------------------------------------------------------------
40938    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40939          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40940          ,p_balance_type_code => l_balance_type_code
40941          );
40942 
40943    -------------------------------------------------------------------------------------------
40944    -- 4262811 - Generate the Accrual Reversal lines
40945    -------------------------------------------------------------------------------------------
40946    BEGIN
40947       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40948                               (g_array_event(p_event_id).array_value_num('header_index'));
40949       IF l_acc_rev_flag IS NULL THEN
40950          l_acc_rev_flag := 'N';
40951       END IF;
40952    EXCEPTION
40953       WHEN OTHERS THEN
40954          l_acc_rev_flag := 'N';
40955    END;
40956    --
40957    IF (l_acc_rev_flag = 'Y') THEN
40958 
40959        -- 4645092  ------------------------------------------------------------------------------
40960        -- To allow MPA report to determine if it should generate report process
40961        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40962        ------------------------------------------------------------------------------------------
40963 
40964        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40965        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40966 
40967        --
40968        -- Update the line information that should be overwritten
40969        --
40970        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40971                                          p_header_num   => 1);
40972        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40973 
40974        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40975 
40976        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40977           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40978        END IF;
40979 
40980       --
40981       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40982       --
40983       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40984           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40985       ELSE
40986           ---------------------------------------------------------------------------------------------------
40987           -- 4262811a Switch Sign
40988           ---------------------------------------------------------------------------------------------------
40989           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40990           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40991                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40992           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40993                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40994           -- 5132302
40995           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40996                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40997 
40998       END IF;
40999 
41000       -- 4955764
41001       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41002       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41003 
41004 
41005       XLA_AE_LINES_PKG.ValidateCurrentLine;
41006       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41007 
41008       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41009                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41010                ,p_balance_type_code => l_balance_type_code);
41011 
41012    END IF;
41013 
41014    -----------------------------------------------------------------------------------------
41015    -- 4262811 Multiperiod Accounting
41016    -----------------------------------------------------------------------------------------
41017      -- No MPA option is assigned.
41018 
41019 
41020 END IF;
41021 END IF;
41022 --
41023 
41024 --
41025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41026    trace
41027       (p_msg      => 'END of AcctLineType_72'
41028       ,p_level    => C_LEVEL_PROCEDURE
41029       ,p_module   => l_log_module);
41030 END IF;
41031 --
41032 EXCEPTION
41033   WHEN xla_exceptions_pkg.application_exception THEN
41034       RAISE;
41035   WHEN OTHERS THEN
41036        xla_exceptions_pkg.raise_message
41037            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_72');
41038 END AcctLineType_72;
41039 --
41040 
41041 ---------------------------------------
41042 --
41043 -- PRIVATE FUNCTION
41044 --         AcctLineType_73
41045 --
41046 ---------------------------------------
41047 PROCEDURE AcctLineType_73 (
41048   p_application_id        IN NUMBER
41049  ,p_event_id              IN NUMBER
41050  ,p_calculate_acctd_flag  IN VARCHAR2
41051  ,p_calculate_g_l_flag    IN VARCHAR2
41052  ,p_actual_flag           IN OUT VARCHAR2
41053  ,p_balance_type_code     OUT VARCHAR2
41054  ,p_gain_or_loss_ref      OUT VARCHAR2
41055  
41056 --Budget Account
41057  , p_source_11            IN NUMBER
41058 --Main Or Backing Code
41059  , p_source_13            IN VARCHAR2
41060 --Accounting Reversal Flag
41061  , p_source_16            IN VARCHAR2
41062 --PO Distribution Identifier
41063  , p_source_29            IN NUMBER
41064 --Entered Amount
41065  , p_source_33            IN NUMBER
41066 --Currency Code
41067  , p_source_34            IN VARCHAR2
41068 --Accounted Amount
41069  , p_source_35            IN NUMBER
41070 --PO Header Identifier
41071  , p_source_52            IN NUMBER
41072 --Applied To Application Identifier
41073  , p_source_53            IN NUMBER
41074 --Applied To Distribution Link Type
41075  , p_source_54            IN VARCHAR2
41076 --Applied To Entity Code
41077  , p_source_55            IN VARCHAR2
41078 --Applied To Distribution Identifier 1
41079  , p_source_56            IN NUMBER
41080 --Applied To Header Identifier 1
41081  , p_source_57            IN NUMBER
41082 --Distribution Link Type
41083  , p_source_58            IN VARCHAR2
41084 --PO Encumbrance Upgrade Option
41085  , p_source_59            IN VARCHAR2
41086 --JFMIP Reference
41087  , p_source_60            IN VARCHAR2
41088 --PO Upgrade Encumbrance Type Identifier
41089  , p_source_61            IN NUMBER
41090 --Adjustment Status
41091  , p_source_75            IN VARCHAR2
41092 )
41093 IS
41094 
41095 l_component_type              VARCHAR2(80);
41096 l_component_code              VARCHAR2(30);
41097 l_component_type_code         VARCHAR2(1);
41098 l_component_appl_id           INTEGER;
41099 l_amb_context_code            VARCHAR2(30);
41100 l_entity_code                 VARCHAR2(30);
41101 l_event_class_code            VARCHAR2(30);
41102 l_ae_header_id                NUMBER;
41103 l_event_type_code             VARCHAR2(30);
41104 l_line_definition_code        VARCHAR2(30);
41105 l_line_definition_owner_code  VARCHAR2(1);
41106 --
41107 -- adr variables
41108 l_segment                     VARCHAR2(30);
41109 l_ccid                        NUMBER;
41110 l_adr_transaction_coa_id      NUMBER;
41111 l_adr_accounting_coa_id       NUMBER;
41112 l_adr_flexfield_segment_code  VARCHAR2(30);
41113 l_adr_flex_value_set_id       NUMBER;
41114 l_adr_value_type_code         VARCHAR2(30);
41115 l_adr_value_combination_id    NUMBER;
41116 l_adr_value_segment_code      VARCHAR2(30);
41117 
41118 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41119 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41120 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41121 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41122 
41123 -- 4262811 Variables ------------------------------------------------------------------------------------------
41124 l_entered_amt_idx             NUMBER;
41125 l_accted_amt_idx              NUMBER;
41126 l_acc_rev_flag                VARCHAR2(1);
41127 l_accrual_line_num            NUMBER;
41128 l_tmp_amt                     NUMBER;
41129 l_acc_rev_natural_side_code   VARCHAR2(1);
41130 
41131 l_num_entries                 NUMBER;
41132 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41133 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41134 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41135 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41136 l_recog_line_1                NUMBER;
41137 l_recog_line_2                NUMBER;
41138 
41139 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41140 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41141 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41142 
41143 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41144 
41145 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41146 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41147 
41148 ---------------------------------------------------------------------------------------------------------------
41149 
41150 
41151 --
41152 -- bulk performance
41153 --
41154 l_balance_type_code           VARCHAR2(1);
41155 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41156 l_log_module                  VARCHAR2(240);
41157 
41158 --
41159 -- Upgrade strategy
41160 --
41161 l_actual_upg_option           VARCHAR2(1);
41162 l_enc_upg_option           VARCHAR2(1);
41163 
41164 --
41165 BEGIN
41166 --
41167 IF g_log_enabled THEN
41168       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
41169 END IF;
41170 --
41171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41172 
41173       trace
41174          (p_msg      => 'BEGIN of AcctLineType_73'
41175          ,p_level    => C_LEVEL_PROCEDURE
41176          ,p_module   => l_log_module);
41177 
41178 END IF;
41179 --
41180 l_component_type             := 'AMB_JLT';
41181 l_component_code             := 'REVERSE_PO_PA_ENCUMBRANCE_CR';
41182 l_component_type_code        := 'S';
41183 l_component_appl_id          :=  201;
41184 l_amb_context_code           := 'DEFAULT';
41185 l_entity_code                := 'PURCHASE_ORDER';
41186 l_event_class_code           := 'PO_PA';
41187 l_event_type_code            := 'PO_PA_ALL';
41188 l_line_definition_owner_code := 'S';
41189 l_line_definition_code       := 'PO_PA_ENC_ALL';
41190 --
41191 l_balance_type_code          := 'E';
41192 l_segment                     := NULL;
41193 l_ccid                        := NULL;
41194 l_adr_transaction_coa_id      := NULL;
41195 l_adr_accounting_coa_id       := NULL;
41196 l_adr_flexfield_segment_code  := NULL;
41197 l_adr_flex_value_set_id       := NULL;
41198 l_adr_value_type_code         := NULL;
41199 l_adr_value_combination_id    := NULL;
41200 l_adr_value_segment_code      := NULL;
41201 
41202 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
41203 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
41204 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
41205 l_budgetary_control_flag     := 'Y';
41206 
41207 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41208 l_bflow_applied_to_amt       := NULL; -- 5132302
41209 l_entered_amt_idx            := NULL;          -- 4262811
41210 l_accted_amt_idx             := NULL;          -- 4262811
41211 l_acc_rev_flag               := NULL;          -- 4262811
41212 l_accrual_line_num           := NULL;          -- 4262811
41213 l_tmp_amt                    := NULL;          -- 4262811
41214 --
41215  
41216 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41217     l_balance_type_code <> 'B' THEN
41218 IF (NVL(
41219 xla_ae_sources_pkg.GetSystemSourceChar(
41220    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41221  , p_source_type_code      => 'Y'
41222  , p_source_application_id =>  602
41223 ),'
41224 ') =  'PO_PA_UNRESERVED' OR 
41225 NVL(
41226 xla_ae_sources_pkg.GetSystemSourceChar(
41227    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41228  , p_source_type_code      => 'Y'
41229  , p_source_application_id =>  602
41230 ),'
41231 ') =  'PO_PA_REJECTED' OR 
41232 NVL(
41233 xla_ae_sources_pkg.GetSystemSourceChar(
41234    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41235  , p_source_type_code      => 'Y'
41236  , p_source_application_id =>  602
41237 ),'
41238 ') =  'PO_PA_FINAL_CLOSED' OR 
41239 NVL(
41240 xla_ae_sources_pkg.GetSystemSourceChar(
41241    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41242  , p_source_type_code      => 'Y'
41243  , p_source_application_id =>  602
41244 ),'
41245 ') =  'PO_PA_INV_CANCELLED' OR 
41246 (NVL(
41247 xla_ae_sources_pkg.GetSystemSourceChar(
41248    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41249  , p_source_type_code      => 'Y'
41250  , p_source_application_id =>  602
41251 ),'
41252 ') =  'PO_PA_ADJUSTED' AND 
41253 NVL(p_source_75,'
41254 ') =  'OLD')
41255 ) AND NVL(p_source_13,'
41256 ') =  'M'
41257  THEN 
41258 
41259    --
41260    XLA_AE_LINES_PKG.SetNewLine;
41261 
41262    p_balance_type_code          := l_balance_type_code;
41263    -- set the flag so later we will know whether the gain loss line needs to be created
41264    
41265    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41266      p_actual_flag :='A';
41267    END IF;
41268 
41269    --
41270    -- bulk performance
41271    --
41272    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41273                                       p_header_num   => 0); -- 4262811
41274    --
41275    -- set accounting line options
41276    --
41277    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41278            p_natural_side_code          => 'C'
41279          , p_gain_or_loss_flag          => 'N'
41280          , p_gl_transfer_mode_code      => 'S'
41281          , p_acct_entry_type_code       => 'E'
41282          , p_switch_side_flag           => 'N'
41283          , p_merge_duplicate_code       => 'N'
41284          );
41285    --
41286    l_acc_rev_natural_side_code := 'D';  -- 4262811
41287    -- 
41288    --
41289    -- set accounting line type info
41290    --
41291    xla_ae_lines_pkg.SetAcctLineType
41292       (p_component_type             => l_component_type
41293       ,p_event_type_code            => l_event_type_code
41294       ,p_line_definition_owner_code => l_line_definition_owner_code
41295       ,p_line_definition_code       => l_line_definition_code
41296       ,p_accounting_line_code       => l_component_code
41297       ,p_accounting_line_type_code  => l_component_type_code
41298       ,p_accounting_line_appl_id    => l_component_appl_id
41299       ,p_amb_context_code           => l_amb_context_code
41300       ,p_entity_code                => l_entity_code
41301       ,p_event_class_code           => l_event_class_code);
41302    --
41303    -- set accounting class
41304    --
41305    xla_ae_lines_pkg.SetAcctClass(
41306            p_accounting_class_code  => 'PURCHASE_ORDER'
41307          , p_ae_header_id           => l_ae_header_id
41308          );
41309 
41310    --
41311    -- set rounding class
41312    --
41313    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41314                       'PURCHASE_ORDER';
41315 
41316    --
41317    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41318    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41319    --
41320    -- bulk performance
41321    --
41322    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41323 
41324    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41325       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41326 
41327    -- 4955764
41328    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41329       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41330 
41331    -- 4458381 Public Sector Enh
41332    
41333    --
41334    -- set accounting attributes for the line type
41335    --
41336    l_entered_amt_idx := 23;
41337    l_accted_amt_idx  := 25;
41338    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41339    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
41340    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
41341    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
41342    l_rec_acct_attrs.array_num_value(2)  := 
41343 xla_ae_sources_pkg.GetSystemSourceNum(
41344    p_source_code           => 'XLA_EVENT_APPL_ID'
41345  , p_source_type_code      => 'Y'
41346  , p_source_application_id =>  602
41347 );
41348    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
41349    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
41350    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
41351    l_rec_acct_attrs.array_char_value(4)  := 
41352 xla_ae_sources_pkg.GetSystemSourceChar(
41353    p_source_code           => 'XLA_ENTITY_CODE'
41354  , p_source_type_code      => 'Y'
41355  , p_source_application_id =>  602
41356 );
41357    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
41358    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
41359    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
41360    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
41361    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
41362    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
41363    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
41364    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
41365    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
41366    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
41367    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
41368    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
41369    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
41370    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
41371    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
41372    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
41373    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
41374    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
41375    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
41376    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
41377    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
41378    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
41379    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
41380    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
41381    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
41382    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
41383    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
41384    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
41385    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
41386    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
41387    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
41388    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
41389    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
41390    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
41391    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
41392    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
41393    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
41394    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
41395    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
41396    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
41397    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
41398    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
41399    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
41400    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
41401    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
41402    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
41403    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
41404    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
41405    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
41406    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_29);
41407    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
41408    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
41409    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
41410    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
41411 
41412    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41413    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41414 
41415    ---------------------------------------------------------------------------------------------------------------
41416    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41417    ---------------------------------------------------------------------------------------------------------------
41418    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41419 
41420    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41421    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41422 
41423    IF xla_accounting_cache_pkg.GetValueChar
41424          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41425          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41426    AND l_bflow_method_code = 'PRIOR_ENTRY'
41427 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41428    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41429          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41430        )
41431    THEN
41432          xla_ae_lines_pkg.BflowUpgEntry
41433            (p_business_method_code    => l_bflow_method_code
41434            ,p_business_class_code     => l_bflow_class_code
41435            ,p_balance_type            => l_balance_type_code);
41436    ELSE
41437       NULL;
41438 XLA_AE_LINES_PKG.business_flow_validation(
41439                                 p_business_method_code     => l_bflow_method_code
41440                                ,p_business_class_code      => l_bflow_class_code
41441                                ,p_inherit_description_flag => l_inherit_desc_flag);
41442    END IF;
41443 
41444    --
41445    -- call analytical criteria
41446    --
41447    -- Inherited Analytical Criteria for business flow method of Prior Entry.
41448    --
41449    -- call description
41450    --
41451    -- No description or it is inherited.
41452    --
41453    -- call ADRs
41454    -- Bug 4922099
41455    --
41456    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41457         (NVL(l_actual_upg_option, 'N') = 'O') OR
41458         (NVL(l_enc_upg_option, 'N') = 'O')
41459       )
41460    THEN
41461    NULL;
41462    --
41463    --
41464    
41465    --
41466    --
41467    END IF;
41468    --
41469    -- Bug 4922099
41470    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41471           (NVL(l_enc_upg_option, 'N') = 'O')
41472         ) AND
41473         (l_bflow_method_code = 'PRIOR_ENTRY')
41474       )
41475    THEN
41476       IF
41477       --
41478       1 = 1
41479       --
41480       THEN
41481       xla_accounting_err_pkg.build_message
41482                                     (p_appli_s_name            => 'XLA'
41483                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41484                                     ,p_token_1                 => 'LINE_NUMBER'
41485                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41486                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41487                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41488                                                                              l_component_type
41489                                                                             ,l_component_code
41490                                                                             ,l_component_type_code
41491                                                                             ,l_component_appl_id
41492                                                                             ,l_amb_context_code
41493                                                                             ,l_entity_code
41494                                                                             ,l_event_class_code
41495                                                                            )
41496                                     ,p_token_3                 => 'OWNER'
41497                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41498                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41499                                                                           ,p_lookup_code    => l_component_type_code
41500                                                                          )
41501                                     ,p_token_4                 => 'PRODUCT_NAME'
41502                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41503                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41504                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41505                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41506                                     ,p_ae_header_id            =>  NULL
41507                                        );
41508 
41509         IF (C_LEVEL_ERROR>= g_log_level) THEN
41510                  trace
41511                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41512                       ,p_level    => C_LEVEL_ERROR
41513                       ,p_module   => l_log_module);
41514         END IF;
41515       END IF;
41516    END IF;
41517    --
41518    --
41519    ------------------------------------------------------------------------------------------------
41520    -- 4219869 Business Flow
41521    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41522    -- Prior Entry.  Currently, the following code is always generated.
41523    ------------------------------------------------------------------------------------------------
41524    -- No ValidateCurrentLine for business flow method of Prior Entry
41525 
41526    ------------------------------------------------------------------------------------
41527    -- 4219869 Business Flow
41528    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41529    ------------------------------------------------------------------------------------
41530    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41531 
41532    ----------------------------------------------------------------------------------
41533    -- 4219869 Business Flow
41534    -- Update journal entry status -- Need to generate this within IF <condition>
41535    ----------------------------------------------------------------------------------
41536    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41537          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41538          ,p_balance_type_code => l_balance_type_code
41539          );
41540 
41541    -------------------------------------------------------------------------------------------
41542    -- 4262811 - Generate the Accrual Reversal lines
41543    -------------------------------------------------------------------------------------------
41544    BEGIN
41545       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41546                               (g_array_event(p_event_id).array_value_num('header_index'));
41547       IF l_acc_rev_flag IS NULL THEN
41548          l_acc_rev_flag := 'N';
41549       END IF;
41550    EXCEPTION
41551       WHEN OTHERS THEN
41552          l_acc_rev_flag := 'N';
41553    END;
41554    --
41555    IF (l_acc_rev_flag = 'Y') THEN
41556 
41557        -- 4645092  ------------------------------------------------------------------------------
41558        -- To allow MPA report to determine if it should generate report process
41559        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41560        ------------------------------------------------------------------------------------------
41561 
41562        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41563        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41564 
41565        --
41566        -- Update the line information that should be overwritten
41567        --
41568        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41569                                          p_header_num   => 1);
41570        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41571 
41572        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41573 
41574        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41575           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41576        END IF;
41577 
41578       --
41579       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41580       --
41581       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41582           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41583       ELSE
41584           ---------------------------------------------------------------------------------------------------
41585           -- 4262811a Switch Sign
41586           ---------------------------------------------------------------------------------------------------
41587           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41588           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41589                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41590           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41591                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41592           -- 5132302
41593           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41594                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41595 
41596       END IF;
41597 
41598       -- 4955764
41599       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41600       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41601 
41602 
41603       XLA_AE_LINES_PKG.ValidateCurrentLine;
41604       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41605 
41606       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41607                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41608                ,p_balance_type_code => l_balance_type_code);
41609 
41610    END IF;
41611 
41612    -----------------------------------------------------------------------------------------
41613    -- 4262811 Multiperiod Accounting
41614    -----------------------------------------------------------------------------------------
41615      -- No MPA option is assigned.
41616 
41617 
41618 END IF;
41619 END IF;
41620 --
41621 
41622 --
41623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41624    trace
41625       (p_msg      => 'END of AcctLineType_73'
41626       ,p_level    => C_LEVEL_PROCEDURE
41627       ,p_module   => l_log_module);
41628 END IF;
41629 --
41630 EXCEPTION
41631   WHEN xla_exceptions_pkg.application_exception THEN
41632       RAISE;
41633   WHEN OTHERS THEN
41634        xla_exceptions_pkg.raise_message
41635            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_73');
41636 END AcctLineType_73;
41637 --
41638 
41639 ---------------------------------------
41640 --
41641 -- PRIVATE FUNCTION
41642 --         AcctLineType_74
41643 --
41644 ---------------------------------------
41645 PROCEDURE AcctLineType_74 (
41646   p_application_id        IN NUMBER
41647  ,p_event_id              IN NUMBER
41648  ,p_calculate_acctd_flag  IN VARCHAR2
41649  ,p_calculate_g_l_flag    IN VARCHAR2
41650  ,p_actual_flag           IN OUT VARCHAR2
41651  ,p_balance_type_code     OUT VARCHAR2
41652  ,p_gain_or_loss_ref      OUT VARCHAR2
41653  
41654 --Budget Account
41655  , p_source_11            IN NUMBER
41656 --Main Or Backing Code
41657  , p_source_13            IN VARCHAR2
41658 --Accounting Reversal Flag
41659  , p_source_16            IN VARCHAR2
41660 --PO Distribution Identifier
41661  , p_source_29            IN NUMBER
41662 --Entered Amount
41663  , p_source_33            IN NUMBER
41664 --Currency Code
41665  , p_source_34            IN VARCHAR2
41666 --Accounted Amount
41667  , p_source_35            IN NUMBER
41668 --PO Header Identifier
41669  , p_source_52            IN NUMBER
41670 --Applied To Application Identifier
41671  , p_source_53            IN NUMBER
41672 --Applied To Distribution Link Type
41673  , p_source_54            IN VARCHAR2
41674 --Applied To Entity Code
41675  , p_source_55            IN VARCHAR2
41676 --Applied To Distribution Identifier 1
41677  , p_source_56            IN NUMBER
41678 --Applied To Header Identifier 1
41679  , p_source_57            IN NUMBER
41680 --Distribution Link Type
41681  , p_source_58            IN VARCHAR2
41682 --PO Encumbrance Upgrade Option
41683  , p_source_59            IN VARCHAR2
41684 --JFMIP Reference
41685  , p_source_60            IN VARCHAR2
41686 --PO Upgrade Encumbrance Type Identifier
41687  , p_source_61            IN NUMBER
41688 )
41689 IS
41690 
41691 l_component_type              VARCHAR2(80);
41692 l_component_code              VARCHAR2(30);
41693 l_component_type_code         VARCHAR2(1);
41694 l_component_appl_id           INTEGER;
41695 l_amb_context_code            VARCHAR2(30);
41696 l_entity_code                 VARCHAR2(30);
41697 l_event_class_code            VARCHAR2(30);
41698 l_ae_header_id                NUMBER;
41699 l_event_type_code             VARCHAR2(30);
41700 l_line_definition_code        VARCHAR2(30);
41701 l_line_definition_owner_code  VARCHAR2(1);
41702 --
41703 -- adr variables
41704 l_segment                     VARCHAR2(30);
41705 l_ccid                        NUMBER;
41706 l_adr_transaction_coa_id      NUMBER;
41707 l_adr_accounting_coa_id       NUMBER;
41708 l_adr_flexfield_segment_code  VARCHAR2(30);
41709 l_adr_flex_value_set_id       NUMBER;
41710 l_adr_value_type_code         VARCHAR2(30);
41711 l_adr_value_combination_id    NUMBER;
41712 l_adr_value_segment_code      VARCHAR2(30);
41713 
41714 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41715 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41716 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41717 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41718 
41719 -- 4262811 Variables ------------------------------------------------------------------------------------------
41720 l_entered_amt_idx             NUMBER;
41721 l_accted_amt_idx              NUMBER;
41722 l_acc_rev_flag                VARCHAR2(1);
41723 l_accrual_line_num            NUMBER;
41724 l_tmp_amt                     NUMBER;
41725 l_acc_rev_natural_side_code   VARCHAR2(1);
41726 
41727 l_num_entries                 NUMBER;
41728 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41729 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41730 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41731 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41732 l_recog_line_1                NUMBER;
41733 l_recog_line_2                NUMBER;
41734 
41735 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41736 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41737 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41738 
41739 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41740 
41741 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41742 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41743 
41744 ---------------------------------------------------------------------------------------------------------------
41745 
41746 
41747 --
41748 -- bulk performance
41749 --
41750 l_balance_type_code           VARCHAR2(1);
41751 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41752 l_log_module                  VARCHAR2(240);
41753 
41754 --
41755 -- Upgrade strategy
41756 --
41757 l_actual_upg_option           VARCHAR2(1);
41758 l_enc_upg_option           VARCHAR2(1);
41759 
41760 --
41761 BEGIN
41762 --
41763 IF g_log_enabled THEN
41764       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
41765 END IF;
41766 --
41767 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41768 
41769       trace
41770          (p_msg      => 'BEGIN of AcctLineType_74'
41771          ,p_level    => C_LEVEL_PROCEDURE
41772          ,p_module   => l_log_module);
41773 
41774 END IF;
41775 --
41776 l_component_type             := 'AMB_JLT';
41777 l_component_code             := 'REVERSE_PO_PA_ENCUMBRANCE_DR';
41778 l_component_type_code        := 'S';
41779 l_component_appl_id          :=  201;
41780 l_amb_context_code           := 'DEFAULT';
41781 l_entity_code                := 'PURCHASE_ORDER';
41782 l_event_class_code           := 'PO_PA';
41783 l_event_type_code            := 'PO_PA_ALL';
41784 l_line_definition_owner_code := 'S';
41785 l_line_definition_code       := 'PO_PA_ENC_ALL';
41786 --
41787 l_balance_type_code          := 'E';
41788 l_segment                     := NULL;
41789 l_ccid                        := NULL;
41790 l_adr_transaction_coa_id      := NULL;
41791 l_adr_accounting_coa_id       := NULL;
41792 l_adr_flexfield_segment_code  := NULL;
41793 l_adr_flex_value_set_id       := NULL;
41794 l_adr_value_type_code         := NULL;
41795 l_adr_value_combination_id    := NULL;
41796 l_adr_value_segment_code      := NULL;
41797 
41798 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
41799 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
41800 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
41801 l_budgetary_control_flag     := 'Y';
41802 
41803 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41804 l_bflow_applied_to_amt       := NULL; -- 5132302
41805 l_entered_amt_idx            := NULL;          -- 4262811
41806 l_accted_amt_idx             := NULL;          -- 4262811
41807 l_acc_rev_flag               := NULL;          -- 4262811
41808 l_accrual_line_num           := NULL;          -- 4262811
41809 l_tmp_amt                    := NULL;          -- 4262811
41810 --
41811  
41812 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41813     l_balance_type_code <> 'B' THEN
41814 IF (NVL(
41815 xla_ae_sources_pkg.GetSystemSourceChar(
41816    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41817  , p_source_type_code      => 'Y'
41818  , p_source_application_id =>  602
41819 ),'
41820 ') =  'PO_PA_CANCELLED' OR 
41821 NVL(
41822 xla_ae_sources_pkg.GetSystemSourceChar(
41823    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41824  , p_source_type_code      => 'Y'
41825  , p_source_application_id =>  602
41826 ),'
41827 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
41828 NVL(p_source_13,'
41829 ') =  'M'
41830  THEN 
41831 
41832    --
41833    XLA_AE_LINES_PKG.SetNewLine;
41834 
41835    p_balance_type_code          := l_balance_type_code;
41836    -- set the flag so later we will know whether the gain loss line needs to be created
41837    
41838    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41839      p_actual_flag :='A';
41840    END IF;
41841 
41842    --
41843    -- bulk performance
41844    --
41845    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41846                                       p_header_num   => 0); -- 4262811
41847    --
41848    -- set accounting line options
41849    --
41850    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41851            p_natural_side_code          => 'D'
41852          , p_gain_or_loss_flag          => 'N'
41853          , p_gl_transfer_mode_code      => 'S'
41854          , p_acct_entry_type_code       => 'E'
41855          , p_switch_side_flag           => 'N'
41856          , p_merge_duplicate_code       => 'N'
41857          );
41858    --
41859    l_acc_rev_natural_side_code := 'C';  -- 4262811
41860    -- 
41861    --
41862    -- set accounting line type info
41863    --
41864    xla_ae_lines_pkg.SetAcctLineType
41865       (p_component_type             => l_component_type
41866       ,p_event_type_code            => l_event_type_code
41867       ,p_line_definition_owner_code => l_line_definition_owner_code
41868       ,p_line_definition_code       => l_line_definition_code
41869       ,p_accounting_line_code       => l_component_code
41870       ,p_accounting_line_type_code  => l_component_type_code
41871       ,p_accounting_line_appl_id    => l_component_appl_id
41872       ,p_amb_context_code           => l_amb_context_code
41873       ,p_entity_code                => l_entity_code
41874       ,p_event_class_code           => l_event_class_code);
41875    --
41876    -- set accounting class
41877    --
41878    xla_ae_lines_pkg.SetAcctClass(
41879            p_accounting_class_code  => 'PURCHASE_ORDER'
41880          , p_ae_header_id           => l_ae_header_id
41881          );
41882 
41883    --
41884    -- set rounding class
41885    --
41886    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41887                       'PURCHASE_ORDER';
41888 
41889    --
41890    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41891    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41892    --
41893    -- bulk performance
41894    --
41895    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41896 
41897    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41898       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41899 
41900    -- 4955764
41901    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41902       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41903 
41904    -- 4458381 Public Sector Enh
41905    
41906    --
41907    -- set accounting attributes for the line type
41908    --
41909    l_entered_amt_idx := 23;
41910    l_accted_amt_idx  := 25;
41911    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41912    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
41913    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
41914    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
41915    l_rec_acct_attrs.array_num_value(2)  := 
41916 xla_ae_sources_pkg.GetSystemSourceNum(
41917    p_source_code           => 'XLA_EVENT_APPL_ID'
41918  , p_source_type_code      => 'Y'
41919  , p_source_application_id =>  602
41920 );
41921    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
41922    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
41923    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
41924    l_rec_acct_attrs.array_char_value(4)  := 
41925 xla_ae_sources_pkg.GetSystemSourceChar(
41926    p_source_code           => 'XLA_ENTITY_CODE'
41927  , p_source_type_code      => 'Y'
41928  , p_source_application_id =>  602
41929 );
41930    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
41931    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
41932    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
41933    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_52);
41934    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
41935    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
41936    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
41937    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
41938    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
41939    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
41940    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
41941    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
41942    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
41943    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
41944    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
41945    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
41946    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
41947    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
41948    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
41949    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
41950    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
41951    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
41952    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
41953    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
41954    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
41955    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
41956    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
41957    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
41958    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
41959    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
41960    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
41961    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
41962    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
41963    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
41964    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
41965    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
41966    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
41967    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
41968    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
41969    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
41970    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
41971    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
41972    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
41973    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
41974    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
41975    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
41976    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
41977    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
41978    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
41979    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_29);
41980    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
41981    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
41982    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
41983    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
41984 
41985    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41986    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41987 
41988    ---------------------------------------------------------------------------------------------------------------
41989    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41990    ---------------------------------------------------------------------------------------------------------------
41991    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41992 
41993    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41994    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41995 
41996    IF xla_accounting_cache_pkg.GetValueChar
41997          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41998          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41999    AND l_bflow_method_code = 'PRIOR_ENTRY'
42000 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42001    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42002          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42003        )
42004    THEN
42005          xla_ae_lines_pkg.BflowUpgEntry
42006            (p_business_method_code    => l_bflow_method_code
42007            ,p_business_class_code     => l_bflow_class_code
42008            ,p_balance_type            => l_balance_type_code);
42009    ELSE
42010       NULL;
42011 XLA_AE_LINES_PKG.business_flow_validation(
42012                                 p_business_method_code     => l_bflow_method_code
42013                                ,p_business_class_code      => l_bflow_class_code
42014                                ,p_inherit_description_flag => l_inherit_desc_flag);
42015    END IF;
42016 
42017    --
42018    -- call analytical criteria
42019    --
42020    -- Inherited Analytical Criteria for business flow method of Prior Entry.
42021    --
42022    -- call description
42023    --
42024    -- No description or it is inherited.
42025    --
42026    -- call ADRs
42027    -- Bug 4922099
42028    --
42029    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42030         (NVL(l_actual_upg_option, 'N') = 'O') OR
42031         (NVL(l_enc_upg_option, 'N') = 'O')
42032       )
42033    THEN
42034    NULL;
42035    --
42036    --
42037    
42038    --
42039    --
42040    END IF;
42041    --
42042    -- Bug 4922099
42043    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42044           (NVL(l_enc_upg_option, 'N') = 'O')
42045         ) AND
42046         (l_bflow_method_code = 'PRIOR_ENTRY')
42047       )
42048    THEN
42049       IF
42050       --
42051       1 = 1
42052       --
42053       THEN
42054       xla_accounting_err_pkg.build_message
42055                                     (p_appli_s_name            => 'XLA'
42056                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42057                                     ,p_token_1                 => 'LINE_NUMBER'
42058                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42059                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42060                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42061                                                                              l_component_type
42062                                                                             ,l_component_code
42063                                                                             ,l_component_type_code
42064                                                                             ,l_component_appl_id
42065                                                                             ,l_amb_context_code
42066                                                                             ,l_entity_code
42067                                                                             ,l_event_class_code
42068                                                                            )
42069                                     ,p_token_3                 => 'OWNER'
42070                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42071                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42072                                                                           ,p_lookup_code    => l_component_type_code
42073                                                                          )
42074                                     ,p_token_4                 => 'PRODUCT_NAME'
42075                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42076                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42077                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42078                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42079                                     ,p_ae_header_id            =>  NULL
42080                                        );
42081 
42082         IF (C_LEVEL_ERROR>= g_log_level) THEN
42083                  trace
42084                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42085                       ,p_level    => C_LEVEL_ERROR
42086                       ,p_module   => l_log_module);
42087         END IF;
42088       END IF;
42089    END IF;
42090    --
42091    --
42092    ------------------------------------------------------------------------------------------------
42093    -- 4219869 Business Flow
42094    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42095    -- Prior Entry.  Currently, the following code is always generated.
42096    ------------------------------------------------------------------------------------------------
42097    -- No ValidateCurrentLine for business flow method of Prior Entry
42098 
42099    ------------------------------------------------------------------------------------
42100    -- 4219869 Business Flow
42101    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42102    ------------------------------------------------------------------------------------
42103    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42104 
42105    ----------------------------------------------------------------------------------
42106    -- 4219869 Business Flow
42107    -- Update journal entry status -- Need to generate this within IF <condition>
42108    ----------------------------------------------------------------------------------
42109    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42110          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42111          ,p_balance_type_code => l_balance_type_code
42112          );
42113 
42114    -------------------------------------------------------------------------------------------
42115    -- 4262811 - Generate the Accrual Reversal lines
42116    -------------------------------------------------------------------------------------------
42117    BEGIN
42118       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42119                               (g_array_event(p_event_id).array_value_num('header_index'));
42120       IF l_acc_rev_flag IS NULL THEN
42121          l_acc_rev_flag := 'N';
42122       END IF;
42123    EXCEPTION
42124       WHEN OTHERS THEN
42125          l_acc_rev_flag := 'N';
42126    END;
42127    --
42128    IF (l_acc_rev_flag = 'Y') THEN
42129 
42130        -- 4645092  ------------------------------------------------------------------------------
42131        -- To allow MPA report to determine if it should generate report process
42132        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42133        ------------------------------------------------------------------------------------------
42134 
42135        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42136        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42137 
42138        --
42139        -- Update the line information that should be overwritten
42140        --
42141        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42142                                          p_header_num   => 1);
42143        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42144 
42145        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42146 
42147        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42148           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42149        END IF;
42150 
42151       --
42152       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42153       --
42154       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42155           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42156       ELSE
42157           ---------------------------------------------------------------------------------------------------
42158           -- 4262811a Switch Sign
42159           ---------------------------------------------------------------------------------------------------
42160           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42161           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42162                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42163           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42164                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42165           -- 5132302
42166           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42167                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42168 
42169       END IF;
42170 
42171       -- 4955764
42172       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42173       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42174 
42175 
42176       XLA_AE_LINES_PKG.ValidateCurrentLine;
42177       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42178 
42179       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42180                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42181                ,p_balance_type_code => l_balance_type_code);
42182 
42183    END IF;
42184 
42185    -----------------------------------------------------------------------------------------
42186    -- 4262811 Multiperiod Accounting
42187    -----------------------------------------------------------------------------------------
42188      -- No MPA option is assigned.
42189 
42190 
42191 END IF;
42192 END IF;
42193 --
42194 
42195 --
42196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42197    trace
42198       (p_msg      => 'END of AcctLineType_74'
42199       ,p_level    => C_LEVEL_PROCEDURE
42200       ,p_module   => l_log_module);
42201 END IF;
42202 --
42203 EXCEPTION
42204   WHEN xla_exceptions_pkg.application_exception THEN
42205       RAISE;
42206   WHEN OTHERS THEN
42207        xla_exceptions_pkg.raise_message
42208            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_74');
42209 END AcctLineType_74;
42210 --
42211 
42212 ---------------------------------------
42213 --
42214 -- PRIVATE FUNCTION
42215 --         AcctLineType_75
42216 --
42217 ---------------------------------------
42218 PROCEDURE AcctLineType_75 (
42219   p_application_id        IN NUMBER
42220  ,p_event_id              IN NUMBER
42221  ,p_calculate_acctd_flag  IN VARCHAR2
42222  ,p_calculate_g_l_flag    IN VARCHAR2
42223  ,p_actual_flag           IN OUT VARCHAR2
42224  ,p_balance_type_code     OUT VARCHAR2
42225  ,p_gain_or_loss_ref      OUT VARCHAR2
42226  
42227 --Budget Account
42228  , p_source_11            IN NUMBER
42229 --Main Or Backing Code
42230  , p_source_13            IN VARCHAR2
42231 --Accounting Reversal Flag
42232  , p_source_16            IN VARCHAR2
42233 --PO Distribution Identifier
42234  , p_source_29            IN NUMBER
42235 --Entered Amount
42236  , p_source_33            IN NUMBER
42237 --Currency Code
42238  , p_source_34            IN VARCHAR2
42239 --Accounted Amount
42240  , p_source_35            IN NUMBER
42241 --Applied To Application Identifier
42242  , p_source_53            IN NUMBER
42243 --Applied To Distribution Link Type
42244  , p_source_54            IN VARCHAR2
42245 --Applied To Entity Code
42246  , p_source_55            IN VARCHAR2
42247 --Applied To Distribution Identifier 1
42248  , p_source_56            IN NUMBER
42249 --Applied To Header Identifier 1
42250  , p_source_57            IN NUMBER
42251 --Distribution Link Type
42252  , p_source_58            IN VARCHAR2
42253 --PO Encumbrance Upgrade Option
42254  , p_source_59            IN VARCHAR2
42255 --JFMIP Reference
42256  , p_source_60            IN VARCHAR2
42257 --PO Upgrade Encumbrance Type Identifier
42258  , p_source_61            IN NUMBER
42259 --PO Release Identifier
42260  , p_source_66            IN NUMBER
42261 --Adjustment Status
42262  , p_source_75            IN VARCHAR2
42263 )
42264 IS
42265 
42266 l_component_type              VARCHAR2(80);
42267 l_component_code              VARCHAR2(30);
42268 l_component_type_code         VARCHAR2(1);
42269 l_component_appl_id           INTEGER;
42270 l_amb_context_code            VARCHAR2(30);
42271 l_entity_code                 VARCHAR2(30);
42272 l_event_class_code            VARCHAR2(30);
42273 l_ae_header_id                NUMBER;
42274 l_event_type_code             VARCHAR2(30);
42275 l_line_definition_code        VARCHAR2(30);
42276 l_line_definition_owner_code  VARCHAR2(1);
42277 --
42278 -- adr variables
42279 l_segment                     VARCHAR2(30);
42280 l_ccid                        NUMBER;
42281 l_adr_transaction_coa_id      NUMBER;
42282 l_adr_accounting_coa_id       NUMBER;
42283 l_adr_flexfield_segment_code  VARCHAR2(30);
42284 l_adr_flex_value_set_id       NUMBER;
42285 l_adr_value_type_code         VARCHAR2(30);
42286 l_adr_value_combination_id    NUMBER;
42287 l_adr_value_segment_code      VARCHAR2(30);
42288 
42289 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42290 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42291 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42292 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42293 
42294 -- 4262811 Variables ------------------------------------------------------------------------------------------
42295 l_entered_amt_idx             NUMBER;
42296 l_accted_amt_idx              NUMBER;
42297 l_acc_rev_flag                VARCHAR2(1);
42298 l_accrual_line_num            NUMBER;
42299 l_tmp_amt                     NUMBER;
42300 l_acc_rev_natural_side_code   VARCHAR2(1);
42301 
42302 l_num_entries                 NUMBER;
42303 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42304 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42305 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42306 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42307 l_recog_line_1                NUMBER;
42308 l_recog_line_2                NUMBER;
42309 
42310 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42311 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42312 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42313 
42314 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42315 
42316 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42317 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42318 
42319 ---------------------------------------------------------------------------------------------------------------
42320 
42321 
42322 --
42323 -- bulk performance
42324 --
42325 l_balance_type_code           VARCHAR2(1);
42326 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42327 l_log_module                  VARCHAR2(240);
42328 
42329 --
42330 -- Upgrade strategy
42331 --
42332 l_actual_upg_option           VARCHAR2(1);
42333 l_enc_upg_option           VARCHAR2(1);
42334 
42335 --
42336 BEGIN
42337 --
42338 IF g_log_enabled THEN
42339       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
42340 END IF;
42341 --
42342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42343 
42344       trace
42345          (p_msg      => 'BEGIN of AcctLineType_75'
42346          ,p_level    => C_LEVEL_PROCEDURE
42347          ,p_module   => l_log_module);
42348 
42349 END IF;
42350 --
42351 l_component_type             := 'AMB_JLT';
42352 l_component_code             := 'REVERSE_RELEASE_ENCUMBRANCE_CR';
42353 l_component_type_code        := 'S';
42354 l_component_appl_id          :=  201;
42355 l_amb_context_code           := 'DEFAULT';
42356 l_entity_code                := 'RELEASE';
42357 l_event_class_code           := 'RELEASE';
42358 l_event_type_code            := 'RELEASE_ALL';
42359 l_line_definition_owner_code := 'S';
42360 l_line_definition_code       := 'RELEASE_ENC_ALL';
42361 --
42362 l_balance_type_code          := 'E';
42363 l_segment                     := NULL;
42364 l_ccid                        := NULL;
42365 l_adr_transaction_coa_id      := NULL;
42366 l_adr_accounting_coa_id       := NULL;
42367 l_adr_flexfield_segment_code  := NULL;
42368 l_adr_flex_value_set_id       := NULL;
42369 l_adr_value_type_code         := NULL;
42370 l_adr_value_combination_id    := NULL;
42371 l_adr_value_segment_code      := NULL;
42372 
42373 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
42374 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
42375 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
42376 l_budgetary_control_flag     := 'Y';
42377 
42378 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42379 l_bflow_applied_to_amt       := NULL; -- 5132302
42380 l_entered_amt_idx            := NULL;          -- 4262811
42381 l_accted_amt_idx             := NULL;          -- 4262811
42382 l_acc_rev_flag               := NULL;          -- 4262811
42383 l_accrual_line_num           := NULL;          -- 4262811
42384 l_tmp_amt                    := NULL;          -- 4262811
42385 --
42386  
42387 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42388     l_balance_type_code <> 'B' THEN
42389 IF (NVL(
42390 xla_ae_sources_pkg.GetSystemSourceChar(
42391    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42392  , p_source_type_code      => 'Y'
42393  , p_source_application_id =>  602
42394 ),'
42395 ') =  'RELEASE_REJECTED' OR 
42396 NVL(
42397 xla_ae_sources_pkg.GetSystemSourceChar(
42398    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42399  , p_source_type_code      => 'Y'
42400  , p_source_application_id =>  602
42401 ),'
42402 ') =  'RELEASE_UNRESERVED' OR 
42403 NVL(
42404 xla_ae_sources_pkg.GetSystemSourceChar(
42405    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42406  , p_source_type_code      => 'Y'
42407  , p_source_application_id =>  602
42408 ),'
42409 ') =  'RELEASE_FINAL_CLOSED' OR 
42410 NVL(
42411 xla_ae_sources_pkg.GetSystemSourceChar(
42412    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42413  , p_source_type_code      => 'Y'
42414  , p_source_application_id =>  602
42415 ),'
42416 ') =  'RELEASE_INV_CANCELLED' OR 
42417 (NVL(
42418 xla_ae_sources_pkg.GetSystemSourceChar(
42419    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42420  , p_source_type_code      => 'Y'
42421  , p_source_application_id =>  602
42422 ),'
42423 ') =  'RELEASE_ADJUSTED' AND 
42424 NVL(p_source_75,'
42425 ') =  'OLD')
42426 ) AND NVL(p_source_13,'
42427 ') =  'M'
42428  THEN 
42429 
42430    --
42431    XLA_AE_LINES_PKG.SetNewLine;
42432 
42433    p_balance_type_code          := l_balance_type_code;
42434    -- set the flag so later we will know whether the gain loss line needs to be created
42435    
42436    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42437      p_actual_flag :='A';
42438    END IF;
42439 
42440    --
42441    -- bulk performance
42442    --
42443    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42444                                       p_header_num   => 0); -- 4262811
42445    --
42446    -- set accounting line options
42447    --
42448    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42449            p_natural_side_code          => 'C'
42450          , p_gain_or_loss_flag          => 'N'
42451          , p_gl_transfer_mode_code      => 'S'
42452          , p_acct_entry_type_code       => 'E'
42453          , p_switch_side_flag           => 'N'
42454          , p_merge_duplicate_code       => 'N'
42455          );
42456    --
42457    l_acc_rev_natural_side_code := 'D';  -- 4262811
42458    -- 
42459    --
42460    -- set accounting line type info
42461    --
42462    xla_ae_lines_pkg.SetAcctLineType
42463       (p_component_type             => l_component_type
42464       ,p_event_type_code            => l_event_type_code
42465       ,p_line_definition_owner_code => l_line_definition_owner_code
42466       ,p_line_definition_code       => l_line_definition_code
42467       ,p_accounting_line_code       => l_component_code
42468       ,p_accounting_line_type_code  => l_component_type_code
42469       ,p_accounting_line_appl_id    => l_component_appl_id
42470       ,p_amb_context_code           => l_amb_context_code
42471       ,p_entity_code                => l_entity_code
42472       ,p_event_class_code           => l_event_class_code);
42473    --
42474    -- set accounting class
42475    --
42476    xla_ae_lines_pkg.SetAcctClass(
42477            p_accounting_class_code  => 'PURCHASE_ORDER'
42478          , p_ae_header_id           => l_ae_header_id
42479          );
42480 
42481    --
42482    -- set rounding class
42483    --
42484    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42485                       'PURCHASE_ORDER';
42486 
42487    --
42488    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42489    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42490    --
42491    -- bulk performance
42492    --
42493    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42494 
42495    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42496       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42497 
42498    -- 4955764
42499    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42501 
42502    -- 4458381 Public Sector Enh
42503    
42504    --
42505    -- set accounting attributes for the line type
42506    --
42507    l_entered_amt_idx := 23;
42508    l_accted_amt_idx  := 25;
42509    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42510    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42511    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
42512    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
42513    l_rec_acct_attrs.array_num_value(2)  := 
42514 xla_ae_sources_pkg.GetSystemSourceNum(
42515    p_source_code           => 'XLA_EVENT_APPL_ID'
42516  , p_source_type_code      => 'Y'
42517  , p_source_application_id =>  602
42518 );
42519    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
42520    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
42521    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
42522    l_rec_acct_attrs.array_char_value(4)  := 
42523 xla_ae_sources_pkg.GetSystemSourceChar(
42524    p_source_code           => 'XLA_ENTITY_CODE'
42525  , p_source_type_code      => 'Y'
42526  , p_source_application_id =>  602
42527 );
42528    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
42529    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
42530    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
42531    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
42532    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
42533    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
42534    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
42535    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
42536    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
42537    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
42538    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
42539    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
42540    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
42541    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
42542    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
42543    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
42544    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
42545    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
42546    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
42547    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
42548    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
42549    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
42550    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
42551    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
42552    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
42553    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
42554    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
42555    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
42556    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
42557    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
42558    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
42559    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
42560    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
42561    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
42562    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
42563    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
42564    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
42565    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
42566    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
42567    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
42568    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
42569    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
42570    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
42571    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
42572    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
42573    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
42574    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
42575    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
42576    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
42577    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
42578    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
42579    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
42580    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
42581    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
42582 
42583    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42584    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42585 
42586    ---------------------------------------------------------------------------------------------------------------
42587    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42588    ---------------------------------------------------------------------------------------------------------------
42589    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42590 
42591    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42592    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42593 
42594    IF xla_accounting_cache_pkg.GetValueChar
42595          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42596          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42597    AND l_bflow_method_code = 'PRIOR_ENTRY'
42598 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42599    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42600          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42601        )
42602    THEN
42603          xla_ae_lines_pkg.BflowUpgEntry
42604            (p_business_method_code    => l_bflow_method_code
42605            ,p_business_class_code     => l_bflow_class_code
42606            ,p_balance_type            => l_balance_type_code);
42607    ELSE
42608       NULL;
42609 XLA_AE_LINES_PKG.business_flow_validation(
42610                                 p_business_method_code     => l_bflow_method_code
42611                                ,p_business_class_code      => l_bflow_class_code
42612                                ,p_inherit_description_flag => l_inherit_desc_flag);
42613    END IF;
42614 
42615    --
42616    -- call analytical criteria
42617    --
42618    -- Inherited Analytical Criteria for business flow method of Prior Entry.
42619    --
42620    -- call description
42621    --
42622    -- No description or it is inherited.
42623    --
42624    -- call ADRs
42625    -- Bug 4922099
42626    --
42627    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42628         (NVL(l_actual_upg_option, 'N') = 'O') OR
42629         (NVL(l_enc_upg_option, 'N') = 'O')
42630       )
42631    THEN
42632    NULL;
42633    --
42634    --
42635    
42636    --
42637    --
42638    END IF;
42639    --
42640    -- Bug 4922099
42641    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42642           (NVL(l_enc_upg_option, 'N') = 'O')
42643         ) AND
42644         (l_bflow_method_code = 'PRIOR_ENTRY')
42645       )
42646    THEN
42647       IF
42648       --
42649       1 = 1
42650       --
42651       THEN
42652       xla_accounting_err_pkg.build_message
42653                                     (p_appli_s_name            => 'XLA'
42654                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42655                                     ,p_token_1                 => 'LINE_NUMBER'
42656                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42657                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42658                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42659                                                                              l_component_type
42660                                                                             ,l_component_code
42661                                                                             ,l_component_type_code
42662                                                                             ,l_component_appl_id
42663                                                                             ,l_amb_context_code
42664                                                                             ,l_entity_code
42665                                                                             ,l_event_class_code
42666                                                                            )
42667                                     ,p_token_3                 => 'OWNER'
42668                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42669                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42670                                                                           ,p_lookup_code    => l_component_type_code
42671                                                                          )
42672                                     ,p_token_4                 => 'PRODUCT_NAME'
42673                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42674                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42675                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42676                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42677                                     ,p_ae_header_id            =>  NULL
42678                                        );
42679 
42680         IF (C_LEVEL_ERROR>= g_log_level) THEN
42681                  trace
42682                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42683                       ,p_level    => C_LEVEL_ERROR
42684                       ,p_module   => l_log_module);
42685         END IF;
42686       END IF;
42687    END IF;
42688    --
42689    --
42690    ------------------------------------------------------------------------------------------------
42691    -- 4219869 Business Flow
42692    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42693    -- Prior Entry.  Currently, the following code is always generated.
42694    ------------------------------------------------------------------------------------------------
42695    -- No ValidateCurrentLine for business flow method of Prior Entry
42696 
42697    ------------------------------------------------------------------------------------
42698    -- 4219869 Business Flow
42699    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42700    ------------------------------------------------------------------------------------
42701    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42702 
42703    ----------------------------------------------------------------------------------
42704    -- 4219869 Business Flow
42705    -- Update journal entry status -- Need to generate this within IF <condition>
42706    ----------------------------------------------------------------------------------
42707    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42708          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42709          ,p_balance_type_code => l_balance_type_code
42710          );
42711 
42712    -------------------------------------------------------------------------------------------
42713    -- 4262811 - Generate the Accrual Reversal lines
42714    -------------------------------------------------------------------------------------------
42715    BEGIN
42716       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42717                               (g_array_event(p_event_id).array_value_num('header_index'));
42718       IF l_acc_rev_flag IS NULL THEN
42719          l_acc_rev_flag := 'N';
42720       END IF;
42721    EXCEPTION
42722       WHEN OTHERS THEN
42723          l_acc_rev_flag := 'N';
42724    END;
42725    --
42726    IF (l_acc_rev_flag = 'Y') THEN
42727 
42728        -- 4645092  ------------------------------------------------------------------------------
42729        -- To allow MPA report to determine if it should generate report process
42730        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42731        ------------------------------------------------------------------------------------------
42732 
42733        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42734        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42735 
42736        --
42737        -- Update the line information that should be overwritten
42738        --
42739        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42740                                          p_header_num   => 1);
42741        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42742 
42743        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42744 
42745        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42746           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42747        END IF;
42748 
42749       --
42750       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42751       --
42752       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42753           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42754       ELSE
42755           ---------------------------------------------------------------------------------------------------
42756           -- 4262811a Switch Sign
42757           ---------------------------------------------------------------------------------------------------
42758           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42759           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42760                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42761           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42762                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42763           -- 5132302
42764           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42765                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42766 
42767       END IF;
42768 
42769       -- 4955764
42770       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42771       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42772 
42773 
42774       XLA_AE_LINES_PKG.ValidateCurrentLine;
42775       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42776 
42777       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42778                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42779                ,p_balance_type_code => l_balance_type_code);
42780 
42781    END IF;
42782 
42783    -----------------------------------------------------------------------------------------
42784    -- 4262811 Multiperiod Accounting
42785    -----------------------------------------------------------------------------------------
42786      -- No MPA option is assigned.
42787 
42788 
42789 END IF;
42790 END IF;
42791 --
42792 
42793 --
42794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42795    trace
42796       (p_msg      => 'END of AcctLineType_75'
42797       ,p_level    => C_LEVEL_PROCEDURE
42798       ,p_module   => l_log_module);
42799 END IF;
42800 --
42801 EXCEPTION
42802   WHEN xla_exceptions_pkg.application_exception THEN
42803       RAISE;
42804   WHEN OTHERS THEN
42805        xla_exceptions_pkg.raise_message
42806            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_75');
42807 END AcctLineType_75;
42808 --
42809 
42810 ---------------------------------------
42811 --
42812 -- PRIVATE FUNCTION
42813 --         AcctLineType_76
42814 --
42815 ---------------------------------------
42816 PROCEDURE AcctLineType_76 (
42817   p_application_id        IN NUMBER
42818  ,p_event_id              IN NUMBER
42819  ,p_calculate_acctd_flag  IN VARCHAR2
42820  ,p_calculate_g_l_flag    IN VARCHAR2
42821  ,p_actual_flag           IN OUT VARCHAR2
42822  ,p_balance_type_code     OUT VARCHAR2
42823  ,p_gain_or_loss_ref      OUT VARCHAR2
42824  
42825 --Budget Account
42826  , p_source_11            IN NUMBER
42827 --Main Or Backing Code
42828  , p_source_13            IN VARCHAR2
42829 --Accounting Reversal Flag
42830  , p_source_16            IN VARCHAR2
42831 --PO Distribution Identifier
42832  , p_source_29            IN NUMBER
42833 --Entered Amount
42834  , p_source_33            IN NUMBER
42835 --Currency Code
42836  , p_source_34            IN VARCHAR2
42837 --Accounted Amount
42838  , p_source_35            IN NUMBER
42839 --Applied To Application Identifier
42840  , p_source_53            IN NUMBER
42841 --Applied To Distribution Link Type
42842  , p_source_54            IN VARCHAR2
42843 --Applied To Entity Code
42844  , p_source_55            IN VARCHAR2
42845 --Applied To Distribution Identifier 1
42846  , p_source_56            IN NUMBER
42847 --Applied To Header Identifier 1
42848  , p_source_57            IN NUMBER
42849 --Distribution Link Type
42850  , p_source_58            IN VARCHAR2
42851 --PO Encumbrance Upgrade Option
42852  , p_source_59            IN VARCHAR2
42853 --JFMIP Reference
42854  , p_source_60            IN VARCHAR2
42855 --PO Upgrade Encumbrance Type Identifier
42856  , p_source_61            IN NUMBER
42857 --PO Release Identifier
42858  , p_source_66            IN NUMBER
42859 )
42860 IS
42861 
42862 l_component_type              VARCHAR2(80);
42863 l_component_code              VARCHAR2(30);
42864 l_component_type_code         VARCHAR2(1);
42865 l_component_appl_id           INTEGER;
42866 l_amb_context_code            VARCHAR2(30);
42867 l_entity_code                 VARCHAR2(30);
42868 l_event_class_code            VARCHAR2(30);
42869 l_ae_header_id                NUMBER;
42870 l_event_type_code             VARCHAR2(30);
42871 l_line_definition_code        VARCHAR2(30);
42872 l_line_definition_owner_code  VARCHAR2(1);
42873 --
42874 -- adr variables
42875 l_segment                     VARCHAR2(30);
42876 l_ccid                        NUMBER;
42877 l_adr_transaction_coa_id      NUMBER;
42878 l_adr_accounting_coa_id       NUMBER;
42879 l_adr_flexfield_segment_code  VARCHAR2(30);
42880 l_adr_flex_value_set_id       NUMBER;
42881 l_adr_value_type_code         VARCHAR2(30);
42882 l_adr_value_combination_id    NUMBER;
42883 l_adr_value_segment_code      VARCHAR2(30);
42884 
42885 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42886 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42887 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42888 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42889 
42890 -- 4262811 Variables ------------------------------------------------------------------------------------------
42891 l_entered_amt_idx             NUMBER;
42892 l_accted_amt_idx              NUMBER;
42893 l_acc_rev_flag                VARCHAR2(1);
42894 l_accrual_line_num            NUMBER;
42895 l_tmp_amt                     NUMBER;
42896 l_acc_rev_natural_side_code   VARCHAR2(1);
42897 
42898 l_num_entries                 NUMBER;
42899 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42900 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42901 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42902 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42903 l_recog_line_1                NUMBER;
42904 l_recog_line_2                NUMBER;
42905 
42906 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42907 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42908 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42909 
42910 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42911 
42912 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42913 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42914 
42915 ---------------------------------------------------------------------------------------------------------------
42916 
42917 
42918 --
42919 -- bulk performance
42920 --
42921 l_balance_type_code           VARCHAR2(1);
42922 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42923 l_log_module                  VARCHAR2(240);
42924 
42925 --
42926 -- Upgrade strategy
42927 --
42928 l_actual_upg_option           VARCHAR2(1);
42929 l_enc_upg_option           VARCHAR2(1);
42930 
42931 --
42932 BEGIN
42933 --
42934 IF g_log_enabled THEN
42935       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
42936 END IF;
42937 --
42938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42939 
42940       trace
42941          (p_msg      => 'BEGIN of AcctLineType_76'
42942          ,p_level    => C_LEVEL_PROCEDURE
42943          ,p_module   => l_log_module);
42944 
42945 END IF;
42946 --
42947 l_component_type             := 'AMB_JLT';
42948 l_component_code             := 'REVERSE_RELEASE_ENCUMBRANCE_DR';
42949 l_component_type_code        := 'S';
42950 l_component_appl_id          :=  201;
42951 l_amb_context_code           := 'DEFAULT';
42952 l_entity_code                := 'RELEASE';
42953 l_event_class_code           := 'RELEASE';
42954 l_event_type_code            := 'RELEASE_ALL';
42955 l_line_definition_owner_code := 'S';
42956 l_line_definition_code       := 'RELEASE_ENC_ALL';
42957 --
42958 l_balance_type_code          := 'E';
42959 l_segment                     := NULL;
42960 l_ccid                        := NULL;
42961 l_adr_transaction_coa_id      := NULL;
42962 l_adr_accounting_coa_id       := NULL;
42963 l_adr_flexfield_segment_code  := NULL;
42964 l_adr_flex_value_set_id       := NULL;
42965 l_adr_value_type_code         := NULL;
42966 l_adr_value_combination_id    := NULL;
42967 l_adr_value_segment_code      := NULL;
42968 
42969 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
42970 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
42971 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
42972 l_budgetary_control_flag     := 'Y';
42973 
42974 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42975 l_bflow_applied_to_amt       := NULL; -- 5132302
42976 l_entered_amt_idx            := NULL;          -- 4262811
42977 l_accted_amt_idx             := NULL;          -- 4262811
42978 l_acc_rev_flag               := NULL;          -- 4262811
42979 l_accrual_line_num           := NULL;          -- 4262811
42980 l_tmp_amt                    := NULL;          -- 4262811
42981 --
42982  
42983 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42984     l_balance_type_code <> 'B' THEN
42985 IF (NVL(
42986 xla_ae_sources_pkg.GetSystemSourceChar(
42987    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42988  , p_source_type_code      => 'Y'
42989  , p_source_application_id =>  602
42990 ),'
42991 ') =  'RELEASE_CANCELLED' OR 
42992 NVL(
42993 xla_ae_sources_pkg.GetSystemSourceChar(
42994    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42995  , p_source_type_code      => 'Y'
42996  , p_source_application_id =>  602
42997 ),'
42998 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
42999 NVL(p_source_13,'
43000 ') =  'M'
43001  THEN 
43002 
43003    --
43004    XLA_AE_LINES_PKG.SetNewLine;
43005 
43006    p_balance_type_code          := l_balance_type_code;
43007    -- set the flag so later we will know whether the gain loss line needs to be created
43008    
43009    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43010      p_actual_flag :='A';
43011    END IF;
43012 
43013    --
43014    -- bulk performance
43015    --
43016    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43017                                       p_header_num   => 0); -- 4262811
43018    --
43019    -- set accounting line options
43020    --
43021    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43022            p_natural_side_code          => 'D'
43023          , p_gain_or_loss_flag          => 'N'
43024          , p_gl_transfer_mode_code      => 'S'
43025          , p_acct_entry_type_code       => 'E'
43026          , p_switch_side_flag           => 'N'
43027          , p_merge_duplicate_code       => 'N'
43028          );
43029    --
43030    l_acc_rev_natural_side_code := 'C';  -- 4262811
43031    -- 
43032    --
43033    -- set accounting line type info
43034    --
43035    xla_ae_lines_pkg.SetAcctLineType
43036       (p_component_type             => l_component_type
43037       ,p_event_type_code            => l_event_type_code
43038       ,p_line_definition_owner_code => l_line_definition_owner_code
43039       ,p_line_definition_code       => l_line_definition_code
43040       ,p_accounting_line_code       => l_component_code
43041       ,p_accounting_line_type_code  => l_component_type_code
43042       ,p_accounting_line_appl_id    => l_component_appl_id
43043       ,p_amb_context_code           => l_amb_context_code
43044       ,p_entity_code                => l_entity_code
43045       ,p_event_class_code           => l_event_class_code);
43046    --
43047    -- set accounting class
43048    --
43049    xla_ae_lines_pkg.SetAcctClass(
43050            p_accounting_class_code  => 'PURCHASE_ORDER'
43051          , p_ae_header_id           => l_ae_header_id
43052          );
43053 
43054    --
43055    -- set rounding class
43056    --
43057    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43058                       'PURCHASE_ORDER';
43059 
43060    --
43061    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43062    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43063    --
43064    -- bulk performance
43065    --
43066    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43067 
43068    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43069       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43070 
43071    -- 4955764
43072    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43073       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43074 
43075    -- 4458381 Public Sector Enh
43076    
43077    --
43078    -- set accounting attributes for the line type
43079    --
43080    l_entered_amt_idx := 23;
43081    l_accted_amt_idx  := 25;
43082    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43083    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43084    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
43085    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
43086    l_rec_acct_attrs.array_num_value(2)  := 
43087 xla_ae_sources_pkg.GetSystemSourceNum(
43088    p_source_code           => 'XLA_EVENT_APPL_ID'
43089  , p_source_type_code      => 'Y'
43090  , p_source_application_id =>  602
43091 );
43092    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
43093    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
43094    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
43095    l_rec_acct_attrs.array_char_value(4)  := 
43096 xla_ae_sources_pkg.GetSystemSourceChar(
43097    p_source_code           => 'XLA_ENTITY_CODE'
43098  , p_source_type_code      => 'Y'
43099  , p_source_application_id =>  602
43100 );
43101    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
43102    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
43103    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
43104    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_66);
43105    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
43106    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
43107    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43108    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
43109    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
43110    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
43111    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
43112    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
43113    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43114    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
43115    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
43116    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_29);
43117    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
43118    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
43119    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
43120    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
43121    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
43122    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
43123    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
43124    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
43125    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
43126    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
43127    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
43128    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
43129    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
43130    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
43131    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
43132    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
43133    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
43134    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
43135    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
43136    l_rec_acct_attrs.array_char_value(22)  := p_source_59;
43137    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
43138    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
43139    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
43140    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
43141    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
43142    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
43143    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
43144    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
43145    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
43146    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
43147    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
43148    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
43149    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
43150    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_66);
43151    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
43152    l_rec_acct_attrs.array_num_value(30)  := p_source_61;
43153    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
43154    l_rec_acct_attrs.array_num_value(31)  := p_source_61;
43155 
43156    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43157    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43158 
43159    ---------------------------------------------------------------------------------------------------------------
43160    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43161    ---------------------------------------------------------------------------------------------------------------
43162    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43163 
43164    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43165    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43166 
43167    IF xla_accounting_cache_pkg.GetValueChar
43168          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43169          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43170    AND l_bflow_method_code = 'PRIOR_ENTRY'
43171 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43172    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43173          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43174        )
43175    THEN
43176          xla_ae_lines_pkg.BflowUpgEntry
43177            (p_business_method_code    => l_bflow_method_code
43178            ,p_business_class_code     => l_bflow_class_code
43179            ,p_balance_type            => l_balance_type_code);
43180    ELSE
43181       NULL;
43182 XLA_AE_LINES_PKG.business_flow_validation(
43183                                 p_business_method_code     => l_bflow_method_code
43184                                ,p_business_class_code      => l_bflow_class_code
43185                                ,p_inherit_description_flag => l_inherit_desc_flag);
43186    END IF;
43187 
43188    --
43189    -- call analytical criteria
43190    --
43191    -- Inherited Analytical Criteria for business flow method of Prior Entry.
43192    --
43193    -- call description
43194    --
43195    -- No description or it is inherited.
43196    --
43197    -- call ADRs
43198    -- Bug 4922099
43199    --
43200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43201         (NVL(l_actual_upg_option, 'N') = 'O') OR
43202         (NVL(l_enc_upg_option, 'N') = 'O')
43203       )
43204    THEN
43205    NULL;
43206    --
43207    --
43208    
43209    --
43210    --
43211    END IF;
43212    --
43213    -- Bug 4922099
43214    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43215           (NVL(l_enc_upg_option, 'N') = 'O')
43216         ) AND
43217         (l_bflow_method_code = 'PRIOR_ENTRY')
43218       )
43219    THEN
43220       IF
43221       --
43222       1 = 1
43223       --
43224       THEN
43225       xla_accounting_err_pkg.build_message
43226                                     (p_appli_s_name            => 'XLA'
43227                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43228                                     ,p_token_1                 => 'LINE_NUMBER'
43229                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43230                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43231                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43232                                                                              l_component_type
43233                                                                             ,l_component_code
43234                                                                             ,l_component_type_code
43235                                                                             ,l_component_appl_id
43236                                                                             ,l_amb_context_code
43237                                                                             ,l_entity_code
43238                                                                             ,l_event_class_code
43239                                                                            )
43240                                     ,p_token_3                 => 'OWNER'
43241                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43242                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43243                                                                           ,p_lookup_code    => l_component_type_code
43244                                                                          )
43245                                     ,p_token_4                 => 'PRODUCT_NAME'
43246                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43247                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43248                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43249                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43250                                     ,p_ae_header_id            =>  NULL
43251                                        );
43252 
43253         IF (C_LEVEL_ERROR>= g_log_level) THEN
43254                  trace
43255                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43256                       ,p_level    => C_LEVEL_ERROR
43257                       ,p_module   => l_log_module);
43258         END IF;
43259       END IF;
43260    END IF;
43261    --
43262    --
43263    ------------------------------------------------------------------------------------------------
43264    -- 4219869 Business Flow
43265    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43266    -- Prior Entry.  Currently, the following code is always generated.
43267    ------------------------------------------------------------------------------------------------
43268    -- No ValidateCurrentLine for business flow method of Prior Entry
43269 
43270    ------------------------------------------------------------------------------------
43271    -- 4219869 Business Flow
43272    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43273    ------------------------------------------------------------------------------------
43274    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43275 
43276    ----------------------------------------------------------------------------------
43277    -- 4219869 Business Flow
43278    -- Update journal entry status -- Need to generate this within IF <condition>
43279    ----------------------------------------------------------------------------------
43280    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43281          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43282          ,p_balance_type_code => l_balance_type_code
43283          );
43284 
43285    -------------------------------------------------------------------------------------------
43286    -- 4262811 - Generate the Accrual Reversal lines
43287    -------------------------------------------------------------------------------------------
43288    BEGIN
43289       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43290                               (g_array_event(p_event_id).array_value_num('header_index'));
43291       IF l_acc_rev_flag IS NULL THEN
43292          l_acc_rev_flag := 'N';
43293       END IF;
43294    EXCEPTION
43295       WHEN OTHERS THEN
43296          l_acc_rev_flag := 'N';
43297    END;
43298    --
43299    IF (l_acc_rev_flag = 'Y') THEN
43300 
43301        -- 4645092  ------------------------------------------------------------------------------
43302        -- To allow MPA report to determine if it should generate report process
43303        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43304        ------------------------------------------------------------------------------------------
43305 
43306        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43307        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43308 
43309        --
43310        -- Update the line information that should be overwritten
43311        --
43312        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43313                                          p_header_num   => 1);
43314        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43315 
43316        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43317 
43318        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43319           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43320        END IF;
43321 
43322       --
43323       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43324       --
43325       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43326           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43327       ELSE
43328           ---------------------------------------------------------------------------------------------------
43329           -- 4262811a Switch Sign
43330           ---------------------------------------------------------------------------------------------------
43331           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43332           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43333                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43334           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43335                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43336           -- 5132302
43337           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43338                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43339 
43340       END IF;
43341 
43342       -- 4955764
43343       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43344       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43345 
43346 
43347       XLA_AE_LINES_PKG.ValidateCurrentLine;
43348       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43349 
43350       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43351                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43352                ,p_balance_type_code => l_balance_type_code);
43353 
43354    END IF;
43355 
43356    -----------------------------------------------------------------------------------------
43357    -- 4262811 Multiperiod Accounting
43358    -----------------------------------------------------------------------------------------
43359      -- No MPA option is assigned.
43360 
43361 
43362 END IF;
43363 END IF;
43364 --
43365 
43366 --
43367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43368    trace
43369       (p_msg      => 'END of AcctLineType_76'
43370       ,p_level    => C_LEVEL_PROCEDURE
43371       ,p_module   => l_log_module);
43372 END IF;
43373 --
43374 EXCEPTION
43375   WHEN xla_exceptions_pkg.application_exception THEN
43376       RAISE;
43377   WHEN OTHERS THEN
43378        xla_exceptions_pkg.raise_message
43379            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_76');
43380 END AcctLineType_76;
43381 --
43382 
43383 ---------------------------------------
43384 --
43385 -- PRIVATE FUNCTION
43386 --         AcctLineType_77
43387 --
43388 ---------------------------------------
43389 PROCEDURE AcctLineType_77 (
43390   p_application_id        IN NUMBER
43391  ,p_event_id              IN NUMBER
43392  ,p_calculate_acctd_flag  IN VARCHAR2
43393  ,p_calculate_g_l_flag    IN VARCHAR2
43394  ,p_actual_flag           IN OUT VARCHAR2
43395  ,p_balance_type_code     OUT VARCHAR2
43396  ,p_gain_or_loss_ref      OUT VARCHAR2
43397  
43398 --Budget Account
43399  , p_source_11            IN NUMBER
43400 --Main Or Backing Code
43401  , p_source_13            IN VARCHAR2
43402 --Accounting Reversal Flag
43403  , p_source_16            IN VARCHAR2
43404 --Entered Amount
43405  , p_source_33            IN NUMBER
43406 --Currency Code
43407  , p_source_34            IN VARCHAR2
43408 --Accounted Amount
43409  , p_source_35            IN NUMBER
43410 --Requisition Distribution Identifier
43411  , p_source_47            IN NUMBER
43412 --Applied To Application Identifier
43413  , p_source_53            IN NUMBER
43414 --Applied To Distribution Link Type
43415  , p_source_54            IN VARCHAR2
43416 --Applied To Entity Code
43417  , p_source_55            IN VARCHAR2
43418 --Applied To Distribution Identifier 1
43419  , p_source_56            IN NUMBER
43420 --Applied To Header Identifier 1
43421  , p_source_57            IN NUMBER
43422 --Distribution Link Type
43423  , p_source_58            IN VARCHAR2
43424 --JFMIP Reference
43425  , p_source_60            IN VARCHAR2
43426 --Adjustment Status
43427  , p_source_75            IN VARCHAR2
43428 --Requisition Identifier
43429  , p_source_76            IN NUMBER
43430 --Requisition Encumbrance Upgrade Option
43431  , p_source_77            IN VARCHAR2
43432 --Requisition Upgrade Encumbrance Type Identifier
43433  , p_source_78            IN NUMBER
43434 )
43435 IS
43436 
43437 l_component_type              VARCHAR2(80);
43438 l_component_code              VARCHAR2(30);
43439 l_component_type_code         VARCHAR2(1);
43440 l_component_appl_id           INTEGER;
43441 l_amb_context_code            VARCHAR2(30);
43442 l_entity_code                 VARCHAR2(30);
43443 l_event_class_code            VARCHAR2(30);
43444 l_ae_header_id                NUMBER;
43445 l_event_type_code             VARCHAR2(30);
43446 l_line_definition_code        VARCHAR2(30);
43447 l_line_definition_owner_code  VARCHAR2(1);
43448 --
43449 -- adr variables
43450 l_segment                     VARCHAR2(30);
43451 l_ccid                        NUMBER;
43452 l_adr_transaction_coa_id      NUMBER;
43453 l_adr_accounting_coa_id       NUMBER;
43454 l_adr_flexfield_segment_code  VARCHAR2(30);
43455 l_adr_flex_value_set_id       NUMBER;
43456 l_adr_value_type_code         VARCHAR2(30);
43457 l_adr_value_combination_id    NUMBER;
43458 l_adr_value_segment_code      VARCHAR2(30);
43459 
43460 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43461 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43462 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43463 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43464 
43465 -- 4262811 Variables ------------------------------------------------------------------------------------------
43466 l_entered_amt_idx             NUMBER;
43467 l_accted_amt_idx              NUMBER;
43468 l_acc_rev_flag                VARCHAR2(1);
43469 l_accrual_line_num            NUMBER;
43470 l_tmp_amt                     NUMBER;
43471 l_acc_rev_natural_side_code   VARCHAR2(1);
43472 
43473 l_num_entries                 NUMBER;
43474 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43475 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43476 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43477 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43478 l_recog_line_1                NUMBER;
43479 l_recog_line_2                NUMBER;
43480 
43481 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43482 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43483 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43484 
43485 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43486 
43487 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43488 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43489 
43490 ---------------------------------------------------------------------------------------------------------------
43491 
43492 
43493 --
43494 -- bulk performance
43495 --
43496 l_balance_type_code           VARCHAR2(1);
43497 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43498 l_log_module                  VARCHAR2(240);
43499 
43500 --
43501 -- Upgrade strategy
43502 --
43503 l_actual_upg_option           VARCHAR2(1);
43504 l_enc_upg_option           VARCHAR2(1);
43505 
43506 --
43507 BEGIN
43508 --
43509 IF g_log_enabled THEN
43510       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
43511 END IF;
43512 --
43513 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43514 
43515       trace
43516          (p_msg      => 'BEGIN of AcctLineType_77'
43517          ,p_level    => C_LEVEL_PROCEDURE
43518          ,p_module   => l_log_module);
43519 
43520 END IF;
43521 --
43522 l_component_type             := 'AMB_JLT';
43523 l_component_code             := 'REVERSE_REQ_ENCUMBRANCE_CR';
43524 l_component_type_code        := 'S';
43525 l_component_appl_id          :=  201;
43526 l_amb_context_code           := 'DEFAULT';
43527 l_entity_code                := 'REQUISITION';
43528 l_event_class_code           := 'REQUISITION';
43529 l_event_type_code            := 'REQUISITION_ALL';
43530 l_line_definition_owner_code := 'S';
43531 l_line_definition_code       := 'REQ_ENC_ALL';
43532 --
43533 l_balance_type_code          := 'E';
43534 l_segment                     := NULL;
43535 l_ccid                        := NULL;
43536 l_adr_transaction_coa_id      := NULL;
43537 l_adr_accounting_coa_id       := NULL;
43538 l_adr_flexfield_segment_code  := NULL;
43539 l_adr_flex_value_set_id       := NULL;
43540 l_adr_value_type_code         := NULL;
43541 l_adr_value_combination_id    := NULL;
43542 l_adr_value_segment_code      := NULL;
43543 
43544 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
43545 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
43546 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
43547 l_budgetary_control_flag     := 'Y';
43548 
43549 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43550 l_bflow_applied_to_amt       := NULL; -- 5132302
43551 l_entered_amt_idx            := NULL;          -- 4262811
43552 l_accted_amt_idx             := NULL;          -- 4262811
43553 l_acc_rev_flag               := NULL;          -- 4262811
43554 l_accrual_line_num           := NULL;          -- 4262811
43555 l_tmp_amt                    := NULL;          -- 4262811
43556 --
43557  
43558 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43559     l_balance_type_code <> 'B' THEN
43560 IF (NVL(
43561 xla_ae_sources_pkg.GetSystemSourceChar(
43562    p_source_code           => 'XLA_EVENT_TYPE_CODE'
43563  , p_source_type_code      => 'Y'
43564  , p_source_application_id =>  602
43565 ),'
43566 ') =  'REQ_UNRESERVED' OR 
43567 NVL(
43568 xla_ae_sources_pkg.GetSystemSourceChar(
43569    p_source_code           => 'XLA_EVENT_TYPE_CODE'
43570  , p_source_type_code      => 'Y'
43571  , p_source_application_id =>  602
43572 ),'
43573 ') =  'REQ_FINAL_CLOSED' OR 
43574 (NVL(
43575 xla_ae_sources_pkg.GetSystemSourceChar(
43576    p_source_code           => 'XLA_EVENT_TYPE_CODE'
43577  , p_source_type_code      => 'Y'
43578  , p_source_application_id =>  602
43579 ),'
43580 ') =  'REQ_ADJUSTED' AND 
43581 NVL(p_source_75,'
43582 ') =  'OLD') OR 
43583 NVL(
43584 xla_ae_sources_pkg.GetSystemSourceChar(
43585    p_source_code           => 'XLA_EVENT_TYPE_CODE'
43586  , p_source_type_code      => 'Y'
43587  , p_source_application_id =>  602
43588 ),'
43589 ') =  'REQ_REJECTED' OR 
43590 NVL(
43591 xla_ae_sources_pkg.GetSystemSourceChar(
43592    p_source_code           => 'XLA_EVENT_TYPE_CODE'
43593  , p_source_type_code      => 'Y'
43594  , p_source_application_id =>  602
43595 ),'
43596 ') =  'REQ_RETURNED') AND 
43597 NVL(p_source_13,'
43598 ') =  'M'
43599  THEN 
43600 
43601    --
43602    XLA_AE_LINES_PKG.SetNewLine;
43603 
43604    p_balance_type_code          := l_balance_type_code;
43605    -- set the flag so later we will know whether the gain loss line needs to be created
43606    
43607    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43608      p_actual_flag :='A';
43609    END IF;
43610 
43611    --
43612    -- bulk performance
43613    --
43614    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43615                                       p_header_num   => 0); -- 4262811
43616    --
43617    -- set accounting line options
43618    --
43619    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43620            p_natural_side_code          => 'C'
43621          , p_gain_or_loss_flag          => 'N'
43622          , p_gl_transfer_mode_code      => 'S'
43623          , p_acct_entry_type_code       => 'E'
43624          , p_switch_side_flag           => 'N'
43625          , p_merge_duplicate_code       => 'N'
43626          );
43627    --
43628    l_acc_rev_natural_side_code := 'D';  -- 4262811
43629    -- 
43630    --
43631    -- set accounting line type info
43632    --
43633    xla_ae_lines_pkg.SetAcctLineType
43634       (p_component_type             => l_component_type
43635       ,p_event_type_code            => l_event_type_code
43636       ,p_line_definition_owner_code => l_line_definition_owner_code
43637       ,p_line_definition_code       => l_line_definition_code
43638       ,p_accounting_line_code       => l_component_code
43639       ,p_accounting_line_type_code  => l_component_type_code
43640       ,p_accounting_line_appl_id    => l_component_appl_id
43641       ,p_amb_context_code           => l_amb_context_code
43642       ,p_entity_code                => l_entity_code
43643       ,p_event_class_code           => l_event_class_code);
43644    --
43645    -- set accounting class
43646    --
43647    xla_ae_lines_pkg.SetAcctClass(
43648            p_accounting_class_code  => 'REQUISITION'
43649          , p_ae_header_id           => l_ae_header_id
43650          );
43651 
43652    --
43653    -- set rounding class
43654    --
43655    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43656                       'REQUISITION';
43657 
43658    --
43659    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43660    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43661    --
43662    -- bulk performance
43663    --
43664    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43665 
43666    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43667       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43668 
43669    -- 4955764
43670    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43671       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43672 
43673    -- 4458381 Public Sector Enh
43674    
43675    --
43676    -- set accounting attributes for the line type
43677    --
43678    l_entered_amt_idx := 23;
43679    l_accted_amt_idx  := 25;
43680    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43681    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43682    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
43683    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
43684    l_rec_acct_attrs.array_num_value(2)  := 
43685 xla_ae_sources_pkg.GetSystemSourceNum(
43686    p_source_code           => 'XLA_EVENT_APPL_ID'
43687  , p_source_type_code      => 'Y'
43688  , p_source_application_id =>  602
43689 );
43690    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
43691    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
43692    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
43693    l_rec_acct_attrs.array_char_value(4)  := 
43694 xla_ae_sources_pkg.GetSystemSourceChar(
43695    p_source_code           => 'XLA_ENTITY_CODE'
43696  , p_source_type_code      => 'Y'
43697  , p_source_application_id =>  602
43698 );
43699    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
43700    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_47);
43701    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
43702    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_76);
43703    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
43704    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
43705    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43706    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
43707    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
43708    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
43709    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
43710    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
43711    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43712    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
43713    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
43714    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_47);
43715    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
43716    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
43717    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
43718    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
43719    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
43720    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
43721    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
43722    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
43723    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
43724    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
43725    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
43726    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
43727    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
43728    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
43729    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
43730    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
43731    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
43732    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
43733    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
43734    l_rec_acct_attrs.array_char_value(22)  := p_source_77;
43735    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
43736    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
43737    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
43738    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
43739    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
43740    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
43741    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
43742    l_rec_acct_attrs.array_char_value(26)  := p_source_60;
43743    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
43744    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_56);
43745    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
43746    l_rec_acct_attrs.array_char_value(28)  := p_source_54;
43747    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
43748    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_47);
43749    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
43750    l_rec_acct_attrs.array_num_value(30)  := p_source_78;
43751    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
43752    l_rec_acct_attrs.array_num_value(31)  := p_source_78;
43753 
43754    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43755    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43756 
43757    ---------------------------------------------------------------------------------------------------------------
43758    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43759    ---------------------------------------------------------------------------------------------------------------
43760    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43761 
43762    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43763    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43764 
43765    IF xla_accounting_cache_pkg.GetValueChar
43766          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43767          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43768    AND l_bflow_method_code = 'PRIOR_ENTRY'
43769 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43770    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43771          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43772        )
43773    THEN
43774          xla_ae_lines_pkg.BflowUpgEntry
43775            (p_business_method_code    => l_bflow_method_code
43776            ,p_business_class_code     => l_bflow_class_code
43777            ,p_balance_type            => l_balance_type_code);
43778    ELSE
43779       NULL;
43780 XLA_AE_LINES_PKG.business_flow_validation(
43781                                 p_business_method_code     => l_bflow_method_code
43782                                ,p_business_class_code      => l_bflow_class_code
43783                                ,p_inherit_description_flag => l_inherit_desc_flag);
43784    END IF;
43785 
43786    --
43787    -- call analytical criteria
43788    --
43789    -- Inherited Analytical Criteria for business flow method of Prior Entry.
43790    --
43791    -- call description
43792    --
43793    -- No description or it is inherited.
43794    --
43795    -- call ADRs
43796    -- Bug 4922099
43797    --
43798    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43799         (NVL(l_actual_upg_option, 'N') = 'O') OR
43800         (NVL(l_enc_upg_option, 'N') = 'O')
43801       )
43802    THEN
43803    NULL;
43804    --
43805    --
43806    
43807    --
43808    --
43809    END IF;
43810    --
43811    -- Bug 4922099
43812    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43813           (NVL(l_enc_upg_option, 'N') = 'O')
43814         ) AND
43815         (l_bflow_method_code = 'PRIOR_ENTRY')
43816       )
43817    THEN
43818       IF
43819       --
43820       1 = 1
43821       --
43822       THEN
43823       xla_accounting_err_pkg.build_message
43824                                     (p_appli_s_name            => 'XLA'
43825                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43826                                     ,p_token_1                 => 'LINE_NUMBER'
43827                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43828                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43829                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43830                                                                              l_component_type
43831                                                                             ,l_component_code
43832                                                                             ,l_component_type_code
43833                                                                             ,l_component_appl_id
43834                                                                             ,l_amb_context_code
43835                                                                             ,l_entity_code
43836                                                                             ,l_event_class_code
43837                                                                            )
43838                                     ,p_token_3                 => 'OWNER'
43839                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43840                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43841                                                                           ,p_lookup_code    => l_component_type_code
43842                                                                          )
43843                                     ,p_token_4                 => 'PRODUCT_NAME'
43844                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43845                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43846                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43847                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43848                                     ,p_ae_header_id            =>  NULL
43849                                        );
43850 
43851         IF (C_LEVEL_ERROR>= g_log_level) THEN
43852                  trace
43853                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43854                       ,p_level    => C_LEVEL_ERROR
43855                       ,p_module   => l_log_module);
43856         END IF;
43857       END IF;
43858    END IF;
43859    --
43860    --
43861    ------------------------------------------------------------------------------------------------
43862    -- 4219869 Business Flow
43863    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43864    -- Prior Entry.  Currently, the following code is always generated.
43865    ------------------------------------------------------------------------------------------------
43866    -- No ValidateCurrentLine for business flow method of Prior Entry
43867 
43868    ------------------------------------------------------------------------------------
43869    -- 4219869 Business Flow
43870    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43871    ------------------------------------------------------------------------------------
43872    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43873 
43874    ----------------------------------------------------------------------------------
43875    -- 4219869 Business Flow
43876    -- Update journal entry status -- Need to generate this within IF <condition>
43877    ----------------------------------------------------------------------------------
43878    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43879          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43880          ,p_balance_type_code => l_balance_type_code
43881          );
43882 
43883    -------------------------------------------------------------------------------------------
43884    -- 4262811 - Generate the Accrual Reversal lines
43885    -------------------------------------------------------------------------------------------
43886    BEGIN
43887       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43888                               (g_array_event(p_event_id).array_value_num('header_index'));
43889       IF l_acc_rev_flag IS NULL THEN
43890          l_acc_rev_flag := 'N';
43891       END IF;
43892    EXCEPTION
43893       WHEN OTHERS THEN
43894          l_acc_rev_flag := 'N';
43895    END;
43896    --
43897    IF (l_acc_rev_flag = 'Y') THEN
43898 
43899        -- 4645092  ------------------------------------------------------------------------------
43900        -- To allow MPA report to determine if it should generate report process
43901        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43902        ------------------------------------------------------------------------------------------
43903 
43904        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43905        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43906 
43907        --
43908        -- Update the line information that should be overwritten
43909        --
43910        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43911                                          p_header_num   => 1);
43912        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43913 
43914        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43915 
43916        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43917           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43918        END IF;
43919 
43920       --
43921       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43922       --
43923       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43924           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43925       ELSE
43926           ---------------------------------------------------------------------------------------------------
43927           -- 4262811a Switch Sign
43928           ---------------------------------------------------------------------------------------------------
43929           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43930           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43931                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43932           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43933                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43934           -- 5132302
43935           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43936                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43937 
43938       END IF;
43939 
43940       -- 4955764
43941       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43942       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43943 
43944 
43945       XLA_AE_LINES_PKG.ValidateCurrentLine;
43946       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43947 
43948       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43949                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43950                ,p_balance_type_code => l_balance_type_code);
43951 
43952    END IF;
43953 
43954    -----------------------------------------------------------------------------------------
43955    -- 4262811 Multiperiod Accounting
43956    -----------------------------------------------------------------------------------------
43957      -- No MPA option is assigned.
43958 
43959 
43960 END IF;
43961 END IF;
43962 --
43963 
43964 --
43965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43966    trace
43967       (p_msg      => 'END of AcctLineType_77'
43968       ,p_level    => C_LEVEL_PROCEDURE
43969       ,p_module   => l_log_module);
43970 END IF;
43971 --
43972 EXCEPTION
43973   WHEN xla_exceptions_pkg.application_exception THEN
43974       RAISE;
43975   WHEN OTHERS THEN
43976        xla_exceptions_pkg.raise_message
43977            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_77');
43978 END AcctLineType_77;
43979 --
43980 
43981 ---------------------------------------
43982 --
43983 -- PRIVATE FUNCTION
43984 --         AcctLineType_78
43985 --
43986 ---------------------------------------
43987 PROCEDURE AcctLineType_78 (
43988   p_application_id        IN NUMBER
43989  ,p_event_id              IN NUMBER
43990  ,p_calculate_acctd_flag  IN VARCHAR2
43991  ,p_calculate_g_l_flag    IN VARCHAR2
43992  ,p_actual_flag           IN OUT VARCHAR2
43993  ,p_balance_type_code     OUT VARCHAR2
43994  ,p_gain_or_loss_ref      OUT VARCHAR2
43995  
43996 --Budget Account
43997  , p_source_11            IN NUMBER
43998 --Accounting Reversal Flag
43999  , p_source_16            IN VARCHAR2
44000 --Entered Amount
44001  , p_source_33            IN NUMBER
44002 --Currency Code
44003  , p_source_34            IN VARCHAR2
44004 --Accounted Amount
44005  , p_source_35            IN NUMBER
44006 --Requisition Distribution Identifier
44007  , p_source_47            IN NUMBER
44008 --Applied To Application Identifier
44009  , p_source_53            IN NUMBER
44010 --Applied To Distribution Link Type
44011  , p_source_54            IN VARCHAR2
44012 --Applied To Entity Code
44013  , p_source_55            IN VARCHAR2
44014 --Applied To Distribution Identifier 1
44015  , p_source_56            IN NUMBER
44016 --Applied To Header Identifier 1
44017  , p_source_57            IN NUMBER
44018 --Distribution Link Type
44019  , p_source_58            IN VARCHAR2
44020 --Requisition Identifier
44021  , p_source_76            IN NUMBER
44022 --Requisition Encumbrance Upgrade Option
44023  , p_source_77            IN VARCHAR2
44024 --Requisition Upgrade Encumbrance Type Identifier
44025  , p_source_78            IN NUMBER
44026 )
44027 IS
44028 
44029 l_component_type              VARCHAR2(80);
44030 l_component_code              VARCHAR2(30);
44031 l_component_type_code         VARCHAR2(1);
44032 l_component_appl_id           INTEGER;
44033 l_amb_context_code            VARCHAR2(30);
44034 l_entity_code                 VARCHAR2(30);
44035 l_event_class_code            VARCHAR2(30);
44036 l_ae_header_id                NUMBER;
44037 l_event_type_code             VARCHAR2(30);
44038 l_line_definition_code        VARCHAR2(30);
44039 l_line_definition_owner_code  VARCHAR2(1);
44040 --
44041 -- adr variables
44042 l_segment                     VARCHAR2(30);
44043 l_ccid                        NUMBER;
44044 l_adr_transaction_coa_id      NUMBER;
44045 l_adr_accounting_coa_id       NUMBER;
44046 l_adr_flexfield_segment_code  VARCHAR2(30);
44047 l_adr_flex_value_set_id       NUMBER;
44048 l_adr_value_type_code         VARCHAR2(30);
44049 l_adr_value_combination_id    NUMBER;
44050 l_adr_value_segment_code      VARCHAR2(30);
44051 
44052 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44053 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44054 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44055 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44056 
44057 -- 4262811 Variables ------------------------------------------------------------------------------------------
44058 l_entered_amt_idx             NUMBER;
44059 l_accted_amt_idx              NUMBER;
44060 l_acc_rev_flag                VARCHAR2(1);
44061 l_accrual_line_num            NUMBER;
44062 l_tmp_amt                     NUMBER;
44063 l_acc_rev_natural_side_code   VARCHAR2(1);
44064 
44065 l_num_entries                 NUMBER;
44066 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44067 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44068 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44069 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44070 l_recog_line_1                NUMBER;
44071 l_recog_line_2                NUMBER;
44072 
44073 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44074 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44075 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44076 
44077 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44078 
44079 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44080 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44081 
44082 ---------------------------------------------------------------------------------------------------------------
44083 
44084 
44085 --
44086 -- bulk performance
44087 --
44088 l_balance_type_code           VARCHAR2(1);
44089 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44090 l_log_module                  VARCHAR2(240);
44091 
44092 --
44093 -- Upgrade strategy
44094 --
44095 l_actual_upg_option           VARCHAR2(1);
44096 l_enc_upg_option           VARCHAR2(1);
44097 
44098 --
44099 BEGIN
44100 --
44101 IF g_log_enabled THEN
44102       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
44103 END IF;
44104 --
44105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44106 
44107       trace
44108          (p_msg      => 'BEGIN of AcctLineType_78'
44109          ,p_level    => C_LEVEL_PROCEDURE
44110          ,p_module   => l_log_module);
44111 
44112 END IF;
44113 --
44114 l_component_type             := 'AMB_JLT';
44115 l_component_code             := 'REVERSE_REQ_ENCUMBRANCE_DR';
44116 l_component_type_code        := 'S';
44117 l_component_appl_id          :=  201;
44118 l_amb_context_code           := 'DEFAULT';
44119 l_entity_code                := 'REQUISITION';
44120 l_event_class_code           := 'REQUISITION';
44121 l_event_type_code            := 'REQUISITION_ALL';
44122 l_line_definition_owner_code := 'S';
44123 l_line_definition_code       := 'REQ_ENC_ALL';
44124 --
44125 l_balance_type_code          := 'E';
44126 l_segment                     := NULL;
44127 l_ccid                        := NULL;
44128 l_adr_transaction_coa_id      := NULL;
44129 l_adr_accounting_coa_id       := NULL;
44130 l_adr_flexfield_segment_code  := NULL;
44131 l_adr_flex_value_set_id       := NULL;
44132 l_adr_value_type_code         := NULL;
44133 l_adr_value_combination_id    := NULL;
44134 l_adr_value_segment_code      := NULL;
44135 
44136 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
44137 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
44138 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
44139 l_budgetary_control_flag     := 'Y';
44140 
44141 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44142 l_bflow_applied_to_amt       := NULL; -- 5132302
44143 l_entered_amt_idx            := NULL;          -- 4262811
44144 l_accted_amt_idx             := NULL;          -- 4262811
44145 l_acc_rev_flag               := NULL;          -- 4262811
44146 l_accrual_line_num           := NULL;          -- 4262811
44147 l_tmp_amt                    := NULL;          -- 4262811
44148 --
44149  
44150 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44151     l_balance_type_code <> 'B' THEN
44152 IF NVL(
44153 xla_ae_sources_pkg.GetSystemSourceChar(
44154    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44155  , p_source_type_code      => 'Y'
44156  , p_source_application_id =>  602
44157 ),'
44158 ') =  'REQ_CANCELLED'
44159  THEN 
44160 
44161    --
44162    XLA_AE_LINES_PKG.SetNewLine;
44163 
44164    p_balance_type_code          := l_balance_type_code;
44165    -- set the flag so later we will know whether the gain loss line needs to be created
44166    
44167    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44168      p_actual_flag :='A';
44169    END IF;
44170 
44171    --
44172    -- bulk performance
44173    --
44174    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44175                                       p_header_num   => 0); -- 4262811
44176    --
44177    -- set accounting line options
44178    --
44179    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44180            p_natural_side_code          => 'D'
44181          , p_gain_or_loss_flag          => 'N'
44182          , p_gl_transfer_mode_code      => 'S'
44183          , p_acct_entry_type_code       => 'E'
44184          , p_switch_side_flag           => 'N'
44185          , p_merge_duplicate_code       => 'N'
44186          );
44187    --
44188    l_acc_rev_natural_side_code := 'C';  -- 4262811
44189    -- 
44190    --
44191    -- set accounting line type info
44192    --
44193    xla_ae_lines_pkg.SetAcctLineType
44194       (p_component_type             => l_component_type
44195       ,p_event_type_code            => l_event_type_code
44196       ,p_line_definition_owner_code => l_line_definition_owner_code
44197       ,p_line_definition_code       => l_line_definition_code
44198       ,p_accounting_line_code       => l_component_code
44199       ,p_accounting_line_type_code  => l_component_type_code
44200       ,p_accounting_line_appl_id    => l_component_appl_id
44201       ,p_amb_context_code           => l_amb_context_code
44202       ,p_entity_code                => l_entity_code
44203       ,p_event_class_code           => l_event_class_code);
44204    --
44205    -- set accounting class
44206    --
44207    xla_ae_lines_pkg.SetAcctClass(
44208            p_accounting_class_code  => 'REQUISITION'
44209          , p_ae_header_id           => l_ae_header_id
44210          );
44211 
44212    --
44213    -- set rounding class
44214    --
44215    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44216                       'REQUISITION';
44217 
44218    --
44219    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44220    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44221    --
44222    -- bulk performance
44223    --
44224    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44225 
44226    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44227       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44228 
44229    -- 4955764
44230    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44231       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44232 
44233    -- 4458381 Public Sector Enh
44234    
44235    --
44236    -- set accounting attributes for the line type
44237    --
44238    l_entered_amt_idx := 23;
44239    l_accted_amt_idx  := 25;
44240    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44241    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44242    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
44243    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
44244    l_rec_acct_attrs.array_num_value(2)  := 
44245 xla_ae_sources_pkg.GetSystemSourceNum(
44246    p_source_code           => 'XLA_EVENT_APPL_ID'
44247  , p_source_type_code      => 'Y'
44248  , p_source_application_id =>  602
44249 );
44250    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
44251    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
44252    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
44253    l_rec_acct_attrs.array_char_value(4)  := 
44254 xla_ae_sources_pkg.GetSystemSourceChar(
44255    p_source_code           => 'XLA_ENTITY_CODE'
44256  , p_source_type_code      => 'Y'
44257  , p_source_application_id =>  602
44258 );
44259    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
44260    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_47);
44261    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
44262    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_76);
44263    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
44264    l_rec_acct_attrs.array_num_value(7)  := p_source_53;
44265    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44266    l_rec_acct_attrs.array_char_value(8)  := p_source_54;
44267    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
44268    l_rec_acct_attrs.array_char_value(9)  := p_source_55;
44269    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
44270    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_56);
44271    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44272    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_57);
44273    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
44274    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_47);
44275    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
44276    l_rec_acct_attrs.array_char_value(13)  := p_source_58;
44277    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
44278    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_11);
44279    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
44280    l_rec_acct_attrs.array_num_value(15)  := p_source_33;
44281    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
44282    l_rec_acct_attrs.array_char_value(16)  := p_source_34;
44283    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
44284    l_rec_acct_attrs.array_num_value(17)  := p_source_35;
44285    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
44286    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_11);
44287    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
44288    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
44289    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
44290    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
44291    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
44292    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
44293    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
44294    l_rec_acct_attrs.array_char_value(22)  := p_source_77;
44295    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
44296    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
44297    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
44298    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
44299    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
44300    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
44301    l_rec_acct_attrs.array_acct_attr_code(26) := 'REVERSED_DISTRIBUTION_ID1';
44302    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_56);
44303    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_TYPE';
44304    l_rec_acct_attrs.array_char_value(27)  := p_source_54;
44305    l_rec_acct_attrs.array_acct_attr_code(28) := 'UPG_CR_ENC_TYPE_ID';
44306    l_rec_acct_attrs.array_num_value(28)  := p_source_78;
44307    l_rec_acct_attrs.array_acct_attr_code(29) := 'UPG_DR_ENC_TYPE_ID';
44308    l_rec_acct_attrs.array_num_value(29)  := p_source_78;
44309 
44310    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44311    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44312 
44313    ---------------------------------------------------------------------------------------------------------------
44314    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44315    ---------------------------------------------------------------------------------------------------------------
44316    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44317 
44318    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44319    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44320 
44321    IF xla_accounting_cache_pkg.GetValueChar
44322          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44323          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44324    AND l_bflow_method_code = 'PRIOR_ENTRY'
44325 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44326    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44327          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44328        )
44329    THEN
44330          xla_ae_lines_pkg.BflowUpgEntry
44331            (p_business_method_code    => l_bflow_method_code
44332            ,p_business_class_code     => l_bflow_class_code
44333            ,p_balance_type            => l_balance_type_code);
44334    ELSE
44335       NULL;
44336 XLA_AE_LINES_PKG.business_flow_validation(
44337                                 p_business_method_code     => l_bflow_method_code
44338                                ,p_business_class_code      => l_bflow_class_code
44339                                ,p_inherit_description_flag => l_inherit_desc_flag);
44340    END IF;
44341 
44342    --
44343    -- call analytical criteria
44344    --
44345    -- Inherited Analytical Criteria for business flow method of Prior Entry.
44346    --
44347    -- call description
44348    --
44349    -- No description or it is inherited.
44350    --
44351    -- call ADRs
44352    -- Bug 4922099
44353    --
44354    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44355         (NVL(l_actual_upg_option, 'N') = 'O') OR
44356         (NVL(l_enc_upg_option, 'N') = 'O')
44357       )
44358    THEN
44359    NULL;
44360    --
44361    --
44362    
44363    --
44364    --
44365    END IF;
44366    --
44367    -- Bug 4922099
44368    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44369           (NVL(l_enc_upg_option, 'N') = 'O')
44370         ) AND
44371         (l_bflow_method_code = 'PRIOR_ENTRY')
44372       )
44373    THEN
44374       IF
44375       --
44376       1 = 1
44377       --
44378       THEN
44379       xla_accounting_err_pkg.build_message
44380                                     (p_appli_s_name            => 'XLA'
44381                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44382                                     ,p_token_1                 => 'LINE_NUMBER'
44383                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44384                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44385                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44386                                                                              l_component_type
44387                                                                             ,l_component_code
44388                                                                             ,l_component_type_code
44389                                                                             ,l_component_appl_id
44390                                                                             ,l_amb_context_code
44391                                                                             ,l_entity_code
44392                                                                             ,l_event_class_code
44393                                                                            )
44394                                     ,p_token_3                 => 'OWNER'
44395                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44396                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44397                                                                           ,p_lookup_code    => l_component_type_code
44398                                                                          )
44399                                     ,p_token_4                 => 'PRODUCT_NAME'
44400                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44401                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44402                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44403                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44404                                     ,p_ae_header_id            =>  NULL
44405                                        );
44406 
44407         IF (C_LEVEL_ERROR>= g_log_level) THEN
44408                  trace
44409                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44410                       ,p_level    => C_LEVEL_ERROR
44411                       ,p_module   => l_log_module);
44412         END IF;
44413       END IF;
44414    END IF;
44415    --
44416    --
44417    ------------------------------------------------------------------------------------------------
44418    -- 4219869 Business Flow
44419    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44420    -- Prior Entry.  Currently, the following code is always generated.
44421    ------------------------------------------------------------------------------------------------
44422    -- No ValidateCurrentLine for business flow method of Prior Entry
44423 
44424    ------------------------------------------------------------------------------------
44425    -- 4219869 Business Flow
44426    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44427    ------------------------------------------------------------------------------------
44428    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44429 
44430    ----------------------------------------------------------------------------------
44431    -- 4219869 Business Flow
44432    -- Update journal entry status -- Need to generate this within IF <condition>
44433    ----------------------------------------------------------------------------------
44434    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44435          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44436          ,p_balance_type_code => l_balance_type_code
44437          );
44438 
44439    -------------------------------------------------------------------------------------------
44440    -- 4262811 - Generate the Accrual Reversal lines
44441    -------------------------------------------------------------------------------------------
44442    BEGIN
44443       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44444                               (g_array_event(p_event_id).array_value_num('header_index'));
44445       IF l_acc_rev_flag IS NULL THEN
44446          l_acc_rev_flag := 'N';
44447       END IF;
44448    EXCEPTION
44449       WHEN OTHERS THEN
44450          l_acc_rev_flag := 'N';
44451    END;
44452    --
44453    IF (l_acc_rev_flag = 'Y') THEN
44454 
44455        -- 4645092  ------------------------------------------------------------------------------
44456        -- To allow MPA report to determine if it should generate report process
44457        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44458        ------------------------------------------------------------------------------------------
44459 
44460        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44461        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44462 
44463        --
44464        -- Update the line information that should be overwritten
44465        --
44466        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44467                                          p_header_num   => 1);
44468        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44469 
44470        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44471 
44472        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44473           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44474        END IF;
44475 
44476       --
44477       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44478       --
44479       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44480           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44481       ELSE
44482           ---------------------------------------------------------------------------------------------------
44483           -- 4262811a Switch Sign
44484           ---------------------------------------------------------------------------------------------------
44485           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44486           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44487                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44488           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44489                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44490           -- 5132302
44491           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44492                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44493 
44494       END IF;
44495 
44496       -- 4955764
44497       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44498       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44499 
44500 
44501       XLA_AE_LINES_PKG.ValidateCurrentLine;
44502       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44503 
44504       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44505                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44506                ,p_balance_type_code => l_balance_type_code);
44507 
44508    END IF;
44509 
44510    -----------------------------------------------------------------------------------------
44511    -- 4262811 Multiperiod Accounting
44512    -----------------------------------------------------------------------------------------
44513      -- No MPA option is assigned.
44514 
44515 
44516 END IF;
44517 END IF;
44518 --
44519 
44520 --
44521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44522    trace
44523       (p_msg      => 'END of AcctLineType_78'
44524       ,p_level    => C_LEVEL_PROCEDURE
44525       ,p_module   => l_log_module);
44526 END IF;
44527 --
44528 EXCEPTION
44529   WHEN xla_exceptions_pkg.application_exception THEN
44530       RAISE;
44531   WHEN OTHERS THEN
44532        xla_exceptions_pkg.raise_message
44533            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_78');
44534 END AcctLineType_78;
44535 --
44536 
44537 ---------------------------------------
44538 --
44539 -- PRIVATE FUNCTION
44540 --         AcctLineType_79
44541 --
44542 ---------------------------------------
44543 PROCEDURE AcctLineType_79 (
44544   p_application_id        IN NUMBER
44545  ,p_event_id              IN NUMBER
44546  ,p_calculate_acctd_flag  IN VARCHAR2
44547  ,p_calculate_g_l_flag    IN VARCHAR2
44548  ,p_actual_flag           IN OUT VARCHAR2
44549  ,p_balance_type_code     OUT VARCHAR2
44550  ,p_gain_or_loss_ref      OUT VARCHAR2
44551  
44552 --Project Name
44553  , p_source_3            IN VARCHAR2
44554 --Task Name
44555  , p_source_4            IN VARCHAR2
44556 --Project Expenditure Organization Identifier
44557  , p_source_5            IN NUMBER
44558 --Expenditure Type
44559  , p_source_6            IN VARCHAR2
44560 --Document Type
44561  , p_source_9            IN VARCHAR2
44562 --Main Or Backing Code
44563  , p_source_13            IN VARCHAR2
44564 --Burden Record Identifier
44565  , p_source_14            IN VARCHAR2
44566  , p_source_14_meaning    IN VARCHAR2
44567 --Burden Amount Display Method
44568  , p_source_15            IN VARCHAR2
44569 --Accounting Reversal Flag
44570  , p_source_16            IN VARCHAR2
44571 --Allocated to Application Identifier
44572  , p_source_17            IN NUMBER
44573 --Allocated to Distribution Type
44574  , p_source_18            IN VARCHAR2
44575 --Allocated to Entity Code
44576  , p_source_19            IN VARCHAR2
44577 --Allocated to First Distribution Identifier
44578  , p_source_20            IN NUMBER
44579 --Allocated to First System Transaction Identifier
44580  , p_source_21            IN NUMBER
44581 --Purchase Order Burden Applied to Application Identifier
44582  , p_source_23            IN NUMBER
44583 --PO Distribution Type
44584  , p_source_24            IN VARCHAR2
44585 --Purchase Order Burden Applied to Entity Code
44586  , p_source_25            IN VARCHAR2
44587 --Purchase Order Burden Applied to First Distribution Identifier
44588  , p_source_26            IN NUMBER
44589 --Purchase Order Burden Applied to First System Transaction Identifier
44590  , p_source_27            IN NUMBER
44591 --Purchase Order Burden Applied to Second Distribution Identifier
44592  , p_source_28            IN VARCHAR2
44593 --PO Distribution Identifier
44594  , p_source_29            IN NUMBER
44595 --Line Type Name
44596  , p_source_30            IN VARCHAR2
44597 --Encumbrance Upgrade Credit Accounting Class
44598  , p_source_31            IN VARCHAR2
44599 --Encumbrance Upgrade Credit Account
44600  , p_source_32            IN NUMBER
44601 --Entered Amount
44602  , p_source_33            IN NUMBER
44603 --Currency Code
44604  , p_source_34            IN VARCHAR2
44605 --Accounted Amount
44606  , p_source_35            IN NUMBER
44607 --Encumbrance Upgrade Debit Accounting Class
44608  , p_source_36            IN VARCHAR2
44609 --Encumbrance Upgrade Debit Account
44610  , p_source_37            IN NUMBER
44611 --Use Encumbrances Upgrade Attributes Flag
44612  , p_source_38            IN VARCHAR2
44613 --Encumbrance Upgrade Credit Encumbrance Type
44614  , p_source_39            IN NUMBER
44615 --Encumbrance Upgrade Debit Encumbrance Type
44616  , p_source_40            IN NUMBER
44617 )
44618 IS
44619 
44620 l_component_type              VARCHAR2(80);
44621 l_component_code              VARCHAR2(30);
44622 l_component_type_code         VARCHAR2(1);
44623 l_component_appl_id           INTEGER;
44624 l_amb_context_code            VARCHAR2(30);
44625 l_entity_code                 VARCHAR2(30);
44626 l_event_class_code            VARCHAR2(30);
44627 l_ae_header_id                NUMBER;
44628 l_event_type_code             VARCHAR2(30);
44629 l_line_definition_code        VARCHAR2(30);
44630 l_line_definition_owner_code  VARCHAR2(1);
44631 --
44632 -- adr variables
44633 l_segment                     VARCHAR2(30);
44634 l_ccid                        NUMBER;
44635 l_adr_transaction_coa_id      NUMBER;
44636 l_adr_accounting_coa_id       NUMBER;
44637 l_adr_flexfield_segment_code  VARCHAR2(30);
44638 l_adr_flex_value_set_id       NUMBER;
44639 l_adr_value_type_code         VARCHAR2(30);
44640 l_adr_value_combination_id    NUMBER;
44641 l_adr_value_segment_code      VARCHAR2(30);
44642 
44643 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44644 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44645 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44646 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44647 
44648 -- 4262811 Variables ------------------------------------------------------------------------------------------
44649 l_entered_amt_idx             NUMBER;
44650 l_accted_amt_idx              NUMBER;
44651 l_acc_rev_flag                VARCHAR2(1);
44652 l_accrual_line_num            NUMBER;
44653 l_tmp_amt                     NUMBER;
44654 l_acc_rev_natural_side_code   VARCHAR2(1);
44655 
44656 l_num_entries                 NUMBER;
44657 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44658 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44659 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44660 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44661 l_recog_line_1                NUMBER;
44662 l_recog_line_2                NUMBER;
44663 
44664 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44665 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44666 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44667 
44668 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44669 
44670 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44671 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44672 
44673 ---------------------------------------------------------------------------------------------------------------
44674 
44675 
44676 --
44677 -- bulk performance
44678 --
44679 l_balance_type_code           VARCHAR2(1);
44680 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44681 l_log_module                  VARCHAR2(240);
44682 
44683 --
44684 -- Upgrade strategy
44685 --
44686 l_actual_upg_option           VARCHAR2(1);
44687 l_enc_upg_option           VARCHAR2(1);
44688 
44689 --
44690 BEGIN
44691 --
44692 IF g_log_enabled THEN
44693       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
44694 END IF;
44695 --
44696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44697 
44698       trace
44699          (p_msg      => 'BEGIN of AcctLineType_79'
44700          ,p_level    => C_LEVEL_PROCEDURE
44701          ,p_module   => l_log_module);
44702 
44703 END IF;
44704 --
44705 l_component_type             := 'AMB_JLT';
44706 l_component_code             := 'UNRESERVE_BURDENED_PO_ENC';
44707 l_component_type_code        := 'S';
44708 l_component_appl_id          :=  201;
44709 l_amb_context_code           := 'DEFAULT';
44710 l_entity_code                := 'PURCHASE_ORDER';
44711 l_event_class_code           := 'PO_BURDEN';
44712 l_event_type_code            := 'PO_BURDEN_ALL';
44713 l_line_definition_owner_code := 'S';
44714 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
44715 --
44716 l_balance_type_code          := 'E';
44717 l_segment                     := NULL;
44718 l_ccid                        := NULL;
44719 l_adr_transaction_coa_id      := NULL;
44720 l_adr_accounting_coa_id       := NULL;
44721 l_adr_flexfield_segment_code  := NULL;
44722 l_adr_flex_value_set_id       := NULL;
44723 l_adr_value_type_code         := NULL;
44724 l_adr_value_combination_id    := NULL;
44725 l_adr_value_segment_code      := NULL;
44726 
44727 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
44728 l_bflow_class_code           := 'PO_PA_BURDENED_ENC';    -- 4219869 Business Flow
44729 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44730 l_budgetary_control_flag     := 'Y';
44731 
44732 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44733 l_bflow_applied_to_amt       := NULL; -- 5132302
44734 l_entered_amt_idx            := NULL;          -- 4262811
44735 l_accted_amt_idx             := NULL;          -- 4262811
44736 l_acc_rev_flag               := NULL;          -- 4262811
44737 l_accrual_line_num           := NULL;          -- 4262811
44738 l_tmp_amt                    := NULL;          -- 4262811
44739 --
44740  
44741 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44742     l_balance_type_code <> 'B' THEN
44743 IF (NVL(
44744 xla_ae_sources_pkg.GetSystemSourceChar(
44745    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44746  , p_source_type_code      => 'Y'
44747  , p_source_application_id =>  602
44748 ),'
44749 ') =  'PO_BURDEN_FINAL_CLOSED' OR 
44750 NVL(
44751 xla_ae_sources_pkg.GetSystemSourceChar(
44752    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44753  , p_source_type_code      => 'Y'
44754  , p_source_application_id =>  602
44755 ),'
44756 ') =  'PO_BURDEN_REJECTED' OR 
44757 NVL(
44758 xla_ae_sources_pkg.GetSystemSourceChar(
44759    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44760  , p_source_type_code      => 'Y'
44761  , p_source_application_id =>  602
44762 ),'
44763 ') =  'PO_BURDEN_UNRESERVED' OR 
44764 NVL(
44765 xla_ae_sources_pkg.GetSystemSourceChar(
44766    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44767  , p_source_type_code      => 'Y'
44768  , p_source_application_id =>  602
44769 ),'
44770 ') =  'PO_BURDEN_INV_CANCELLED') AND 
44771 NVL(p_source_13,'
44772 ') =  'M' AND 
44773 (NVL(p_source_14,'
44774 ') =  'N' OR 
44775 NVL(p_source_14,'
44776 ') =  'O') AND 
44777 NVL(p_source_9,'
44778 ') =  'PO' AND 
44779 NVL(p_source_15,'
44780 ') =  'S'
44781  THEN 
44782 
44783    --
44784    XLA_AE_LINES_PKG.SetNewLine;
44785 
44786    p_balance_type_code          := l_balance_type_code;
44787    -- set the flag so later we will know whether the gain loss line needs to be created
44788    
44789    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44790      p_actual_flag :='A';
44791    END IF;
44792 
44793    --
44794    -- bulk performance
44795    --
44796    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44797                                       p_header_num   => 0); -- 4262811
44798    --
44799    -- set accounting line options
44800    --
44801    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44802            p_natural_side_code          => 'C'
44803          , p_gain_or_loss_flag          => 'N'
44804          , p_gl_transfer_mode_code      => 'S'
44805          , p_acct_entry_type_code       => 'E'
44806          , p_switch_side_flag           => 'N'
44807          , p_merge_duplicate_code       => 'N'
44808          );
44809    --
44810    l_acc_rev_natural_side_code := 'D';  -- 4262811
44811    -- 
44812    --
44813    -- set accounting line type info
44814    --
44815    xla_ae_lines_pkg.SetAcctLineType
44816       (p_component_type             => l_component_type
44817       ,p_event_type_code            => l_event_type_code
44818       ,p_line_definition_owner_code => l_line_definition_owner_code
44819       ,p_line_definition_code       => l_line_definition_code
44820       ,p_accounting_line_code       => l_component_code
44821       ,p_accounting_line_type_code  => l_component_type_code
44822       ,p_accounting_line_appl_id    => l_component_appl_id
44823       ,p_amb_context_code           => l_amb_context_code
44824       ,p_entity_code                => l_entity_code
44825       ,p_event_class_code           => l_event_class_code);
44826    --
44827    -- set accounting class
44828    --
44829    xla_ae_lines_pkg.SetAcctClass(
44830            p_accounting_class_code  => 'PO_PA_BURDENED'
44831          , p_ae_header_id           => l_ae_header_id
44832          );
44833 
44834    --
44835    -- set rounding class
44836    --
44837    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44838                       'PO_PA_BURDENED';
44839 
44840    --
44841    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44842    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44843    --
44844    -- bulk performance
44845    --
44846    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44847 
44848    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44849       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44850 
44851    -- 4955764
44852    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44853       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44854 
44855    -- 4458381 Public Sector Enh
44856    
44857    --
44858    -- set accounting attributes for the line type
44859    --
44860    l_entered_amt_idx := 27;
44861    l_accted_amt_idx  := 29;
44862    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44863    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44864    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
44865    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
44866    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
44867    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
44868    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
44869    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
44870    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
44871    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
44872    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
44873    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
44874    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
44875    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
44876    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
44877    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44878    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
44879    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
44880    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
44881    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
44882    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
44883    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44884    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
44885    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
44886    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
44887    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
44888    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
44889    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
44890    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
44891    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
44892    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
44893    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
44894    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
44895    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
44896    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
44897    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
44898    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
44899    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
44900    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
44901    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
44902    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
44903    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
44904    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
44905    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
44906    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
44907    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
44908    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
44909    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
44910    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
44911    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
44912    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
44913    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
44914    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
44915    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
44916    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
44917    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
44918    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
44919    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
44920    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
44921    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
44922    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
44923    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
44924    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
44925    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
44926    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
44927    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
44928    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
44929    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
44930    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
44931 
44932    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44933    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44934 
44935    ---------------------------------------------------------------------------------------------------------------
44936    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44937    ---------------------------------------------------------------------------------------------------------------
44938    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44939 
44940    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44941    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44942 
44943    IF xla_accounting_cache_pkg.GetValueChar
44944          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44945          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44946    AND l_bflow_method_code = 'PRIOR_ENTRY'
44947 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44948    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44949          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44950        )
44951    THEN
44952          xla_ae_lines_pkg.BflowUpgEntry
44953            (p_business_method_code    => l_bflow_method_code
44954            ,p_business_class_code     => l_bflow_class_code
44955            ,p_balance_type            => l_balance_type_code);
44956    ELSE
44957       NULL;
44958 XLA_AE_LINES_PKG.business_flow_validation(
44959                                 p_business_method_code     => l_bflow_method_code
44960                                ,p_business_class_code      => l_bflow_class_code
44961                                ,p_inherit_description_flag => l_inherit_desc_flag);
44962    END IF;
44963 
44964    --
44965    -- call analytical criteria
44966    --
44967    -- Inherited Analytical Criteria for business flow method of Prior Entry.
44968    --
44969    -- call description
44970    --
44971    
44972 xla_ae_lines_pkg.SetLineDescription(
44973    p_ae_header_id => l_ae_header_id
44974   ,p_description  => Description_2 (
44975      p_application_id         => p_application_id
44976    , p_ae_header_id           => l_ae_header_id 
44977 , p_source_3 => p_source_3
44978 , p_source_4 => p_source_4
44979 , p_source_5 => p_source_5
44980 , p_source_6 => p_source_6
44981    )
44982 );
44983 
44984 
44985    --
44986    -- call ADRs
44987    -- Bug 4922099
44988    --
44989    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44990         (NVL(l_actual_upg_option, 'N') = 'O') OR
44991         (NVL(l_enc_upg_option, 'N') = 'O')
44992       )
44993    THEN
44994    NULL;
44995    --
44996    --
44997    
44998    --
44999    --
45000    END IF;
45001    --
45002    -- Bug 4922099
45003    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45004           (NVL(l_enc_upg_option, 'N') = 'O')
45005         ) AND
45006         (l_bflow_method_code = 'PRIOR_ENTRY')
45007       )
45008    THEN
45009       IF
45010       --
45011       1 = 1
45012       --
45013       THEN
45014       xla_accounting_err_pkg.build_message
45015                                     (p_appli_s_name            => 'XLA'
45016                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45017                                     ,p_token_1                 => 'LINE_NUMBER'
45018                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45019                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45020                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45021                                                                              l_component_type
45022                                                                             ,l_component_code
45023                                                                             ,l_component_type_code
45024                                                                             ,l_component_appl_id
45025                                                                             ,l_amb_context_code
45026                                                                             ,l_entity_code
45027                                                                             ,l_event_class_code
45028                                                                            )
45029                                     ,p_token_3                 => 'OWNER'
45030                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45031                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45032                                                                           ,p_lookup_code    => l_component_type_code
45033                                                                          )
45034                                     ,p_token_4                 => 'PRODUCT_NAME'
45035                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45036                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45037                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45038                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45039                                     ,p_ae_header_id            =>  NULL
45040                                        );
45041 
45042         IF (C_LEVEL_ERROR>= g_log_level) THEN
45043                  trace
45044                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45045                       ,p_level    => C_LEVEL_ERROR
45046                       ,p_module   => l_log_module);
45047         END IF;
45048       END IF;
45049    END IF;
45050    --
45051    --
45052    ------------------------------------------------------------------------------------------------
45053    -- 4219869 Business Flow
45054    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45055    -- Prior Entry.  Currently, the following code is always generated.
45056    ------------------------------------------------------------------------------------------------
45057    -- No ValidateCurrentLine for business flow method of Prior Entry
45058 
45059    ------------------------------------------------------------------------------------
45060    -- 4219869 Business Flow
45061    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45062    ------------------------------------------------------------------------------------
45063    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45064 
45065    ----------------------------------------------------------------------------------
45066    -- 4219869 Business Flow
45067    -- Update journal entry status -- Need to generate this within IF <condition>
45068    ----------------------------------------------------------------------------------
45069    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45070          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45071          ,p_balance_type_code => l_balance_type_code
45072          );
45073 
45074    -------------------------------------------------------------------------------------------
45075    -- 4262811 - Generate the Accrual Reversal lines
45076    -------------------------------------------------------------------------------------------
45077    BEGIN
45078       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45079                               (g_array_event(p_event_id).array_value_num('header_index'));
45080       IF l_acc_rev_flag IS NULL THEN
45081          l_acc_rev_flag := 'N';
45082       END IF;
45083    EXCEPTION
45084       WHEN OTHERS THEN
45085          l_acc_rev_flag := 'N';
45086    END;
45087    --
45088    IF (l_acc_rev_flag = 'Y') THEN
45089 
45090        -- 4645092  ------------------------------------------------------------------------------
45091        -- To allow MPA report to determine if it should generate report process
45092        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45093        ------------------------------------------------------------------------------------------
45094 
45095        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45096        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45097 
45098        --
45099        -- Update the line information that should be overwritten
45100        --
45101        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45102                                          p_header_num   => 1);
45103        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45104 
45105        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45106 
45107        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45108           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45109        END IF;
45110 
45111       --
45112       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45113       --
45114       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45115           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45116       ELSE
45117           ---------------------------------------------------------------------------------------------------
45118           -- 4262811a Switch Sign
45119           ---------------------------------------------------------------------------------------------------
45120           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45121           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45122                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45123           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45124                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45125           -- 5132302
45126           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45127                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45128 
45129       END IF;
45130 
45131       -- 4955764
45132       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45133       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45134 
45135 
45136       XLA_AE_LINES_PKG.ValidateCurrentLine;
45137       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45138 
45139       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45140                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45141                ,p_balance_type_code => l_balance_type_code);
45142 
45143    END IF;
45144 
45145    -----------------------------------------------------------------------------------------
45146    -- 4262811 Multiperiod Accounting
45147    -----------------------------------------------------------------------------------------
45148      -- No MPA option is assigned.
45149 
45150 
45151 END IF;
45152 END IF;
45153 --
45154 
45155 --
45156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45157    trace
45158       (p_msg      => 'END of AcctLineType_79'
45159       ,p_level    => C_LEVEL_PROCEDURE
45160       ,p_module   => l_log_module);
45161 END IF;
45162 --
45163 EXCEPTION
45164   WHEN xla_exceptions_pkg.application_exception THEN
45165       RAISE;
45166   WHEN OTHERS THEN
45167        xla_exceptions_pkg.raise_message
45168            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_79');
45169 END AcctLineType_79;
45170 --
45171 
45172 ---------------------------------------
45173 --
45174 -- PRIVATE FUNCTION
45175 --         AcctLineType_80
45176 --
45177 ---------------------------------------
45178 PROCEDURE AcctLineType_80 (
45179   p_application_id        IN NUMBER
45180  ,p_event_id              IN NUMBER
45181  ,p_calculate_acctd_flag  IN VARCHAR2
45182  ,p_calculate_g_l_flag    IN VARCHAR2
45183  ,p_actual_flag           IN OUT VARCHAR2
45184  ,p_balance_type_code     OUT VARCHAR2
45185  ,p_gain_or_loss_ref      OUT VARCHAR2
45186  
45187 --Project Name
45188  , p_source_3            IN VARCHAR2
45189 --Task Name
45190  , p_source_4            IN VARCHAR2
45191 --Project Expenditure Organization Identifier
45192  , p_source_5            IN NUMBER
45193 --Expenditure Type
45194  , p_source_6            IN VARCHAR2
45195 --Document Type
45196  , p_source_9            IN VARCHAR2
45197 --Main Or Backing Code
45198  , p_source_13            IN VARCHAR2
45199 --Burden Record Identifier
45200  , p_source_14            IN VARCHAR2
45201  , p_source_14_meaning    IN VARCHAR2
45202 --Burden Amount Display Method
45203  , p_source_15            IN VARCHAR2
45204 --Accounting Reversal Flag
45205  , p_source_16            IN VARCHAR2
45206 --Allocated to Application Identifier
45207  , p_source_17            IN NUMBER
45208 --Allocated to Distribution Type
45209  , p_source_18            IN VARCHAR2
45210 --Allocated to Entity Code
45211  , p_source_19            IN VARCHAR2
45212 --Allocated to First Distribution Identifier
45213  , p_source_20            IN NUMBER
45214 --Allocated to First System Transaction Identifier
45215  , p_source_21            IN NUMBER
45216 --Allocated to Second Distribution Identifier
45217  , p_source_22            IN VARCHAR2
45218 --Purchase Order Burden Applied to Application Identifier
45219  , p_source_23            IN NUMBER
45220 --PO Distribution Type
45221  , p_source_24            IN VARCHAR2
45222 --Purchase Order Burden Applied to Entity Code
45223  , p_source_25            IN VARCHAR2
45224 --Purchase Order Burden Applied to First Distribution Identifier
45225  , p_source_26            IN NUMBER
45226 --Purchase Order Burden Applied to First System Transaction Identifier
45227  , p_source_27            IN NUMBER
45228 --Purchase Order Burden Applied to Second Distribution Identifier
45229  , p_source_28            IN VARCHAR2
45230 --PO Distribution Identifier
45231  , p_source_29            IN NUMBER
45232 --Line Type Name
45233  , p_source_30            IN VARCHAR2
45234 --Encumbrance Upgrade Credit Accounting Class
45235  , p_source_31            IN VARCHAR2
45236 --Encumbrance Upgrade Credit Account
45237  , p_source_32            IN NUMBER
45238 --Entered Amount
45239  , p_source_33            IN NUMBER
45240 --Currency Code
45241  , p_source_34            IN VARCHAR2
45242 --Accounted Amount
45243  , p_source_35            IN NUMBER
45244 --Encumbrance Upgrade Debit Accounting Class
45245  , p_source_36            IN VARCHAR2
45246 --Encumbrance Upgrade Debit Account
45247  , p_source_37            IN NUMBER
45248 --Use Encumbrances Upgrade Attributes Flag
45249  , p_source_38            IN VARCHAR2
45250 --Encumbrance Upgrade Credit Encumbrance Type
45251  , p_source_39            IN NUMBER
45252 --Encumbrance Upgrade Debit Encumbrance Type
45253  , p_source_40            IN NUMBER
45254 )
45255 IS
45256 
45257 l_component_type              VARCHAR2(80);
45258 l_component_code              VARCHAR2(30);
45259 l_component_type_code         VARCHAR2(1);
45260 l_component_appl_id           INTEGER;
45261 l_amb_context_code            VARCHAR2(30);
45262 l_entity_code                 VARCHAR2(30);
45263 l_event_class_code            VARCHAR2(30);
45264 l_ae_header_id                NUMBER;
45265 l_event_type_code             VARCHAR2(30);
45266 l_line_definition_code        VARCHAR2(30);
45267 l_line_definition_owner_code  VARCHAR2(1);
45268 --
45269 -- adr variables
45270 l_segment                     VARCHAR2(30);
45271 l_ccid                        NUMBER;
45272 l_adr_transaction_coa_id      NUMBER;
45273 l_adr_accounting_coa_id       NUMBER;
45274 l_adr_flexfield_segment_code  VARCHAR2(30);
45275 l_adr_flex_value_set_id       NUMBER;
45276 l_adr_value_type_code         VARCHAR2(30);
45277 l_adr_value_combination_id    NUMBER;
45278 l_adr_value_segment_code      VARCHAR2(30);
45279 
45280 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45281 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45282 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45283 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45284 
45285 -- 4262811 Variables ------------------------------------------------------------------------------------------
45286 l_entered_amt_idx             NUMBER;
45287 l_accted_amt_idx              NUMBER;
45288 l_acc_rev_flag                VARCHAR2(1);
45289 l_accrual_line_num            NUMBER;
45290 l_tmp_amt                     NUMBER;
45291 l_acc_rev_natural_side_code   VARCHAR2(1);
45292 
45293 l_num_entries                 NUMBER;
45294 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45295 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45296 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45297 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45298 l_recog_line_1                NUMBER;
45299 l_recog_line_2                NUMBER;
45300 
45301 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45302 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45303 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45304 
45305 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45306 
45307 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45308 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45309 
45310 ---------------------------------------------------------------------------------------------------------------
45311 
45312 
45313 --
45314 -- bulk performance
45315 --
45316 l_balance_type_code           VARCHAR2(1);
45317 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45318 l_log_module                  VARCHAR2(240);
45319 
45320 --
45321 -- Upgrade strategy
45322 --
45323 l_actual_upg_option           VARCHAR2(1);
45324 l_enc_upg_option           VARCHAR2(1);
45325 
45326 --
45327 BEGIN
45328 --
45329 IF g_log_enabled THEN
45330       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
45331 END IF;
45332 --
45333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45334 
45335       trace
45336          (p_msg      => 'BEGIN of AcctLineType_80'
45337          ,p_level    => C_LEVEL_PROCEDURE
45338          ,p_module   => l_log_module);
45339 
45340 END IF;
45341 --
45342 l_component_type             := 'AMB_JLT';
45343 l_component_code             := 'UNRESERVE_BURDENED_REL_ENC';
45344 l_component_type_code        := 'S';
45345 l_component_appl_id          :=  201;
45346 l_amb_context_code           := 'DEFAULT';
45347 l_entity_code                := 'RELEASE';
45348 l_event_class_code           := 'RELEASE_BURDEN';
45349 l_event_type_code            := 'RELEASE_BURDEN_ALL';
45350 l_line_definition_owner_code := 'S';
45351 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
45352 --
45353 l_balance_type_code          := 'E';
45354 l_segment                     := NULL;
45355 l_ccid                        := NULL;
45356 l_adr_transaction_coa_id      := NULL;
45357 l_adr_accounting_coa_id       := NULL;
45358 l_adr_flexfield_segment_code  := NULL;
45359 l_adr_flex_value_set_id       := NULL;
45360 l_adr_value_type_code         := NULL;
45361 l_adr_value_combination_id    := NULL;
45362 l_adr_value_segment_code      := NULL;
45363 
45364 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
45365 l_bflow_class_code           := 'REL_PA_BURDENED_ENC';    -- 4219869 Business Flow
45366 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45367 l_budgetary_control_flag     := 'Y';
45368 
45369 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45370 l_bflow_applied_to_amt       := NULL; -- 5132302
45371 l_entered_amt_idx            := NULL;          -- 4262811
45372 l_accted_amt_idx             := NULL;          -- 4262811
45373 l_acc_rev_flag               := NULL;          -- 4262811
45374 l_accrual_line_num           := NULL;          -- 4262811
45375 l_tmp_amt                    := NULL;          -- 4262811
45376 --
45377  
45378 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45379     l_balance_type_code <> 'B' THEN
45380 IF (NVL(
45381 xla_ae_sources_pkg.GetSystemSourceChar(
45382    p_source_code           => 'XLA_EVENT_TYPE_CODE'
45383  , p_source_type_code      => 'Y'
45384  , p_source_application_id =>  602
45385 ),'
45386 ') =  'REL_BURDEN_FINAL_CLOSED' OR 
45387 NVL(
45388 xla_ae_sources_pkg.GetSystemSourceChar(
45389    p_source_code           => 'XLA_EVENT_TYPE_CODE'
45390  , p_source_type_code      => 'Y'
45391  , p_source_application_id =>  602
45392 ),'
45393 ') =  'REL_BURDEN_UNRESERVED' OR 
45394 NVL(
45395 xla_ae_sources_pkg.GetSystemSourceChar(
45396    p_source_code           => 'XLA_EVENT_TYPE_CODE'
45397  , p_source_type_code      => 'Y'
45398  , p_source_application_id =>  602
45399 ),'
45400 ') =  'REL_BURDEN_REJECTED' OR 
45401 NVL(
45402 xla_ae_sources_pkg.GetSystemSourceChar(
45403    p_source_code           => 'XLA_EVENT_TYPE_CODE'
45404  , p_source_type_code      => 'Y'
45405  , p_source_application_id =>  602
45406 ),'
45407 ') =  'REL_BURDEN_INV_CANCELLED') AND 
45408 NVL(p_source_13,'
45409 ') =  'M' AND 
45410 (NVL(p_source_14,'
45411 ') =  'N' OR 
45412 NVL(p_source_14,'
45413 ') =  'O') AND 
45414 NVL(p_source_9,'
45415 ') =  'PO' AND 
45416 NVL(p_source_15,'
45417 ') =  'S'
45418  THEN 
45419 
45420    --
45421    XLA_AE_LINES_PKG.SetNewLine;
45422 
45423    p_balance_type_code          := l_balance_type_code;
45424    -- set the flag so later we will know whether the gain loss line needs to be created
45425    
45426    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45427      p_actual_flag :='A';
45428    END IF;
45429 
45430    --
45431    -- bulk performance
45432    --
45433    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45434                                       p_header_num   => 0); -- 4262811
45435    --
45436    -- set accounting line options
45437    --
45438    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45439            p_natural_side_code          => 'C'
45440          , p_gain_or_loss_flag          => 'N'
45441          , p_gl_transfer_mode_code      => 'S'
45442          , p_acct_entry_type_code       => 'E'
45443          , p_switch_side_flag           => 'N'
45444          , p_merge_duplicate_code       => 'N'
45445          );
45446    --
45447    l_acc_rev_natural_side_code := 'D';  -- 4262811
45448    -- 
45449    --
45450    -- set accounting line type info
45451    --
45452    xla_ae_lines_pkg.SetAcctLineType
45453       (p_component_type             => l_component_type
45454       ,p_event_type_code            => l_event_type_code
45455       ,p_line_definition_owner_code => l_line_definition_owner_code
45456       ,p_line_definition_code       => l_line_definition_code
45457       ,p_accounting_line_code       => l_component_code
45458       ,p_accounting_line_type_code  => l_component_type_code
45459       ,p_accounting_line_appl_id    => l_component_appl_id
45460       ,p_amb_context_code           => l_amb_context_code
45461       ,p_entity_code                => l_entity_code
45462       ,p_event_class_code           => l_event_class_code);
45463    --
45464    -- set accounting class
45465    --
45466    xla_ae_lines_pkg.SetAcctClass(
45467            p_accounting_class_code  => 'PO_PA_BURDENED'
45468          , p_ae_header_id           => l_ae_header_id
45469          );
45470 
45471    --
45472    -- set rounding class
45473    --
45474    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45475                       'PO_PA_BURDENED';
45476 
45477    --
45478    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45479    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45480    --
45481    -- bulk performance
45482    --
45483    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45484 
45485    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45486       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45487 
45488    -- 4955764
45489    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45490       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45491 
45492    -- 4458381 Public Sector Enh
45493    
45494    --
45495    -- set accounting attributes for the line type
45496    --
45497    l_entered_amt_idx := 28;
45498    l_accted_amt_idx  := 30;
45499    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45500    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
45501    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
45502    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
45503    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
45504    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
45505    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
45506    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
45507    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
45508    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
45509    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
45510    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
45511    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
45512    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
45513    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
45514    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
45515    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
45516    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
45517    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
45518    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
45519    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
45520    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
45521    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
45522    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
45523    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
45524    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
45525    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
45526    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
45527    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
45528    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
45529    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
45530    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
45531    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
45532    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
45533    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
45534    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
45535    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
45536    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
45537    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
45538    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
45539    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
45540    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
45541    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
45542    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
45543    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
45544    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
45545    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
45546    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
45547    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
45548    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
45549    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
45550    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
45551    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
45552    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
45553    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
45554    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
45555    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
45556    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
45557    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
45558    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
45559    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
45560    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
45561    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
45562    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
45563    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
45564    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
45565    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
45566    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
45567    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
45568    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
45569    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
45570 
45571    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45572    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45573 
45574    ---------------------------------------------------------------------------------------------------------------
45575    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45576    ---------------------------------------------------------------------------------------------------------------
45577    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45578 
45579    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45580    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45581 
45582    IF xla_accounting_cache_pkg.GetValueChar
45583          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45584          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45585    AND l_bflow_method_code = 'PRIOR_ENTRY'
45586 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45587    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45588          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45589        )
45590    THEN
45591          xla_ae_lines_pkg.BflowUpgEntry
45592            (p_business_method_code    => l_bflow_method_code
45593            ,p_business_class_code     => l_bflow_class_code
45594            ,p_balance_type            => l_balance_type_code);
45595    ELSE
45596       NULL;
45597 XLA_AE_LINES_PKG.business_flow_validation(
45598                                 p_business_method_code     => l_bflow_method_code
45599                                ,p_business_class_code      => l_bflow_class_code
45600                                ,p_inherit_description_flag => l_inherit_desc_flag);
45601    END IF;
45602 
45603    --
45604    -- call analytical criteria
45605    --
45606    -- Inherited Analytical Criteria for business flow method of Prior Entry.
45607    --
45608    -- call description
45609    --
45610    
45611 xla_ae_lines_pkg.SetLineDescription(
45612    p_ae_header_id => l_ae_header_id
45613   ,p_description  => Description_2 (
45614      p_application_id         => p_application_id
45615    , p_ae_header_id           => l_ae_header_id 
45616 , p_source_3 => p_source_3
45617 , p_source_4 => p_source_4
45618 , p_source_5 => p_source_5
45619 , p_source_6 => p_source_6
45620    )
45621 );
45622 
45623 
45624    --
45625    -- call ADRs
45626    -- Bug 4922099
45627    --
45628    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45629         (NVL(l_actual_upg_option, 'N') = 'O') OR
45630         (NVL(l_enc_upg_option, 'N') = 'O')
45631       )
45632    THEN
45633    NULL;
45634    --
45635    --
45636    
45637    --
45638    --
45639    END IF;
45640    --
45641    -- Bug 4922099
45642    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45643           (NVL(l_enc_upg_option, 'N') = 'O')
45644         ) AND
45645         (l_bflow_method_code = 'PRIOR_ENTRY')
45646       )
45647    THEN
45648       IF
45649       --
45650       1 = 1
45651       --
45652       THEN
45653       xla_accounting_err_pkg.build_message
45654                                     (p_appli_s_name            => 'XLA'
45655                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45656                                     ,p_token_1                 => 'LINE_NUMBER'
45657                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45658                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45659                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45660                                                                              l_component_type
45661                                                                             ,l_component_code
45662                                                                             ,l_component_type_code
45663                                                                             ,l_component_appl_id
45664                                                                             ,l_amb_context_code
45665                                                                             ,l_entity_code
45666                                                                             ,l_event_class_code
45667                                                                            )
45668                                     ,p_token_3                 => 'OWNER'
45669                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45670                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45671                                                                           ,p_lookup_code    => l_component_type_code
45672                                                                          )
45673                                     ,p_token_4                 => 'PRODUCT_NAME'
45674                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45675                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45676                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45677                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45678                                     ,p_ae_header_id            =>  NULL
45679                                        );
45680 
45681         IF (C_LEVEL_ERROR>= g_log_level) THEN
45682                  trace
45683                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45684                       ,p_level    => C_LEVEL_ERROR
45685                       ,p_module   => l_log_module);
45686         END IF;
45687       END IF;
45688    END IF;
45689    --
45690    --
45691    ------------------------------------------------------------------------------------------------
45692    -- 4219869 Business Flow
45693    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45694    -- Prior Entry.  Currently, the following code is always generated.
45695    ------------------------------------------------------------------------------------------------
45696    -- No ValidateCurrentLine for business flow method of Prior Entry
45697 
45698    ------------------------------------------------------------------------------------
45699    -- 4219869 Business Flow
45700    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45701    ------------------------------------------------------------------------------------
45702    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45703 
45704    ----------------------------------------------------------------------------------
45705    -- 4219869 Business Flow
45706    -- Update journal entry status -- Need to generate this within IF <condition>
45707    ----------------------------------------------------------------------------------
45708    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45709          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45710          ,p_balance_type_code => l_balance_type_code
45711          );
45712 
45713    -------------------------------------------------------------------------------------------
45714    -- 4262811 - Generate the Accrual Reversal lines
45715    -------------------------------------------------------------------------------------------
45716    BEGIN
45717       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45718                               (g_array_event(p_event_id).array_value_num('header_index'));
45719       IF l_acc_rev_flag IS NULL THEN
45720          l_acc_rev_flag := 'N';
45721       END IF;
45722    EXCEPTION
45723       WHEN OTHERS THEN
45724          l_acc_rev_flag := 'N';
45725    END;
45726    --
45727    IF (l_acc_rev_flag = 'Y') THEN
45728 
45729        -- 4645092  ------------------------------------------------------------------------------
45730        -- To allow MPA report to determine if it should generate report process
45731        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45732        ------------------------------------------------------------------------------------------
45733 
45734        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45735        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45736 
45737        --
45738        -- Update the line information that should be overwritten
45739        --
45740        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45741                                          p_header_num   => 1);
45742        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45743 
45744        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45745 
45746        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45747           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45748        END IF;
45749 
45750       --
45751       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45752       --
45753       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45754           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45755       ELSE
45756           ---------------------------------------------------------------------------------------------------
45757           -- 4262811a Switch Sign
45758           ---------------------------------------------------------------------------------------------------
45759           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45760           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45761                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45762           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45763                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45764           -- 5132302
45765           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45766                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45767 
45768       END IF;
45769 
45770       -- 4955764
45771       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45772       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45773 
45774 
45775       XLA_AE_LINES_PKG.ValidateCurrentLine;
45776       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45777 
45778       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45779                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45780                ,p_balance_type_code => l_balance_type_code);
45781 
45782    END IF;
45783 
45784    -----------------------------------------------------------------------------------------
45785    -- 4262811 Multiperiod Accounting
45786    -----------------------------------------------------------------------------------------
45787      -- No MPA option is assigned.
45788 
45789 
45790 END IF;
45791 END IF;
45792 --
45793 
45794 --
45795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45796    trace
45797       (p_msg      => 'END of AcctLineType_80'
45798       ,p_level    => C_LEVEL_PROCEDURE
45799       ,p_module   => l_log_module);
45800 END IF;
45801 --
45802 EXCEPTION
45803   WHEN xla_exceptions_pkg.application_exception THEN
45804       RAISE;
45805   WHEN OTHERS THEN
45806        xla_exceptions_pkg.raise_message
45807            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_80');
45808 END AcctLineType_80;
45809 --
45810 
45811 ---------------------------------------
45812 --
45813 -- PRIVATE FUNCTION
45814 --         AcctLineType_81
45815 --
45816 ---------------------------------------
45817 PROCEDURE AcctLineType_81 (
45818   p_application_id        IN NUMBER
45819  ,p_event_id              IN NUMBER
45820  ,p_calculate_acctd_flag  IN VARCHAR2
45821  ,p_calculate_g_l_flag    IN VARCHAR2
45822  ,p_actual_flag           IN OUT VARCHAR2
45823  ,p_balance_type_code     OUT VARCHAR2
45824  ,p_gain_or_loss_ref      OUT VARCHAR2
45825  
45826 --Project Name
45827  , p_source_3            IN VARCHAR2
45828 --Task Name
45829  , p_source_4            IN VARCHAR2
45830 --Project Expenditure Organization Identifier
45831  , p_source_5            IN NUMBER
45832 --Expenditure Type
45833  , p_source_6            IN VARCHAR2
45834 --Main Or Backing Code
45835  , p_source_13            IN VARCHAR2
45836 --Burden Record Identifier
45837  , p_source_14            IN VARCHAR2
45838  , p_source_14_meaning    IN VARCHAR2
45839 --Burden Amount Display Method
45840  , p_source_15            IN VARCHAR2
45841 --Accounting Reversal Flag
45842  , p_source_16            IN VARCHAR2
45843 --Allocated to Application Identifier
45844  , p_source_17            IN NUMBER
45845 --Allocated to Distribution Type
45846  , p_source_18            IN VARCHAR2
45847 --Allocated to Entity Code
45848  , p_source_19            IN VARCHAR2
45849 --Allocated to First Distribution Identifier
45850  , p_source_20            IN NUMBER
45851 --Allocated to First System Transaction Identifier
45852  , p_source_21            IN NUMBER
45853 --Allocated to Second Distribution Identifier
45854  , p_source_22            IN VARCHAR2
45855 --Line Type Name
45856  , p_source_30            IN VARCHAR2
45857 --Encumbrance Upgrade Credit Accounting Class
45858  , p_source_31            IN VARCHAR2
45859 --Encumbrance Upgrade Credit Account
45860  , p_source_32            IN NUMBER
45861 --Entered Amount
45862  , p_source_33            IN NUMBER
45863 --Currency Code
45864  , p_source_34            IN VARCHAR2
45865 --Accounted Amount
45866  , p_source_35            IN NUMBER
45867 --Encumbrance Upgrade Debit Accounting Class
45868  , p_source_36            IN VARCHAR2
45869 --Encumbrance Upgrade Debit Account
45870  , p_source_37            IN NUMBER
45871 --Use Encumbrances Upgrade Attributes Flag
45872  , p_source_38            IN VARCHAR2
45873 --Encumbrance Upgrade Credit Encumbrance Type
45874  , p_source_39            IN NUMBER
45875 --Encumbrance Upgrade Debit Encumbrance Type
45876  , p_source_40            IN NUMBER
45877 --Requisition Burden Applied to Application Identifier
45878  , p_source_41            IN NUMBER
45879 --Requisition Distribution Type
45880  , p_source_42            IN VARCHAR2
45881 --Requisition Burden Applied to Entity Code
45882  , p_source_43            IN VARCHAR2
45883 --Requisition Burden Applied to First Distribution Identifier
45884  , p_source_44            IN NUMBER
45885 --Requisition Burden Applied to First System Transaction Identifier
45886  , p_source_45            IN NUMBER
45887 --Requisition Burden Applied to Second Distribution Identifier
45888  , p_source_46            IN VARCHAR2
45889 --Requisition Distribution Identifier
45890  , p_source_47            IN NUMBER
45891 --Document Distribution Type
45892  , p_source_74            IN VARCHAR2
45893 )
45894 IS
45895 
45896 l_component_type              VARCHAR2(80);
45897 l_component_code              VARCHAR2(30);
45898 l_component_type_code         VARCHAR2(1);
45899 l_component_appl_id           INTEGER;
45900 l_amb_context_code            VARCHAR2(30);
45901 l_entity_code                 VARCHAR2(30);
45902 l_event_class_code            VARCHAR2(30);
45903 l_ae_header_id                NUMBER;
45904 l_event_type_code             VARCHAR2(30);
45905 l_line_definition_code        VARCHAR2(30);
45906 l_line_definition_owner_code  VARCHAR2(1);
45907 --
45908 -- adr variables
45909 l_segment                     VARCHAR2(30);
45910 l_ccid                        NUMBER;
45911 l_adr_transaction_coa_id      NUMBER;
45912 l_adr_accounting_coa_id       NUMBER;
45913 l_adr_flexfield_segment_code  VARCHAR2(30);
45914 l_adr_flex_value_set_id       NUMBER;
45915 l_adr_value_type_code         VARCHAR2(30);
45916 l_adr_value_combination_id    NUMBER;
45917 l_adr_value_segment_code      VARCHAR2(30);
45918 
45919 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45920 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45921 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45922 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45923 
45924 -- 4262811 Variables ------------------------------------------------------------------------------------------
45925 l_entered_amt_idx             NUMBER;
45926 l_accted_amt_idx              NUMBER;
45927 l_acc_rev_flag                VARCHAR2(1);
45928 l_accrual_line_num            NUMBER;
45929 l_tmp_amt                     NUMBER;
45930 l_acc_rev_natural_side_code   VARCHAR2(1);
45931 
45932 l_num_entries                 NUMBER;
45933 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45934 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45935 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45936 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45937 l_recog_line_1                NUMBER;
45938 l_recog_line_2                NUMBER;
45939 
45940 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45941 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45942 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45943 
45944 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45945 
45946 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45947 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45948 
45949 ---------------------------------------------------------------------------------------------------------------
45950 
45951 
45952 --
45953 -- bulk performance
45954 --
45955 l_balance_type_code           VARCHAR2(1);
45956 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45957 l_log_module                  VARCHAR2(240);
45958 
45959 --
45960 -- Upgrade strategy
45961 --
45962 l_actual_upg_option           VARCHAR2(1);
45963 l_enc_upg_option           VARCHAR2(1);
45964 
45965 --
45966 BEGIN
45967 --
45968 IF g_log_enabled THEN
45969       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
45970 END IF;
45971 --
45972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45973 
45974       trace
45975          (p_msg      => 'BEGIN of AcctLineType_81'
45976          ,p_level    => C_LEVEL_PROCEDURE
45977          ,p_module   => l_log_module);
45978 
45979 END IF;
45980 --
45981 l_component_type             := 'AMB_JLT';
45982 l_component_code             := 'UNRESERVE_BURDENED_REQ_ENC';
45983 l_component_type_code        := 'S';
45984 l_component_appl_id          :=  201;
45985 l_amb_context_code           := 'DEFAULT';
45986 l_entity_code                := 'REQUISITION';
45987 l_event_class_code           := 'REQUISITION_BURDEN';
45988 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
45989 l_line_definition_owner_code := 'S';
45990 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
45991 --
45992 l_balance_type_code          := 'E';
45993 l_segment                     := NULL;
45994 l_ccid                        := NULL;
45995 l_adr_transaction_coa_id      := NULL;
45996 l_adr_accounting_coa_id       := NULL;
45997 l_adr_flexfield_segment_code  := NULL;
45998 l_adr_flex_value_set_id       := NULL;
45999 l_adr_value_type_code         := NULL;
46000 l_adr_value_combination_id    := NULL;
46001 l_adr_value_segment_code      := NULL;
46002 
46003 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
46004 l_bflow_class_code           := 'REQ_PA_BURDENED_ENC';    -- 4219869 Business Flow
46005 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46006 l_budgetary_control_flag     := 'Y';
46007 
46008 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46009 l_bflow_applied_to_amt       := NULL; -- 5132302
46010 l_entered_amt_idx            := NULL;          -- 4262811
46011 l_accted_amt_idx             := NULL;          -- 4262811
46012 l_acc_rev_flag               := NULL;          -- 4262811
46013 l_accrual_line_num           := NULL;          -- 4262811
46014 l_tmp_amt                    := NULL;          -- 4262811
46015 --
46016  
46017 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46018     l_balance_type_code <> 'B' THEN
46019 IF ((NVL(
46020 xla_ae_sources_pkg.GetSystemSourceChar(
46021    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46022  , p_source_type_code      => 'Y'
46023  , p_source_application_id =>  602
46024 ),'
46025 ') =  'REQ_BURDEN_ADJUSTED' AND 
46026 NVL(p_source_74,'
46027 ') <>  'REQUISITION_ADJUSTED_NEW') OR 
46028 NVL(
46029 xla_ae_sources_pkg.GetSystemSourceChar(
46030    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46031  , p_source_type_code      => 'Y'
46032  , p_source_application_id =>  602
46033 ),'
46034 ') =  'REQ_BURDEN_REJECTED' OR 
46035 NVL(
46036 xla_ae_sources_pkg.GetSystemSourceChar(
46037    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46038  , p_source_type_code      => 'Y'
46039  , p_source_application_id =>  602
46040 ),'
46041 ') =  'REQ_BURDEN_RETURNED' OR 
46042 NVL(
46043 xla_ae_sources_pkg.GetSystemSourceChar(
46044    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46045  , p_source_type_code      => 'Y'
46046  , p_source_application_id =>  602
46047 ),'
46048 ') =  'REQ_BURDEN_UNRESERVED' OR 
46049 NVL(
46050 xla_ae_sources_pkg.GetSystemSourceChar(
46051    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46052  , p_source_type_code      => 'Y'
46053  , p_source_application_id =>  602
46054 ),'
46055 ') =  'REQ_BURDEN_FINAL_CLOSED' AND 
46056 NVL(p_source_13,'
46057 ') =  'M') AND 
46058 (NVL(p_source_14,'
46059 ') =  'N' OR 
46060 NVL(p_source_14,'
46061 ') =  'O') AND 
46062 NVL(p_source_15,'
46063 ') =  'S'
46064  THEN 
46065 
46066    --
46067    XLA_AE_LINES_PKG.SetNewLine;
46068 
46069    p_balance_type_code          := l_balance_type_code;
46070    -- set the flag so later we will know whether the gain loss line needs to be created
46071    
46072    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46073      p_actual_flag :='A';
46074    END IF;
46075 
46076    --
46077    -- bulk performance
46078    --
46079    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46080                                       p_header_num   => 0); -- 4262811
46081    --
46082    -- set accounting line options
46083    --
46084    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46085            p_natural_side_code          => 'C'
46086          , p_gain_or_loss_flag          => 'N'
46087          , p_gl_transfer_mode_code      => 'S'
46088          , p_acct_entry_type_code       => 'E'
46089          , p_switch_side_flag           => 'N'
46090          , p_merge_duplicate_code       => 'N'
46091          );
46092    --
46093    l_acc_rev_natural_side_code := 'D';  -- 4262811
46094    -- 
46095    --
46096    -- set accounting line type info
46097    --
46098    xla_ae_lines_pkg.SetAcctLineType
46099       (p_component_type             => l_component_type
46100       ,p_event_type_code            => l_event_type_code
46101       ,p_line_definition_owner_code => l_line_definition_owner_code
46102       ,p_line_definition_code       => l_line_definition_code
46103       ,p_accounting_line_code       => l_component_code
46104       ,p_accounting_line_type_code  => l_component_type_code
46105       ,p_accounting_line_appl_id    => l_component_appl_id
46106       ,p_amb_context_code           => l_amb_context_code
46107       ,p_entity_code                => l_entity_code
46108       ,p_event_class_code           => l_event_class_code);
46109    --
46110    -- set accounting class
46111    --
46112    xla_ae_lines_pkg.SetAcctClass(
46113            p_accounting_class_code  => 'REQ_PA_BURDENED'
46114          , p_ae_header_id           => l_ae_header_id
46115          );
46116 
46117    --
46118    -- set rounding class
46119    --
46120    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46121                       'REQ_PA_BURDENED';
46122 
46123    --
46124    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46125    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46126    --
46127    -- bulk performance
46128    --
46129    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46130 
46131    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46132       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46133 
46134    -- 4955764
46135    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46136       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46137 
46138    -- 4458381 Public Sector Enh
46139    
46140    --
46141    -- set accounting attributes for the line type
46142    --
46143    l_entered_amt_idx := 28;
46144    l_accted_amt_idx  := 30;
46145    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46146    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46147    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
46148    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
46149    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
46150    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
46151    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
46152    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
46153    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
46154    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
46155    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
46156    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
46157    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
46158    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
46159    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
46160    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
46161    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
46162    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46163    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
46164    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
46165    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
46166    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
46167    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
46168    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46169    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
46170    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
46171    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
46172    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
46173    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
46174    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
46175    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
46176    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
46177    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
46178    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
46179    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
46180    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
46181    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
46182    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
46183    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
46184    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
46185    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
46186    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
46187    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
46188    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
46189    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
46190    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
46191    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
46192    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
46193    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
46194    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
46195    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
46196    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
46197    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
46198    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
46199    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
46200    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
46201    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
46202    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
46203    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
46204    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
46205    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
46206    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
46207    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
46208    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
46209    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
46210    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
46211    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
46212    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
46213    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
46214    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
46215    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
46216 
46217    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46218    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46219 
46220    ---------------------------------------------------------------------------------------------------------------
46221    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46222    ---------------------------------------------------------------------------------------------------------------
46223    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46224 
46225    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46226    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46227 
46228    IF xla_accounting_cache_pkg.GetValueChar
46229          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46230          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46231    AND l_bflow_method_code = 'PRIOR_ENTRY'
46232 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46233    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46234          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46235        )
46236    THEN
46237          xla_ae_lines_pkg.BflowUpgEntry
46238            (p_business_method_code    => l_bflow_method_code
46239            ,p_business_class_code     => l_bflow_class_code
46240            ,p_balance_type            => l_balance_type_code);
46241    ELSE
46242       NULL;
46243 XLA_AE_LINES_PKG.business_flow_validation(
46244                                 p_business_method_code     => l_bflow_method_code
46245                                ,p_business_class_code      => l_bflow_class_code
46246                                ,p_inherit_description_flag => l_inherit_desc_flag);
46247    END IF;
46248 
46249    --
46250    -- call analytical criteria
46251    --
46252    -- Inherited Analytical Criteria for business flow method of Prior Entry.
46253    --
46254    -- call description
46255    --
46256    
46257 xla_ae_lines_pkg.SetLineDescription(
46258    p_ae_header_id => l_ae_header_id
46259   ,p_description  => Description_2 (
46260      p_application_id         => p_application_id
46261    , p_ae_header_id           => l_ae_header_id 
46262 , p_source_3 => p_source_3
46263 , p_source_4 => p_source_4
46264 , p_source_5 => p_source_5
46265 , p_source_6 => p_source_6
46266    )
46267 );
46268 
46269 
46270    --
46271    -- call ADRs
46272    -- Bug 4922099
46273    --
46274    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46275         (NVL(l_actual_upg_option, 'N') = 'O') OR
46276         (NVL(l_enc_upg_option, 'N') = 'O')
46277       )
46278    THEN
46279    NULL;
46280    --
46281    --
46282    
46283    --
46284    --
46285    END IF;
46286    --
46287    -- Bug 4922099
46288    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46289           (NVL(l_enc_upg_option, 'N') = 'O')
46290         ) AND
46291         (l_bflow_method_code = 'PRIOR_ENTRY')
46292       )
46293    THEN
46294       IF
46295       --
46296       1 = 1
46297       --
46298       THEN
46299       xla_accounting_err_pkg.build_message
46300                                     (p_appli_s_name            => 'XLA'
46301                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46302                                     ,p_token_1                 => 'LINE_NUMBER'
46303                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46304                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46305                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46306                                                                              l_component_type
46307                                                                             ,l_component_code
46308                                                                             ,l_component_type_code
46309                                                                             ,l_component_appl_id
46310                                                                             ,l_amb_context_code
46311                                                                             ,l_entity_code
46312                                                                             ,l_event_class_code
46313                                                                            )
46314                                     ,p_token_3                 => 'OWNER'
46315                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46316                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46317                                                                           ,p_lookup_code    => l_component_type_code
46318                                                                          )
46319                                     ,p_token_4                 => 'PRODUCT_NAME'
46320                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46321                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46322                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46323                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46324                                     ,p_ae_header_id            =>  NULL
46325                                        );
46326 
46327         IF (C_LEVEL_ERROR>= g_log_level) THEN
46328                  trace
46329                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46330                       ,p_level    => C_LEVEL_ERROR
46331                       ,p_module   => l_log_module);
46332         END IF;
46333       END IF;
46334    END IF;
46335    --
46336    --
46337    ------------------------------------------------------------------------------------------------
46338    -- 4219869 Business Flow
46339    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46340    -- Prior Entry.  Currently, the following code is always generated.
46341    ------------------------------------------------------------------------------------------------
46342    -- No ValidateCurrentLine for business flow method of Prior Entry
46343 
46344    ------------------------------------------------------------------------------------
46345    -- 4219869 Business Flow
46346    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46347    ------------------------------------------------------------------------------------
46348    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46349 
46350    ----------------------------------------------------------------------------------
46351    -- 4219869 Business Flow
46352    -- Update journal entry status -- Need to generate this within IF <condition>
46353    ----------------------------------------------------------------------------------
46354    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46355          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46356          ,p_balance_type_code => l_balance_type_code
46357          );
46358 
46359    -------------------------------------------------------------------------------------------
46360    -- 4262811 - Generate the Accrual Reversal lines
46361    -------------------------------------------------------------------------------------------
46362    BEGIN
46363       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46364                               (g_array_event(p_event_id).array_value_num('header_index'));
46365       IF l_acc_rev_flag IS NULL THEN
46366          l_acc_rev_flag := 'N';
46367       END IF;
46368    EXCEPTION
46369       WHEN OTHERS THEN
46370          l_acc_rev_flag := 'N';
46371    END;
46372    --
46373    IF (l_acc_rev_flag = 'Y') THEN
46374 
46375        -- 4645092  ------------------------------------------------------------------------------
46376        -- To allow MPA report to determine if it should generate report process
46377        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46378        ------------------------------------------------------------------------------------------
46379 
46380        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46381        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46382 
46383        --
46384        -- Update the line information that should be overwritten
46385        --
46386        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46387                                          p_header_num   => 1);
46388        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46389 
46390        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46391 
46392        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46393           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46394        END IF;
46395 
46396       --
46397       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46398       --
46399       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46400           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46401       ELSE
46402           ---------------------------------------------------------------------------------------------------
46403           -- 4262811a Switch Sign
46404           ---------------------------------------------------------------------------------------------------
46405           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46406           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46407                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46408           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46409                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46410           -- 5132302
46411           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46412                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46413 
46414       END IF;
46415 
46416       -- 4955764
46417       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46419 
46420 
46421       XLA_AE_LINES_PKG.ValidateCurrentLine;
46422       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46423 
46424       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46425                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46426                ,p_balance_type_code => l_balance_type_code);
46427 
46428    END IF;
46429 
46430    -----------------------------------------------------------------------------------------
46431    -- 4262811 Multiperiod Accounting
46432    -----------------------------------------------------------------------------------------
46433      -- No MPA option is assigned.
46434 
46435 
46436 END IF;
46437 END IF;
46438 --
46439 
46440 --
46441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46442    trace
46443       (p_msg      => 'END of AcctLineType_81'
46444       ,p_level    => C_LEVEL_PROCEDURE
46445       ,p_module   => l_log_module);
46446 END IF;
46447 --
46448 EXCEPTION
46449   WHEN xla_exceptions_pkg.application_exception THEN
46450       RAISE;
46451   WHEN OTHERS THEN
46452        xla_exceptions_pkg.raise_message
46453            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_81');
46454 END AcctLineType_81;
46455 --
46456 
46457 ---------------------------------------
46458 --
46459 -- PRIVATE FUNCTION
46460 --         AcctLineType_82
46461 --
46462 ---------------------------------------
46463 PROCEDURE AcctLineType_82 (
46464   p_application_id        IN NUMBER
46465  ,p_event_id              IN NUMBER
46466  ,p_calculate_acctd_flag  IN VARCHAR2
46467  ,p_calculate_g_l_flag    IN VARCHAR2
46468  ,p_actual_flag           IN OUT VARCHAR2
46469  ,p_balance_type_code     OUT VARCHAR2
46470  ,p_gain_or_loss_ref      OUT VARCHAR2
46471  
46472 --Project Name
46473  , p_source_3            IN VARCHAR2
46474 --Task Name
46475  , p_source_4            IN VARCHAR2
46476 --Project Expenditure Organization Identifier
46477  , p_source_5            IN NUMBER
46478 --Expenditure Type
46479  , p_source_6            IN VARCHAR2
46480 --Document Type
46481  , p_source_9            IN VARCHAR2
46482 --Main Or Backing Code
46483  , p_source_13            IN VARCHAR2
46484 --Burden Record Identifier
46485  , p_source_14            IN VARCHAR2
46486  , p_source_14_meaning    IN VARCHAR2
46487 --Burden Amount Display Method
46488  , p_source_15            IN VARCHAR2
46489 --Accounting Reversal Flag
46490  , p_source_16            IN VARCHAR2
46491 --Allocated to Application Identifier
46492  , p_source_17            IN NUMBER
46493 --Allocated to Distribution Type
46494  , p_source_18            IN VARCHAR2
46495 --Allocated to Entity Code
46496  , p_source_19            IN VARCHAR2
46497 --Allocated to First Distribution Identifier
46498  , p_source_20            IN NUMBER
46499 --Allocated to First System Transaction Identifier
46500  , p_source_21            IN NUMBER
46501 --Purchase Order Burden Applied to Application Identifier
46502  , p_source_23            IN NUMBER
46503 --PO Distribution Type
46504  , p_source_24            IN VARCHAR2
46505 --Purchase Order Burden Applied to Entity Code
46506  , p_source_25            IN VARCHAR2
46507 --Purchase Order Burden Applied to First Distribution Identifier
46508  , p_source_26            IN NUMBER
46509 --Purchase Order Burden Applied to First System Transaction Identifier
46510  , p_source_27            IN NUMBER
46511 --Purchase Order Burden Applied to Second Distribution Identifier
46512  , p_source_28            IN VARCHAR2
46513 --PO Distribution Identifier
46514  , p_source_29            IN NUMBER
46515 --Line Type Name
46516  , p_source_30            IN VARCHAR2
46517 --Encumbrance Upgrade Credit Accounting Class
46518  , p_source_31            IN VARCHAR2
46519 --Encumbrance Upgrade Credit Account
46520  , p_source_32            IN NUMBER
46521 --Entered Amount
46522  , p_source_33            IN NUMBER
46523 --Currency Code
46524  , p_source_34            IN VARCHAR2
46525 --Accounted Amount
46526  , p_source_35            IN NUMBER
46527 --Encumbrance Upgrade Debit Accounting Class
46528  , p_source_36            IN VARCHAR2
46529 --Encumbrance Upgrade Debit Account
46530  , p_source_37            IN NUMBER
46531 --Use Encumbrances Upgrade Attributes Flag
46532  , p_source_38            IN VARCHAR2
46533 --Encumbrance Upgrade Credit Encumbrance Type
46534  , p_source_39            IN NUMBER
46535 --Encumbrance Upgrade Debit Encumbrance Type
46536  , p_source_40            IN NUMBER
46537 )
46538 IS
46539 
46540 l_component_type              VARCHAR2(80);
46541 l_component_code              VARCHAR2(30);
46542 l_component_type_code         VARCHAR2(1);
46543 l_component_appl_id           INTEGER;
46544 l_amb_context_code            VARCHAR2(30);
46545 l_entity_code                 VARCHAR2(30);
46546 l_event_class_code            VARCHAR2(30);
46547 l_ae_header_id                NUMBER;
46548 l_event_type_code             VARCHAR2(30);
46549 l_line_definition_code        VARCHAR2(30);
46550 l_line_definition_owner_code  VARCHAR2(1);
46551 --
46552 -- adr variables
46553 l_segment                     VARCHAR2(30);
46554 l_ccid                        NUMBER;
46555 l_adr_transaction_coa_id      NUMBER;
46556 l_adr_accounting_coa_id       NUMBER;
46557 l_adr_flexfield_segment_code  VARCHAR2(30);
46558 l_adr_flex_value_set_id       NUMBER;
46559 l_adr_value_type_code         VARCHAR2(30);
46560 l_adr_value_combination_id    NUMBER;
46561 l_adr_value_segment_code      VARCHAR2(30);
46562 
46563 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46564 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46565 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46566 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46567 
46568 -- 4262811 Variables ------------------------------------------------------------------------------------------
46569 l_entered_amt_idx             NUMBER;
46570 l_accted_amt_idx              NUMBER;
46571 l_acc_rev_flag                VARCHAR2(1);
46572 l_accrual_line_num            NUMBER;
46573 l_tmp_amt                     NUMBER;
46574 l_acc_rev_natural_side_code   VARCHAR2(1);
46575 
46576 l_num_entries                 NUMBER;
46577 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46578 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46579 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46580 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46581 l_recog_line_1                NUMBER;
46582 l_recog_line_2                NUMBER;
46583 
46584 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46585 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46586 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46587 
46588 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46589 
46590 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46591 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46592 
46593 ---------------------------------------------------------------------------------------------------------------
46594 
46595 
46596 --
46597 -- bulk performance
46598 --
46599 l_balance_type_code           VARCHAR2(1);
46600 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46601 l_log_module                  VARCHAR2(240);
46602 
46603 --
46604 -- Upgrade strategy
46605 --
46606 l_actual_upg_option           VARCHAR2(1);
46607 l_enc_upg_option           VARCHAR2(1);
46608 
46609 --
46610 BEGIN
46611 --
46612 IF g_log_enabled THEN
46613       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
46614 END IF;
46615 --
46616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46617 
46618       trace
46619          (p_msg      => 'BEGIN of AcctLineType_82'
46620          ,p_level    => C_LEVEL_PROCEDURE
46621          ,p_module   => l_log_module);
46622 
46623 END IF;
46624 --
46625 l_component_type             := 'AMB_JLT';
46626 l_component_code             := 'UNRESERVE_BURDEN_PO_ENC';
46627 l_component_type_code        := 'S';
46628 l_component_appl_id          :=  201;
46629 l_amb_context_code           := 'DEFAULT';
46630 l_entity_code                := 'PURCHASE_ORDER';
46631 l_event_class_code           := 'PO_BURDEN';
46632 l_event_type_code            := 'PO_BURDEN_ALL';
46633 l_line_definition_owner_code := 'S';
46634 l_line_definition_code       := 'PO_BURDEN_ENC_ALL';
46635 --
46636 l_balance_type_code          := 'E';
46637 l_segment                     := NULL;
46638 l_ccid                        := NULL;
46639 l_adr_transaction_coa_id      := NULL;
46640 l_adr_accounting_coa_id       := NULL;
46641 l_adr_flexfield_segment_code  := NULL;
46642 l_adr_flex_value_set_id       := NULL;
46643 l_adr_value_type_code         := NULL;
46644 l_adr_value_combination_id    := NULL;
46645 l_adr_value_segment_code      := NULL;
46646 
46647 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
46648 l_bflow_class_code           := 'PO_PA_BURDEN_ENC';    -- 4219869 Business Flow
46649 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46650 l_budgetary_control_flag     := 'Y';
46651 
46652 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46653 l_bflow_applied_to_amt       := NULL; -- 5132302
46654 l_entered_amt_idx            := NULL;          -- 4262811
46655 l_accted_amt_idx             := NULL;          -- 4262811
46656 l_acc_rev_flag               := NULL;          -- 4262811
46657 l_accrual_line_num           := NULL;          -- 4262811
46658 l_tmp_amt                    := NULL;          -- 4262811
46659 --
46660  
46661 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46662     l_balance_type_code <> 'B' THEN
46663 IF (NVL(
46664 xla_ae_sources_pkg.GetSystemSourceChar(
46665    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46666  , p_source_type_code      => 'Y'
46667  , p_source_application_id =>  602
46668 ),'
46669 ') =  'PO_BURDEN_FINAL_CLOSED' OR 
46670 NVL(
46671 xla_ae_sources_pkg.GetSystemSourceChar(
46672    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46673  , p_source_type_code      => 'Y'
46674  , p_source_application_id =>  602
46675 ),'
46676 ') =  'PO_BURDEN_REJECTED' OR 
46677 NVL(
46678 xla_ae_sources_pkg.GetSystemSourceChar(
46679    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46680  , p_source_type_code      => 'Y'
46681  , p_source_application_id =>  602
46682 ),'
46683 ') =  'PO_BURDEN_UNRESERVED' OR 
46684 NVL(
46685 xla_ae_sources_pkg.GetSystemSourceChar(
46686    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46687  , p_source_type_code      => 'Y'
46688  , p_source_application_id =>  602
46689 ),'
46690 ') =  'PO_BURDEN_INV_CANCELLED') AND 
46691 NVL(p_source_13,'
46692 ') =  'M' AND 
46693 NVL(p_source_14,'
46694 ') =  'O' AND 
46695 NVL(p_source_9,'
46696 ') =  'PO' AND 
46697 NVL(p_source_15,'
46698 ') =  'D'
46699  THEN 
46700 
46701    --
46702    XLA_AE_LINES_PKG.SetNewLine;
46703 
46704    p_balance_type_code          := l_balance_type_code;
46705    -- set the flag so later we will know whether the gain loss line needs to be created
46706    
46707    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46708      p_actual_flag :='A';
46709    END IF;
46710 
46711    --
46712    -- bulk performance
46713    --
46714    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46715                                       p_header_num   => 0); -- 4262811
46716    --
46717    -- set accounting line options
46718    --
46719    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46720            p_natural_side_code          => 'C'
46721          , p_gain_or_loss_flag          => 'N'
46722          , p_gl_transfer_mode_code      => 'S'
46723          , p_acct_entry_type_code       => 'E'
46724          , p_switch_side_flag           => 'N'
46725          , p_merge_duplicate_code       => 'N'
46726          );
46727    --
46728    l_acc_rev_natural_side_code := 'D';  -- 4262811
46729    -- 
46730    --
46731    -- set accounting line type info
46732    --
46733    xla_ae_lines_pkg.SetAcctLineType
46734       (p_component_type             => l_component_type
46735       ,p_event_type_code            => l_event_type_code
46736       ,p_line_definition_owner_code => l_line_definition_owner_code
46737       ,p_line_definition_code       => l_line_definition_code
46738       ,p_accounting_line_code       => l_component_code
46739       ,p_accounting_line_type_code  => l_component_type_code
46740       ,p_accounting_line_appl_id    => l_component_appl_id
46741       ,p_amb_context_code           => l_amb_context_code
46742       ,p_entity_code                => l_entity_code
46743       ,p_event_class_code           => l_event_class_code);
46744    --
46745    -- set accounting class
46746    --
46747    xla_ae_lines_pkg.SetAcctClass(
46748            p_accounting_class_code  => 'PO_PA_BURDEN'
46749          , p_ae_header_id           => l_ae_header_id
46750          );
46751 
46752    --
46753    -- set rounding class
46754    --
46755    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46756                       'PO_PA_BURDEN';
46757 
46758    --
46759    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46760    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46761    --
46762    -- bulk performance
46763    --
46764    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46765 
46766    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46767       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46768 
46769    -- 4955764
46770    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46771       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46772 
46773    -- 4458381 Public Sector Enh
46774    
46775    --
46776    -- set accounting attributes for the line type
46777    --
46778    l_entered_amt_idx := 27;
46779    l_accted_amt_idx  := 29;
46780    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46781    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46782    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
46783    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
46784    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
46785    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
46786    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
46787    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
46788    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
46789    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
46790    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
46791    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
46792    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
46793    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
46794    l_rec_acct_attrs.array_num_value(7)  := p_source_23;
46795    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46796    l_rec_acct_attrs.array_char_value(8)  := p_source_24;
46797    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
46798    l_rec_acct_attrs.array_char_value(9)  := p_source_25;
46799    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
46800    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_26);
46801    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46802    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_27);
46803    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_SECOND_DIST_ID';
46804    l_rec_acct_attrs.array_char_value(12)  := p_source_28;
46805    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_IDENTIFIER_1';
46806    l_rec_acct_attrs.array_num_value(13)  :=  to_char(p_source_29);
46807    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_2';
46808    l_rec_acct_attrs.array_char_value(14)  := p_source_6;
46809    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_TYPE';
46810    l_rec_acct_attrs.array_char_value(15)  := p_source_30;
46811    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ACCT_CLASS';
46812    l_rec_acct_attrs.array_char_value(16)  := p_source_31;
46813    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_CCID';
46814    l_rec_acct_attrs.array_num_value(17)  := p_source_32;
46815    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_ENTERED_AMT';
46816    l_rec_acct_attrs.array_num_value(18)  := p_source_33;
46817    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_CURR';
46818    l_rec_acct_attrs.array_char_value(19)  := p_source_34;
46819    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_LEDGER_AMT';
46820    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
46821    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_ACCT_CLASS';
46822    l_rec_acct_attrs.array_char_value(21)  := p_source_36;
46823    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_CCID';
46824    l_rec_acct_attrs.array_num_value(22)  := p_source_37;
46825    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ENTERED_AMT';
46826    l_rec_acct_attrs.array_num_value(23)  := p_source_33;
46827    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_CURR';
46828    l_rec_acct_attrs.array_char_value(24)  := p_source_34;
46829    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_LEDGER_AMT';
46830    l_rec_acct_attrs.array_num_value(25)  := p_source_35;
46831    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_OPTION';
46832    l_rec_acct_attrs.array_char_value(26)  := p_source_38;
46833    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENTERED_CURRENCY_AMOUNT';
46834    l_rec_acct_attrs.array_num_value(27)  := p_source_33;
46835    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_CODE';
46836    l_rec_acct_attrs.array_char_value(28)  := p_source_34;
46837    l_rec_acct_attrs.array_acct_attr_code(29) := 'LEDGER_AMOUNT';
46838    l_rec_acct_attrs.array_num_value(29)  := p_source_35;
46839    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
46840    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_29);
46841    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID2';
46842    l_rec_acct_attrs.array_char_value(31)  := p_source_6;
46843    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_TYPE';
46844    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
46845    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
46846    l_rec_acct_attrs.array_num_value(33)  := p_source_39;
46847    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
46848    l_rec_acct_attrs.array_num_value(34)  := p_source_40;
46849 
46850    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46851    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46852 
46853    ---------------------------------------------------------------------------------------------------------------
46854    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46855    ---------------------------------------------------------------------------------------------------------------
46856    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46857 
46858    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46859    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46860 
46861    IF xla_accounting_cache_pkg.GetValueChar
46862          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46863          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46864    AND l_bflow_method_code = 'PRIOR_ENTRY'
46865 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46866    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46867          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46868        )
46869    THEN
46870          xla_ae_lines_pkg.BflowUpgEntry
46871            (p_business_method_code    => l_bflow_method_code
46872            ,p_business_class_code     => l_bflow_class_code
46873            ,p_balance_type            => l_balance_type_code);
46874    ELSE
46875       NULL;
46876 XLA_AE_LINES_PKG.business_flow_validation(
46877                                 p_business_method_code     => l_bflow_method_code
46878                                ,p_business_class_code      => l_bflow_class_code
46879                                ,p_inherit_description_flag => l_inherit_desc_flag);
46880    END IF;
46881 
46882    --
46883    -- call analytical criteria
46884    --
46885    -- Inherited Analytical Criteria for business flow method of Prior Entry.
46886    --
46887    -- call description
46888    --
46889    
46890 xla_ae_lines_pkg.SetLineDescription(
46891    p_ae_header_id => l_ae_header_id
46892   ,p_description  => Description_2 (
46893      p_application_id         => p_application_id
46894    , p_ae_header_id           => l_ae_header_id 
46895 , p_source_3 => p_source_3
46896 , p_source_4 => p_source_4
46897 , p_source_5 => p_source_5
46898 , p_source_6 => p_source_6
46899    )
46900 );
46901 
46902 
46903    --
46904    -- call ADRs
46905    -- Bug 4922099
46906    --
46907    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46908         (NVL(l_actual_upg_option, 'N') = 'O') OR
46909         (NVL(l_enc_upg_option, 'N') = 'O')
46910       )
46911    THEN
46912    NULL;
46913    --
46914    --
46915    
46916    --
46917    --
46918    END IF;
46919    --
46920    -- Bug 4922099
46921    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46922           (NVL(l_enc_upg_option, 'N') = 'O')
46923         ) AND
46924         (l_bflow_method_code = 'PRIOR_ENTRY')
46925       )
46926    THEN
46927       IF
46928       --
46929       1 = 1
46930       --
46931       THEN
46932       xla_accounting_err_pkg.build_message
46933                                     (p_appli_s_name            => 'XLA'
46934                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46935                                     ,p_token_1                 => 'LINE_NUMBER'
46936                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46937                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46938                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46939                                                                              l_component_type
46940                                                                             ,l_component_code
46941                                                                             ,l_component_type_code
46942                                                                             ,l_component_appl_id
46943                                                                             ,l_amb_context_code
46944                                                                             ,l_entity_code
46945                                                                             ,l_event_class_code
46946                                                                            )
46947                                     ,p_token_3                 => 'OWNER'
46948                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46949                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46950                                                                           ,p_lookup_code    => l_component_type_code
46951                                                                          )
46952                                     ,p_token_4                 => 'PRODUCT_NAME'
46953                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46954                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46955                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46956                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46957                                     ,p_ae_header_id            =>  NULL
46958                                        );
46959 
46960         IF (C_LEVEL_ERROR>= g_log_level) THEN
46961                  trace
46962                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46963                       ,p_level    => C_LEVEL_ERROR
46964                       ,p_module   => l_log_module);
46965         END IF;
46966       END IF;
46967    END IF;
46968    --
46969    --
46970    ------------------------------------------------------------------------------------------------
46971    -- 4219869 Business Flow
46972    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46973    -- Prior Entry.  Currently, the following code is always generated.
46974    ------------------------------------------------------------------------------------------------
46975    -- No ValidateCurrentLine for business flow method of Prior Entry
46976 
46977    ------------------------------------------------------------------------------------
46978    -- 4219869 Business Flow
46979    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46980    ------------------------------------------------------------------------------------
46981    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46982 
46983    ----------------------------------------------------------------------------------
46984    -- 4219869 Business Flow
46985    -- Update journal entry status -- Need to generate this within IF <condition>
46986    ----------------------------------------------------------------------------------
46987    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46988          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46989          ,p_balance_type_code => l_balance_type_code
46990          );
46991 
46992    -------------------------------------------------------------------------------------------
46993    -- 4262811 - Generate the Accrual Reversal lines
46994    -------------------------------------------------------------------------------------------
46995    BEGIN
46996       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46997                               (g_array_event(p_event_id).array_value_num('header_index'));
46998       IF l_acc_rev_flag IS NULL THEN
46999          l_acc_rev_flag := 'N';
47000       END IF;
47001    EXCEPTION
47002       WHEN OTHERS THEN
47003          l_acc_rev_flag := 'N';
47004    END;
47005    --
47006    IF (l_acc_rev_flag = 'Y') THEN
47007 
47008        -- 4645092  ------------------------------------------------------------------------------
47009        -- To allow MPA report to determine if it should generate report process
47010        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47011        ------------------------------------------------------------------------------------------
47012 
47013        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47014        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47015 
47016        --
47017        -- Update the line information that should be overwritten
47018        --
47019        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47020                                          p_header_num   => 1);
47021        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47022 
47023        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47024 
47025        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47026           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47027        END IF;
47028 
47029       --
47030       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47031       --
47032       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47033           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47034       ELSE
47035           ---------------------------------------------------------------------------------------------------
47036           -- 4262811a Switch Sign
47037           ---------------------------------------------------------------------------------------------------
47038           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47039           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47040                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47041           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47042                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47043           -- 5132302
47044           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47045                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47046 
47047       END IF;
47048 
47049       -- 4955764
47050       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47052 
47053 
47054       XLA_AE_LINES_PKG.ValidateCurrentLine;
47055       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47056 
47057       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47058                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47059                ,p_balance_type_code => l_balance_type_code);
47060 
47061    END IF;
47062 
47063    -----------------------------------------------------------------------------------------
47064    -- 4262811 Multiperiod Accounting
47065    -----------------------------------------------------------------------------------------
47066      -- No MPA option is assigned.
47067 
47068 
47069 END IF;
47070 END IF;
47071 --
47072 
47073 --
47074 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47075    trace
47076       (p_msg      => 'END of AcctLineType_82'
47077       ,p_level    => C_LEVEL_PROCEDURE
47078       ,p_module   => l_log_module);
47079 END IF;
47080 --
47081 EXCEPTION
47082   WHEN xla_exceptions_pkg.application_exception THEN
47083       RAISE;
47084   WHEN OTHERS THEN
47085        xla_exceptions_pkg.raise_message
47086            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_82');
47087 END AcctLineType_82;
47088 --
47089 
47090 ---------------------------------------
47091 --
47092 -- PRIVATE FUNCTION
47093 --         AcctLineType_83
47094 --
47095 ---------------------------------------
47096 PROCEDURE AcctLineType_83 (
47097   p_application_id        IN NUMBER
47098  ,p_event_id              IN NUMBER
47099  ,p_calculate_acctd_flag  IN VARCHAR2
47100  ,p_calculate_g_l_flag    IN VARCHAR2
47101  ,p_actual_flag           IN OUT VARCHAR2
47102  ,p_balance_type_code     OUT VARCHAR2
47103  ,p_gain_or_loss_ref      OUT VARCHAR2
47104  
47105 --Project Name
47106  , p_source_3            IN VARCHAR2
47107 --Task Name
47108  , p_source_4            IN VARCHAR2
47109 --Project Expenditure Organization Identifier
47110  , p_source_5            IN NUMBER
47111 --Expenditure Type
47112  , p_source_6            IN VARCHAR2
47113 --Document Type
47114  , p_source_9            IN VARCHAR2
47115 --Main Or Backing Code
47116  , p_source_13            IN VARCHAR2
47117 --Burden Record Identifier
47118  , p_source_14            IN VARCHAR2
47119  , p_source_14_meaning    IN VARCHAR2
47120 --Burden Amount Display Method
47121  , p_source_15            IN VARCHAR2
47122 --Accounting Reversal Flag
47123  , p_source_16            IN VARCHAR2
47124 --Allocated to Application Identifier
47125  , p_source_17            IN NUMBER
47126 --Allocated to Distribution Type
47127  , p_source_18            IN VARCHAR2
47128 --Allocated to Entity Code
47129  , p_source_19            IN VARCHAR2
47130 --Allocated to First Distribution Identifier
47131  , p_source_20            IN NUMBER
47132 --Allocated to First System Transaction Identifier
47133  , p_source_21            IN NUMBER
47134 --Allocated to Second Distribution Identifier
47135  , p_source_22            IN VARCHAR2
47136 --Purchase Order Burden Applied to Application Identifier
47137  , p_source_23            IN NUMBER
47138 --PO Distribution Type
47139  , p_source_24            IN VARCHAR2
47140 --Purchase Order Burden Applied to Entity Code
47141  , p_source_25            IN VARCHAR2
47142 --Purchase Order Burden Applied to First Distribution Identifier
47143  , p_source_26            IN NUMBER
47144 --Purchase Order Burden Applied to First System Transaction Identifier
47145  , p_source_27            IN NUMBER
47146 --Purchase Order Burden Applied to Second Distribution Identifier
47147  , p_source_28            IN VARCHAR2
47148 --PO Distribution Identifier
47149  , p_source_29            IN NUMBER
47150 --Line Type Name
47151  , p_source_30            IN VARCHAR2
47152 --Encumbrance Upgrade Credit Accounting Class
47153  , p_source_31            IN VARCHAR2
47154 --Encumbrance Upgrade Credit Account
47155  , p_source_32            IN NUMBER
47156 --Entered Amount
47157  , p_source_33            IN NUMBER
47158 --Currency Code
47159  , p_source_34            IN VARCHAR2
47160 --Accounted Amount
47161  , p_source_35            IN NUMBER
47162 --Encumbrance Upgrade Debit Accounting Class
47163  , p_source_36            IN VARCHAR2
47164 --Encumbrance Upgrade Debit Account
47165  , p_source_37            IN NUMBER
47166 --Use Encumbrances Upgrade Attributes Flag
47167  , p_source_38            IN VARCHAR2
47168 --Encumbrance Upgrade Credit Encumbrance Type
47169  , p_source_39            IN NUMBER
47170 --Encumbrance Upgrade Debit Encumbrance Type
47171  , p_source_40            IN NUMBER
47172 )
47173 IS
47174 
47175 l_component_type              VARCHAR2(80);
47176 l_component_code              VARCHAR2(30);
47177 l_component_type_code         VARCHAR2(1);
47178 l_component_appl_id           INTEGER;
47179 l_amb_context_code            VARCHAR2(30);
47180 l_entity_code                 VARCHAR2(30);
47181 l_event_class_code            VARCHAR2(30);
47182 l_ae_header_id                NUMBER;
47183 l_event_type_code             VARCHAR2(30);
47184 l_line_definition_code        VARCHAR2(30);
47185 l_line_definition_owner_code  VARCHAR2(1);
47186 --
47187 -- adr variables
47188 l_segment                     VARCHAR2(30);
47189 l_ccid                        NUMBER;
47190 l_adr_transaction_coa_id      NUMBER;
47191 l_adr_accounting_coa_id       NUMBER;
47192 l_adr_flexfield_segment_code  VARCHAR2(30);
47193 l_adr_flex_value_set_id       NUMBER;
47194 l_adr_value_type_code         VARCHAR2(30);
47195 l_adr_value_combination_id    NUMBER;
47196 l_adr_value_segment_code      VARCHAR2(30);
47197 
47198 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47199 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47200 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47201 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47202 
47203 -- 4262811 Variables ------------------------------------------------------------------------------------------
47204 l_entered_amt_idx             NUMBER;
47205 l_accted_amt_idx              NUMBER;
47206 l_acc_rev_flag                VARCHAR2(1);
47207 l_accrual_line_num            NUMBER;
47208 l_tmp_amt                     NUMBER;
47209 l_acc_rev_natural_side_code   VARCHAR2(1);
47210 
47211 l_num_entries                 NUMBER;
47212 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47213 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47214 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47215 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47216 l_recog_line_1                NUMBER;
47217 l_recog_line_2                NUMBER;
47218 
47219 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47220 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47221 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47222 
47223 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47224 
47225 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47226 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47227 
47228 ---------------------------------------------------------------------------------------------------------------
47229 
47230 
47231 --
47232 -- bulk performance
47233 --
47234 l_balance_type_code           VARCHAR2(1);
47235 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47236 l_log_module                  VARCHAR2(240);
47237 
47238 --
47239 -- Upgrade strategy
47240 --
47241 l_actual_upg_option           VARCHAR2(1);
47242 l_enc_upg_option           VARCHAR2(1);
47243 
47244 --
47245 BEGIN
47246 --
47247 IF g_log_enabled THEN
47248       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
47249 END IF;
47250 --
47251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47252 
47253       trace
47254          (p_msg      => 'BEGIN of AcctLineType_83'
47255          ,p_level    => C_LEVEL_PROCEDURE
47256          ,p_module   => l_log_module);
47257 
47258 END IF;
47259 --
47260 l_component_type             := 'AMB_JLT';
47261 l_component_code             := 'UNRESERVE_BURDEN_REL_ENC';
47262 l_component_type_code        := 'S';
47263 l_component_appl_id          :=  201;
47264 l_amb_context_code           := 'DEFAULT';
47265 l_entity_code                := 'RELEASE';
47266 l_event_class_code           := 'RELEASE_BURDEN';
47267 l_event_type_code            := 'RELEASE_BURDEN_ALL';
47268 l_line_definition_owner_code := 'S';
47269 l_line_definition_code       := 'REL_BURDEN_ENC_ALL';
47270 --
47271 l_balance_type_code          := 'E';
47272 l_segment                     := NULL;
47273 l_ccid                        := NULL;
47274 l_adr_transaction_coa_id      := NULL;
47275 l_adr_accounting_coa_id       := NULL;
47276 l_adr_flexfield_segment_code  := NULL;
47277 l_adr_flex_value_set_id       := NULL;
47278 l_adr_value_type_code         := NULL;
47279 l_adr_value_combination_id    := NULL;
47280 l_adr_value_segment_code      := NULL;
47281 
47282 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
47283 l_bflow_class_code           := 'REL_PA_BURDEN_ENC';    -- 4219869 Business Flow
47284 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47285 l_budgetary_control_flag     := 'Y';
47286 
47287 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47288 l_bflow_applied_to_amt       := NULL; -- 5132302
47289 l_entered_amt_idx            := NULL;          -- 4262811
47290 l_accted_amt_idx             := NULL;          -- 4262811
47291 l_acc_rev_flag               := NULL;          -- 4262811
47292 l_accrual_line_num           := NULL;          -- 4262811
47293 l_tmp_amt                    := NULL;          -- 4262811
47294 --
47295  
47296 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47297     l_balance_type_code <> 'B' THEN
47298 IF (NVL(
47299 xla_ae_sources_pkg.GetSystemSourceChar(
47300    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47301  , p_source_type_code      => 'Y'
47302  , p_source_application_id =>  602
47303 ),'
47304 ') =  'REL_BURDEN_FINAL_CLOSED' OR 
47305 NVL(
47306 xla_ae_sources_pkg.GetSystemSourceChar(
47307    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47308  , p_source_type_code      => 'Y'
47309  , p_source_application_id =>  602
47310 ),'
47311 ') =  'REL_BURDEN_UNRESERVED' OR 
47312 NVL(
47313 xla_ae_sources_pkg.GetSystemSourceChar(
47314    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47315  , p_source_type_code      => 'Y'
47316  , p_source_application_id =>  602
47317 ),'
47318 ') =  'REL_BURDEN_REJECTED' OR 
47319 NVL(
47320 xla_ae_sources_pkg.GetSystemSourceChar(
47321    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47322  , p_source_type_code      => 'Y'
47323  , p_source_application_id =>  602
47324 ),'
47325 ') =  'REL_BURDEN_INV_CANCELLED') AND 
47326 NVL(p_source_13,'
47327 ') =  'M' AND 
47328 NVL(p_source_14,'
47329 ') =  'O' AND 
47330 NVL(p_source_9,'
47331 ') =  'PO' AND 
47332 NVL(p_source_15,'
47333 ') =  'D'
47334  THEN 
47335 
47336    --
47337    XLA_AE_LINES_PKG.SetNewLine;
47338 
47339    p_balance_type_code          := l_balance_type_code;
47340    -- set the flag so later we will know whether the gain loss line needs to be created
47341    
47342    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47343      p_actual_flag :='A';
47344    END IF;
47345 
47346    --
47347    -- bulk performance
47348    --
47349    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47350                                       p_header_num   => 0); -- 4262811
47351    --
47352    -- set accounting line options
47353    --
47354    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47355            p_natural_side_code          => 'C'
47356          , p_gain_or_loss_flag          => 'N'
47357          , p_gl_transfer_mode_code      => 'S'
47358          , p_acct_entry_type_code       => 'E'
47359          , p_switch_side_flag           => 'N'
47360          , p_merge_duplicate_code       => 'N'
47361          );
47362    --
47363    l_acc_rev_natural_side_code := 'D';  -- 4262811
47364    -- 
47365    --
47366    -- set accounting line type info
47367    --
47368    xla_ae_lines_pkg.SetAcctLineType
47369       (p_component_type             => l_component_type
47370       ,p_event_type_code            => l_event_type_code
47371       ,p_line_definition_owner_code => l_line_definition_owner_code
47372       ,p_line_definition_code       => l_line_definition_code
47373       ,p_accounting_line_code       => l_component_code
47374       ,p_accounting_line_type_code  => l_component_type_code
47375       ,p_accounting_line_appl_id    => l_component_appl_id
47376       ,p_amb_context_code           => l_amb_context_code
47377       ,p_entity_code                => l_entity_code
47378       ,p_event_class_code           => l_event_class_code);
47379    --
47380    -- set accounting class
47381    --
47382    xla_ae_lines_pkg.SetAcctClass(
47383            p_accounting_class_code  => 'PO_PA_BURDEN'
47384          , p_ae_header_id           => l_ae_header_id
47385          );
47386 
47387    --
47388    -- set rounding class
47389    --
47390    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47391                       'PO_PA_BURDEN';
47392 
47393    --
47394    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47395    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47396    --
47397    -- bulk performance
47398    --
47399    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47400 
47401    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47402       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47403 
47404    -- 4955764
47405    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47406       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47407 
47408    -- 4458381 Public Sector Enh
47409    
47410    --
47411    -- set accounting attributes for the line type
47412    --
47413    l_entered_amt_idx := 28;
47414    l_accted_amt_idx  := 30;
47415    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47416    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
47417    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
47418    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
47419    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
47420    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
47421    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
47422    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
47423    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
47424    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
47425    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
47426    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
47427    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
47428    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
47429    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
47430    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
47431    l_rec_acct_attrs.array_num_value(8)  := p_source_23;
47432    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
47433    l_rec_acct_attrs.array_char_value(9)  := p_source_24;
47434    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
47435    l_rec_acct_attrs.array_char_value(10)  := p_source_25;
47436    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
47437    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_26);
47438    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
47439    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_27);
47440    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
47441    l_rec_acct_attrs.array_char_value(13)  := p_source_28;
47442    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
47443    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_29);
47444    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
47445    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
47446    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
47447    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
47448    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
47449    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
47450    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
47451    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
47452    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
47453    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
47454    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
47455    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
47456    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
47457    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
47458    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
47459    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
47460    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
47461    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
47462    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
47463    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
47464    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
47465    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
47466    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
47467    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
47468    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
47469    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
47470    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
47471    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
47472    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
47473    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
47474    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
47475    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
47476    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
47477    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_29);
47478    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
47479    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
47480    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
47481    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
47482    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
47483    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
47484    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
47485    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
47486 
47487    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47488    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47489 
47490    ---------------------------------------------------------------------------------------------------------------
47491    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47492    ---------------------------------------------------------------------------------------------------------------
47493    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47494 
47495    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47496    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47497 
47498    IF xla_accounting_cache_pkg.GetValueChar
47499          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47500          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47501    AND l_bflow_method_code = 'PRIOR_ENTRY'
47502 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47503    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47504          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47505        )
47506    THEN
47507          xla_ae_lines_pkg.BflowUpgEntry
47508            (p_business_method_code    => l_bflow_method_code
47509            ,p_business_class_code     => l_bflow_class_code
47510            ,p_balance_type            => l_balance_type_code);
47511    ELSE
47512       NULL;
47513 XLA_AE_LINES_PKG.business_flow_validation(
47514                                 p_business_method_code     => l_bflow_method_code
47515                                ,p_business_class_code      => l_bflow_class_code
47516                                ,p_inherit_description_flag => l_inherit_desc_flag);
47517    END IF;
47518 
47519    --
47520    -- call analytical criteria
47521    --
47522    -- Inherited Analytical Criteria for business flow method of Prior Entry.
47523    --
47524    -- call description
47525    --
47526    
47527 xla_ae_lines_pkg.SetLineDescription(
47528    p_ae_header_id => l_ae_header_id
47529   ,p_description  => Description_2 (
47530      p_application_id         => p_application_id
47531    , p_ae_header_id           => l_ae_header_id 
47532 , p_source_3 => p_source_3
47533 , p_source_4 => p_source_4
47534 , p_source_5 => p_source_5
47535 , p_source_6 => p_source_6
47536    )
47537 );
47538 
47539 
47540    --
47541    -- call ADRs
47542    -- Bug 4922099
47543    --
47544    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47545         (NVL(l_actual_upg_option, 'N') = 'O') OR
47546         (NVL(l_enc_upg_option, 'N') = 'O')
47547       )
47548    THEN
47549    NULL;
47550    --
47551    --
47552    
47553    --
47554    --
47555    END IF;
47556    --
47557    -- Bug 4922099
47558    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47559           (NVL(l_enc_upg_option, 'N') = 'O')
47560         ) AND
47561         (l_bflow_method_code = 'PRIOR_ENTRY')
47562       )
47563    THEN
47564       IF
47565       --
47566       1 = 1
47567       --
47568       THEN
47569       xla_accounting_err_pkg.build_message
47570                                     (p_appli_s_name            => 'XLA'
47571                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47572                                     ,p_token_1                 => 'LINE_NUMBER'
47573                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47574                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47575                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47576                                                                              l_component_type
47577                                                                             ,l_component_code
47578                                                                             ,l_component_type_code
47579                                                                             ,l_component_appl_id
47580                                                                             ,l_amb_context_code
47581                                                                             ,l_entity_code
47582                                                                             ,l_event_class_code
47583                                                                            )
47584                                     ,p_token_3                 => 'OWNER'
47585                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47586                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47587                                                                           ,p_lookup_code    => l_component_type_code
47588                                                                          )
47589                                     ,p_token_4                 => 'PRODUCT_NAME'
47590                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47591                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47592                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47593                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47594                                     ,p_ae_header_id            =>  NULL
47595                                        );
47596 
47597         IF (C_LEVEL_ERROR>= g_log_level) THEN
47598                  trace
47599                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47600                       ,p_level    => C_LEVEL_ERROR
47601                       ,p_module   => l_log_module);
47602         END IF;
47603       END IF;
47604    END IF;
47605    --
47606    --
47607    ------------------------------------------------------------------------------------------------
47608    -- 4219869 Business Flow
47609    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47610    -- Prior Entry.  Currently, the following code is always generated.
47611    ------------------------------------------------------------------------------------------------
47612    -- No ValidateCurrentLine for business flow method of Prior Entry
47613 
47614    ------------------------------------------------------------------------------------
47615    -- 4219869 Business Flow
47616    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47617    ------------------------------------------------------------------------------------
47618    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47619 
47620    ----------------------------------------------------------------------------------
47621    -- 4219869 Business Flow
47622    -- Update journal entry status -- Need to generate this within IF <condition>
47623    ----------------------------------------------------------------------------------
47624    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47625          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47626          ,p_balance_type_code => l_balance_type_code
47627          );
47628 
47629    -------------------------------------------------------------------------------------------
47630    -- 4262811 - Generate the Accrual Reversal lines
47631    -------------------------------------------------------------------------------------------
47632    BEGIN
47633       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47634                               (g_array_event(p_event_id).array_value_num('header_index'));
47635       IF l_acc_rev_flag IS NULL THEN
47636          l_acc_rev_flag := 'N';
47637       END IF;
47638    EXCEPTION
47639       WHEN OTHERS THEN
47640          l_acc_rev_flag := 'N';
47641    END;
47642    --
47643    IF (l_acc_rev_flag = 'Y') THEN
47644 
47645        -- 4645092  ------------------------------------------------------------------------------
47646        -- To allow MPA report to determine if it should generate report process
47647        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47648        ------------------------------------------------------------------------------------------
47649 
47650        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47651        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47652 
47653        --
47654        -- Update the line information that should be overwritten
47655        --
47656        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47657                                          p_header_num   => 1);
47658        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47659 
47660        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47661 
47662        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47663           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47664        END IF;
47665 
47666       --
47667       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47668       --
47669       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47670           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47671       ELSE
47672           ---------------------------------------------------------------------------------------------------
47673           -- 4262811a Switch Sign
47674           ---------------------------------------------------------------------------------------------------
47675           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47676           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47677                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47678           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47679                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47680           -- 5132302
47681           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47682                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47683 
47684       END IF;
47685 
47686       -- 4955764
47687       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47689 
47690 
47691       XLA_AE_LINES_PKG.ValidateCurrentLine;
47692       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47693 
47694       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47695                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47696                ,p_balance_type_code => l_balance_type_code);
47697 
47698    END IF;
47699 
47700    -----------------------------------------------------------------------------------------
47701    -- 4262811 Multiperiod Accounting
47702    -----------------------------------------------------------------------------------------
47703      -- No MPA option is assigned.
47704 
47705 
47706 END IF;
47707 END IF;
47708 --
47709 
47710 --
47711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47712    trace
47713       (p_msg      => 'END of AcctLineType_83'
47714       ,p_level    => C_LEVEL_PROCEDURE
47715       ,p_module   => l_log_module);
47716 END IF;
47717 --
47718 EXCEPTION
47719   WHEN xla_exceptions_pkg.application_exception THEN
47720       RAISE;
47721   WHEN OTHERS THEN
47722        xla_exceptions_pkg.raise_message
47723            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_83');
47724 END AcctLineType_83;
47725 --
47726 
47727 ---------------------------------------
47728 --
47729 -- PRIVATE FUNCTION
47730 --         AcctLineType_84
47731 --
47732 ---------------------------------------
47733 PROCEDURE AcctLineType_84 (
47734   p_application_id        IN NUMBER
47735  ,p_event_id              IN NUMBER
47736  ,p_calculate_acctd_flag  IN VARCHAR2
47737  ,p_calculate_g_l_flag    IN VARCHAR2
47738  ,p_actual_flag           IN OUT VARCHAR2
47739  ,p_balance_type_code     OUT VARCHAR2
47740  ,p_gain_or_loss_ref      OUT VARCHAR2
47741  
47742 --Project Name
47743  , p_source_3            IN VARCHAR2
47744 --Task Name
47745  , p_source_4            IN VARCHAR2
47746 --Project Expenditure Organization Identifier
47747  , p_source_5            IN NUMBER
47748 --Expenditure Type
47749  , p_source_6            IN VARCHAR2
47750 --Main Or Backing Code
47751  , p_source_13            IN VARCHAR2
47752 --Burden Record Identifier
47753  , p_source_14            IN VARCHAR2
47754  , p_source_14_meaning    IN VARCHAR2
47755 --Burden Amount Display Method
47756  , p_source_15            IN VARCHAR2
47757 --Accounting Reversal Flag
47758  , p_source_16            IN VARCHAR2
47759 --Allocated to Application Identifier
47760  , p_source_17            IN NUMBER
47761 --Allocated to Distribution Type
47762  , p_source_18            IN VARCHAR2
47763 --Allocated to Entity Code
47764  , p_source_19            IN VARCHAR2
47765 --Allocated to First Distribution Identifier
47766  , p_source_20            IN NUMBER
47767 --Allocated to First System Transaction Identifier
47768  , p_source_21            IN NUMBER
47769 --Allocated to Second Distribution Identifier
47770  , p_source_22            IN VARCHAR2
47771 --Line Type Name
47772  , p_source_30            IN VARCHAR2
47773 --Encumbrance Upgrade Credit Accounting Class
47774  , p_source_31            IN VARCHAR2
47775 --Encumbrance Upgrade Credit Account
47776  , p_source_32            IN NUMBER
47777 --Entered Amount
47778  , p_source_33            IN NUMBER
47779 --Currency Code
47780  , p_source_34            IN VARCHAR2
47781 --Accounted Amount
47782  , p_source_35            IN NUMBER
47783 --Encumbrance Upgrade Debit Accounting Class
47784  , p_source_36            IN VARCHAR2
47785 --Encumbrance Upgrade Debit Account
47786  , p_source_37            IN NUMBER
47787 --Use Encumbrances Upgrade Attributes Flag
47788  , p_source_38            IN VARCHAR2
47789 --Encumbrance Upgrade Credit Encumbrance Type
47790  , p_source_39            IN NUMBER
47791 --Encumbrance Upgrade Debit Encumbrance Type
47792  , p_source_40            IN NUMBER
47793 --Requisition Burden Applied to Application Identifier
47794  , p_source_41            IN NUMBER
47795 --Requisition Distribution Type
47796  , p_source_42            IN VARCHAR2
47797 --Requisition Burden Applied to Entity Code
47798  , p_source_43            IN VARCHAR2
47799 --Requisition Burden Applied to First Distribution Identifier
47800  , p_source_44            IN NUMBER
47801 --Requisition Burden Applied to First System Transaction Identifier
47802  , p_source_45            IN NUMBER
47803 --Requisition Burden Applied to Second Distribution Identifier
47804  , p_source_46            IN VARCHAR2
47805 --Requisition Distribution Identifier
47806  , p_source_47            IN NUMBER
47807 --Document Distribution Type
47808  , p_source_74            IN VARCHAR2
47809 )
47810 IS
47811 
47812 l_component_type              VARCHAR2(80);
47813 l_component_code              VARCHAR2(30);
47814 l_component_type_code         VARCHAR2(1);
47815 l_component_appl_id           INTEGER;
47816 l_amb_context_code            VARCHAR2(30);
47817 l_entity_code                 VARCHAR2(30);
47818 l_event_class_code            VARCHAR2(30);
47819 l_ae_header_id                NUMBER;
47820 l_event_type_code             VARCHAR2(30);
47821 l_line_definition_code        VARCHAR2(30);
47822 l_line_definition_owner_code  VARCHAR2(1);
47823 --
47824 -- adr variables
47825 l_segment                     VARCHAR2(30);
47826 l_ccid                        NUMBER;
47827 l_adr_transaction_coa_id      NUMBER;
47828 l_adr_accounting_coa_id       NUMBER;
47829 l_adr_flexfield_segment_code  VARCHAR2(30);
47830 l_adr_flex_value_set_id       NUMBER;
47831 l_adr_value_type_code         VARCHAR2(30);
47832 l_adr_value_combination_id    NUMBER;
47833 l_adr_value_segment_code      VARCHAR2(30);
47834 
47835 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47836 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47837 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47838 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47839 
47840 -- 4262811 Variables ------------------------------------------------------------------------------------------
47841 l_entered_amt_idx             NUMBER;
47842 l_accted_amt_idx              NUMBER;
47843 l_acc_rev_flag                VARCHAR2(1);
47844 l_accrual_line_num            NUMBER;
47845 l_tmp_amt                     NUMBER;
47846 l_acc_rev_natural_side_code   VARCHAR2(1);
47847 
47848 l_num_entries                 NUMBER;
47849 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47850 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47851 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47852 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47853 l_recog_line_1                NUMBER;
47854 l_recog_line_2                NUMBER;
47855 
47856 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47857 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47858 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47859 
47860 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47861 
47862 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47863 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47864 
47865 ---------------------------------------------------------------------------------------------------------------
47866 
47867 
47868 --
47869 -- bulk performance
47870 --
47871 l_balance_type_code           VARCHAR2(1);
47872 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47873 l_log_module                  VARCHAR2(240);
47874 
47875 --
47876 -- Upgrade strategy
47877 --
47878 l_actual_upg_option           VARCHAR2(1);
47879 l_enc_upg_option           VARCHAR2(1);
47880 
47881 --
47882 BEGIN
47883 --
47884 IF g_log_enabled THEN
47885       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
47886 END IF;
47887 --
47888 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47889 
47890       trace
47891          (p_msg      => 'BEGIN of AcctLineType_84'
47892          ,p_level    => C_LEVEL_PROCEDURE
47893          ,p_module   => l_log_module);
47894 
47895 END IF;
47896 --
47897 l_component_type             := 'AMB_JLT';
47898 l_component_code             := 'UNRESERVE_BURDEN_REQ_ENC';
47899 l_component_type_code        := 'S';
47900 l_component_appl_id          :=  201;
47901 l_amb_context_code           := 'DEFAULT';
47902 l_entity_code                := 'REQUISITION';
47903 l_event_class_code           := 'REQUISITION_BURDEN';
47904 l_event_type_code            := 'REQUISITION_BURDEN_ALL';
47905 l_line_definition_owner_code := 'S';
47906 l_line_definition_code       := 'REQ_BURDEN_ENC_ALL';
47907 --
47908 l_balance_type_code          := 'E';
47909 l_segment                     := NULL;
47910 l_ccid                        := NULL;
47911 l_adr_transaction_coa_id      := NULL;
47912 l_adr_accounting_coa_id       := NULL;
47913 l_adr_flexfield_segment_code  := NULL;
47914 l_adr_flex_value_set_id       := NULL;
47915 l_adr_value_type_code         := NULL;
47916 l_adr_value_combination_id    := NULL;
47917 l_adr_value_segment_code      := NULL;
47918 
47919 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
47920 l_bflow_class_code           := 'REQ_PA_BURDEN_ENC';    -- 4219869 Business Flow
47921 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47922 l_budgetary_control_flag     := 'Y';
47923 
47924 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47925 l_bflow_applied_to_amt       := NULL; -- 5132302
47926 l_entered_amt_idx            := NULL;          -- 4262811
47927 l_accted_amt_idx             := NULL;          -- 4262811
47928 l_acc_rev_flag               := NULL;          -- 4262811
47929 l_accrual_line_num           := NULL;          -- 4262811
47930 l_tmp_amt                    := NULL;          -- 4262811
47931 --
47932  
47933 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47934     l_balance_type_code <> 'B' THEN
47935 IF ((NVL(
47936 xla_ae_sources_pkg.GetSystemSourceChar(
47937    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47938  , p_source_type_code      => 'Y'
47939  , p_source_application_id =>  602
47940 ),'
47941 ') =  'REQ_BURDEN_ADJUSTED' AND 
47942 NVL(p_source_74,'
47943 ') <>  'REQUISITION_ADJUSTED_NEW') OR 
47944 NVL(
47945 xla_ae_sources_pkg.GetSystemSourceChar(
47946    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47947  , p_source_type_code      => 'Y'
47948  , p_source_application_id =>  602
47949 ),'
47950 ') =  'REQ_BURDEN_REJECTED' OR 
47951 NVL(
47952 xla_ae_sources_pkg.GetSystemSourceChar(
47953    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47954  , p_source_type_code      => 'Y'
47955  , p_source_application_id =>  602
47956 ),'
47957 ') =  'REQ_BURDEN_RETURNED' OR 
47958 NVL(
47959 xla_ae_sources_pkg.GetSystemSourceChar(
47960    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47961  , p_source_type_code      => 'Y'
47962  , p_source_application_id =>  602
47963 ),'
47964 ') =  'REQ_BURDEN_UNRESERVED' OR 
47965 NVL(
47966 xla_ae_sources_pkg.GetSystemSourceChar(
47967    p_source_code           => 'XLA_EVENT_TYPE_CODE'
47968  , p_source_type_code      => 'Y'
47969  , p_source_application_id =>  602
47970 ),'
47971 ') =  'REQ_BURDEN_FINAL_CLOSED' AND 
47972 NVL(p_source_13,'
47973 ') =  'M') AND 
47974 NVL(p_source_14,'
47975 ') =  'O' AND 
47976 NVL(p_source_15,'
47977 ') =  'D'
47978  THEN 
47979 
47980    --
47981    XLA_AE_LINES_PKG.SetNewLine;
47982 
47983    p_balance_type_code          := l_balance_type_code;
47984    -- set the flag so later we will know whether the gain loss line needs to be created
47985    
47986    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47987      p_actual_flag :='A';
47988    END IF;
47989 
47990    --
47991    -- bulk performance
47992    --
47993    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47994                                       p_header_num   => 0); -- 4262811
47995    --
47996    -- set accounting line options
47997    --
47998    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47999            p_natural_side_code          => 'C'
48000          , p_gain_or_loss_flag          => 'N'
48001          , p_gl_transfer_mode_code      => 'S'
48002          , p_acct_entry_type_code       => 'E'
48003          , p_switch_side_flag           => 'N'
48004          , p_merge_duplicate_code       => 'N'
48005          );
48006    --
48007    l_acc_rev_natural_side_code := 'D';  -- 4262811
48008    -- 
48009    --
48010    -- set accounting line type info
48011    --
48012    xla_ae_lines_pkg.SetAcctLineType
48013       (p_component_type             => l_component_type
48014       ,p_event_type_code            => l_event_type_code
48015       ,p_line_definition_owner_code => l_line_definition_owner_code
48016       ,p_line_definition_code       => l_line_definition_code
48017       ,p_accounting_line_code       => l_component_code
48018       ,p_accounting_line_type_code  => l_component_type_code
48019       ,p_accounting_line_appl_id    => l_component_appl_id
48020       ,p_amb_context_code           => l_amb_context_code
48021       ,p_entity_code                => l_entity_code
48022       ,p_event_class_code           => l_event_class_code);
48023    --
48024    -- set accounting class
48025    --
48026    xla_ae_lines_pkg.SetAcctClass(
48027            p_accounting_class_code  => 'REQ_PA_BURDEN'
48028          , p_ae_header_id           => l_ae_header_id
48029          );
48030 
48031    --
48032    -- set rounding class
48033    --
48034    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48035                       'REQ_PA_BURDEN';
48036 
48037    --
48038    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48039    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48040    --
48041    -- bulk performance
48042    --
48043    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48044 
48045    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48046       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48047 
48048    -- 4955764
48049    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48050       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48051 
48052    -- 4458381 Public Sector Enh
48053    
48054    --
48055    -- set accounting attributes for the line type
48056    --
48057    l_entered_amt_idx := 28;
48058    l_accted_amt_idx  := 30;
48059    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48060    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
48061    l_rec_acct_attrs.array_char_value(1)  := p_source_16;
48062    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
48063    l_rec_acct_attrs.array_num_value(2)  := p_source_17;
48064    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
48065    l_rec_acct_attrs.array_char_value(3)  := p_source_18;
48066    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
48067    l_rec_acct_attrs.array_char_value(4)  := p_source_19;
48068    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
48069    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_20);
48070    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
48071    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_21);
48072    l_rec_acct_attrs.array_acct_attr_code(7) := 'ALLOC_TO_SECOND_DIST_ID';
48073    l_rec_acct_attrs.array_char_value(7)  := p_source_22;
48074    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_APPLICATION_ID';
48075    l_rec_acct_attrs.array_num_value(8)  := p_source_41;
48076    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48077    l_rec_acct_attrs.array_char_value(9)  := p_source_42;
48078    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_ENTITY_CODE';
48079    l_rec_acct_attrs.array_char_value(10)  := p_source_43;
48080    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_DIST_ID';
48081    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_44);
48082    l_rec_acct_attrs.array_acct_attr_code(12) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48083    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_45);
48084    l_rec_acct_attrs.array_acct_attr_code(13) := 'APPLIED_TO_SECOND_DIST_ID';
48085    l_rec_acct_attrs.array_char_value(13)  := p_source_46;
48086    l_rec_acct_attrs.array_acct_attr_code(14) := 'DISTRIBUTION_IDENTIFIER_1';
48087    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_47);
48088    l_rec_acct_attrs.array_acct_attr_code(15) := 'DISTRIBUTION_IDENTIFIER_2';
48089    l_rec_acct_attrs.array_char_value(15)  := p_source_6;
48090    l_rec_acct_attrs.array_acct_attr_code(16) := 'DISTRIBUTION_TYPE';
48091    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
48092    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_ACCT_CLASS';
48093    l_rec_acct_attrs.array_char_value(17)  := p_source_31;
48094    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_CR_CCID';
48095    l_rec_acct_attrs.array_num_value(18)  := p_source_32;
48096    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_CR_ENTERED_AMT';
48097    l_rec_acct_attrs.array_num_value(19)  := p_source_33;
48098    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_CR_ENTERED_CURR';
48099    l_rec_acct_attrs.array_char_value(20)  := p_source_34;
48100    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_CR_LEDGER_AMT';
48101    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
48102    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_DR_ACCT_CLASS';
48103    l_rec_acct_attrs.array_char_value(22)  := p_source_36;
48104    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_CCID';
48105    l_rec_acct_attrs.array_num_value(23)  := p_source_37;
48106    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_ENTERED_AMT';
48107    l_rec_acct_attrs.array_num_value(24)  := p_source_33;
48108    l_rec_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_CURR';
48109    l_rec_acct_attrs.array_char_value(25)  := p_source_34;
48110    l_rec_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_LEDGER_AMT';
48111    l_rec_acct_attrs.array_num_value(26)  := p_source_35;
48112    l_rec_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_OPTION';
48113    l_rec_acct_attrs.array_char_value(27)  := p_source_38;
48114    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
48115    l_rec_acct_attrs.array_num_value(28)  := p_source_33;
48116    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
48117    l_rec_acct_attrs.array_char_value(29)  := p_source_34;
48118    l_rec_acct_attrs.array_acct_attr_code(30) := 'LEDGER_AMOUNT';
48119    l_rec_acct_attrs.array_num_value(30)  := p_source_35;
48120    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_ID1';
48121    l_rec_acct_attrs.array_num_value(31)  :=  to_char(p_source_47);
48122    l_rec_acct_attrs.array_acct_attr_code(32) := 'REVERSED_DISTRIBUTION_ID2';
48123    l_rec_acct_attrs.array_char_value(32)  := p_source_6;
48124    l_rec_acct_attrs.array_acct_attr_code(33) := 'REVERSED_DISTRIBUTION_TYPE';
48125    l_rec_acct_attrs.array_char_value(33)  := p_source_30;
48126    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_CR_ENC_TYPE_ID';
48127    l_rec_acct_attrs.array_num_value(34)  := p_source_39;
48128    l_rec_acct_attrs.array_acct_attr_code(35) := 'UPG_DR_ENC_TYPE_ID';
48129    l_rec_acct_attrs.array_num_value(35)  := p_source_40;
48130 
48131    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48132    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48133 
48134    ---------------------------------------------------------------------------------------------------------------
48135    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48136    ---------------------------------------------------------------------------------------------------------------
48137    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48138 
48139    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48140    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48141 
48142    IF xla_accounting_cache_pkg.GetValueChar
48143          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48144          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48145    AND l_bflow_method_code = 'PRIOR_ENTRY'
48146 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48147    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48148          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48149        )
48150    THEN
48151          xla_ae_lines_pkg.BflowUpgEntry
48152            (p_business_method_code    => l_bflow_method_code
48153            ,p_business_class_code     => l_bflow_class_code
48154            ,p_balance_type            => l_balance_type_code);
48155    ELSE
48156       NULL;
48157 XLA_AE_LINES_PKG.business_flow_validation(
48158                                 p_business_method_code     => l_bflow_method_code
48159                                ,p_business_class_code      => l_bflow_class_code
48160                                ,p_inherit_description_flag => l_inherit_desc_flag);
48161    END IF;
48162 
48163    --
48164    -- call analytical criteria
48165    --
48166    -- Inherited Analytical Criteria for business flow method of Prior Entry.
48167    --
48168    -- call description
48169    --
48170    
48171 xla_ae_lines_pkg.SetLineDescription(
48172    p_ae_header_id => l_ae_header_id
48173   ,p_description  => Description_2 (
48174      p_application_id         => p_application_id
48175    , p_ae_header_id           => l_ae_header_id 
48176 , p_source_3 => p_source_3
48177 , p_source_4 => p_source_4
48178 , p_source_5 => p_source_5
48179 , p_source_6 => p_source_6
48180    )
48181 );
48182 
48183 
48184    --
48185    -- call ADRs
48186    -- Bug 4922099
48187    --
48188    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48189         (NVL(l_actual_upg_option, 'N') = 'O') OR
48190         (NVL(l_enc_upg_option, 'N') = 'O')
48191       )
48192    THEN
48193    NULL;
48194    --
48195    --
48196    
48197    --
48198    --
48199    END IF;
48200    --
48201    -- Bug 4922099
48202    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48203           (NVL(l_enc_upg_option, 'N') = 'O')
48204         ) AND
48205         (l_bflow_method_code = 'PRIOR_ENTRY')
48206       )
48207    THEN
48208       IF
48209       --
48210       1 = 1
48211       --
48212       THEN
48213       xla_accounting_err_pkg.build_message
48214                                     (p_appli_s_name            => 'XLA'
48215                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48216                                     ,p_token_1                 => 'LINE_NUMBER'
48217                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48218                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48219                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48220                                                                              l_component_type
48221                                                                             ,l_component_code
48222                                                                             ,l_component_type_code
48223                                                                             ,l_component_appl_id
48224                                                                             ,l_amb_context_code
48225                                                                             ,l_entity_code
48226                                                                             ,l_event_class_code
48227                                                                            )
48228                                     ,p_token_3                 => 'OWNER'
48229                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48230                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48231                                                                           ,p_lookup_code    => l_component_type_code
48232                                                                          )
48233                                     ,p_token_4                 => 'PRODUCT_NAME'
48234                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48235                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48236                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48237                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48238                                     ,p_ae_header_id            =>  NULL
48239                                        );
48240 
48241         IF (C_LEVEL_ERROR>= g_log_level) THEN
48242                  trace
48243                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48244                       ,p_level    => C_LEVEL_ERROR
48245                       ,p_module   => l_log_module);
48246         END IF;
48247       END IF;
48248    END IF;
48249    --
48250    --
48251    ------------------------------------------------------------------------------------------------
48252    -- 4219869 Business Flow
48253    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48254    -- Prior Entry.  Currently, the following code is always generated.
48255    ------------------------------------------------------------------------------------------------
48256    -- No ValidateCurrentLine for business flow method of Prior Entry
48257 
48258    ------------------------------------------------------------------------------------
48259    -- 4219869 Business Flow
48260    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48261    ------------------------------------------------------------------------------------
48262    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48263 
48264    ----------------------------------------------------------------------------------
48265    -- 4219869 Business Flow
48266    -- Update journal entry status -- Need to generate this within IF <condition>
48267    ----------------------------------------------------------------------------------
48268    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48269          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48270          ,p_balance_type_code => l_balance_type_code
48271          );
48272 
48273    -------------------------------------------------------------------------------------------
48274    -- 4262811 - Generate the Accrual Reversal lines
48275    -------------------------------------------------------------------------------------------
48276    BEGIN
48277       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48278                               (g_array_event(p_event_id).array_value_num('header_index'));
48279       IF l_acc_rev_flag IS NULL THEN
48280          l_acc_rev_flag := 'N';
48281       END IF;
48282    EXCEPTION
48283       WHEN OTHERS THEN
48284          l_acc_rev_flag := 'N';
48285    END;
48286    --
48287    IF (l_acc_rev_flag = 'Y') THEN
48288 
48289        -- 4645092  ------------------------------------------------------------------------------
48290        -- To allow MPA report to determine if it should generate report process
48291        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48292        ------------------------------------------------------------------------------------------
48293 
48294        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48295        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48296 
48297        --
48298        -- Update the line information that should be overwritten
48299        --
48300        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48301                                          p_header_num   => 1);
48302        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48303 
48304        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48305 
48306        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48307           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48308        END IF;
48309 
48310       --
48311       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48312       --
48313       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48314           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48315       ELSE
48316           ---------------------------------------------------------------------------------------------------
48317           -- 4262811a Switch Sign
48318           ---------------------------------------------------------------------------------------------------
48319           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48320           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48321                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48322           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48323                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48324           -- 5132302
48325           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48326                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48327 
48328       END IF;
48329 
48330       -- 4955764
48331       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48332       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48333 
48334 
48335       XLA_AE_LINES_PKG.ValidateCurrentLine;
48336       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48337 
48338       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48339                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48340                ,p_balance_type_code => l_balance_type_code);
48341 
48342    END IF;
48343 
48344    -----------------------------------------------------------------------------------------
48345    -- 4262811 Multiperiod Accounting
48346    -----------------------------------------------------------------------------------------
48347      -- No MPA option is assigned.
48348 
48349 
48350 END IF;
48351 END IF;
48352 --
48353 
48354 --
48355 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48356    trace
48357       (p_msg      => 'END of AcctLineType_84'
48358       ,p_level    => C_LEVEL_PROCEDURE
48359       ,p_module   => l_log_module);
48360 END IF;
48361 --
48362 EXCEPTION
48363   WHEN xla_exceptions_pkg.application_exception THEN
48364       RAISE;
48365   WHEN OTHERS THEN
48366        xla_exceptions_pkg.raise_message
48367            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.AcctLineType_84');
48368 END AcctLineType_84;
48369 --
48370 
48371 ---------------------------------------
48372 --
48373 -- PRIVATE PROCEDURE
48374 --         insert_sources_85
48375 --
48376 ----------------------------------------
48377 --
48378 PROCEDURE insert_sources_85(
48379                                 p_target_ledger_id       IN NUMBER
48380                               , p_language               IN VARCHAR2
48381                               , p_sla_ledger_id          IN NUMBER
48382                               , p_pad_start_date         IN DATE
48383                               , p_pad_end_date           IN DATE
48384                          )
48385 IS
48386 
48387 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_BURDEN_ALL';
48388 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PO_BURDEN';
48389 p_apps_owner                   VARCHAR2(30);
48390 l_log_module                   VARCHAR2(240);
48391 BEGIN
48392 IF g_log_enabled THEN
48393       l_log_module := C_DEFAULT_MODULE||'.insert_sources_85';
48394 END IF;
48395 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48396 
48397       trace
48398          (p_msg      => 'BEGIN of insert_sources_85'
48399          ,p_level    => C_LEVEL_PROCEDURE
48400          ,p_module   => l_log_module);
48401 
48402 END IF;
48403 
48404 -- select APPS owner
48405 SELECT oracle_username
48406   INTO p_apps_owner
48407   FROM fnd_oracle_userid
48408  WHERE read_only_flag = 'U'
48409 ;
48410 
48411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
48412       trace
48413          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
48414                         ' - p_language = '||p_language||
48415                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
48416                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
48417                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
48418                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
48419          ,p_level    => C_LEVEL_STATEMENT
48420          ,p_module   => l_log_module);
48421 END IF;
48422 
48423 
48424 --
48425 INSERT INTO xla_diag_sources --hdr2
48426 (
48427         event_id
48428       , ledger_id
48429       , sla_ledger_id
48430       , description_language
48431       , object_name
48432       , object_type_code
48433       , line_number
48434       , source_application_id
48435       , source_type_code
48436       , source_code
48437       , source_value
48438       , source_meaning
48439       , created_by
48440       , creation_date
48441       , last_update_date
48442       , last_updated_by
48443       , last_update_login
48444       , program_update_date
48445       , program_application_id
48446       , program_id
48447       , request_id
48448 )
48449 SELECT
48450         event_id
48451       , p_target_ledger_id
48452       , p_sla_ledger_id
48453       , p_language
48454       , object_name
48455       , object_type_code
48456       , line_number
48457       , source_application_id
48458       , source_type_code
48459       , source_code
48460       , SUBSTR(source_value ,1,1996)
48461       , SUBSTR(source_meaning ,1,200)
48462       , xla_environment_pkg.g_Usr_Id
48463       , TRUNC(SYSDATE)
48464       , TRUNC(SYSDATE)
48465       , xla_environment_pkg.g_Usr_Id
48466       , xla_environment_pkg.g_Login_Id
48467       , TRUNC(SYSDATE)
48468       , xla_environment_pkg.g_Prog_Appl_Id
48469       , xla_environment_pkg.g_Prog_Id
48470       , xla_environment_pkg.g_Req_Id
48471   FROM (
48472        SELECT xet.event_id                  event_id
48473             , 0                          line_number
48474             , CASE r
48475                WHEN 1 THEN 'PA_XLA_BC_PKT_PO_HEADER_V' 
48476                 
48477                ELSE null
48478               END                           object_name
48479             , CASE r
48480                 WHEN 1 THEN 'HEADER' 
48481                 
48482                 ELSE null
48483               END                           object_type_code
48484             , CASE r
48485                 WHEN 1 THEN '201' 
48486                 
48487                 ELSE null
48488               END                           source_application_id
48489             , 'S'             source_type_code
48490             , CASE r
48491                 WHEN 1 THEN 'GL_DATE' 
48492                 
48493                 ELSE null
48494               END                           source_code
48495             , CASE r
48496                 WHEN 1 THEN TO_CHAR(h2.GL_DATE)
48497                 
48498                 ELSE null
48499               END                           source_value
48500             , null              source_meaning
48501          FROM xla_events_gt     xet  
48502       , PA_XLA_BC_PKT_PO_HEADER_V  h2
48503              ,(select rownum r from all_objects where rownum <= 1 and owner = p_apps_owner)
48504          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
48505            AND xet.event_class_code = C_EVENT_CLASS_CODE
48506               AND h2.event_id = xet.event_id
48507 
48508 )
48509 ;
48510 --
48511 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
48512 
48513       trace
48514          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
48515          ,p_level    => C_LEVEL_STATEMENT
48516          ,p_module   => l_log_module);
48517 
48518 END IF;
48519 --
48520 
48521 
48522 
48523 --
48524 INSERT INTO xla_diag_sources  --line2
48525 (
48526         event_id
48527       , ledger_id
48528       , sla_ledger_id
48529       , description_language
48530       , object_name
48531       , object_type_code
48532       , line_number
48533       , source_application_id
48534       , source_type_code
48535       , source_code
48536       , source_value
48537       , source_meaning
48538       , created_by
48539       , creation_date
48540       , last_update_date
48541       , last_updated_by
48542       , last_update_login
48543       , program_update_date
48544       , program_application_id
48545       , program_id
48546       , request_id
48547 )
48548 SELECT  event_id
48549       , p_target_ledger_id
48550       , p_sla_ledger_id
48551       , p_language
48552       , object_name
48553       , object_type_code
48554       , line_number
48555       , source_application_id
48556       , source_type_code
48557       , source_code
48558       , SUBSTR(source_value,1,1996)
48559       , SUBSTR(source_meaning ,1,200)
48560       , xla_environment_pkg.g_Usr_Id
48561       , TRUNC(SYSDATE)
48562       , TRUNC(SYSDATE)
48563       , xla_environment_pkg.g_Usr_Id
48564       , xla_environment_pkg.g_Login_Id
48565       , TRUNC(SYSDATE)
48566       , xla_environment_pkg.g_Prog_Appl_Id
48567       , xla_environment_pkg.g_Prog_Id
48568       , xla_environment_pkg.g_Req_Id
48569   FROM (
48570        SELECT xet.event_id                  event_id
48571             , l1.line_number                 line_number
48572             , CASE r
48573                WHEN 1 THEN 'PA_XLA_PROJECT_REF_V' 
48574                 WHEN 2 THEN 'PA_XLA_TASK_REF_V' 
48575                 WHEN 3 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48576                 WHEN 4 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48577                 WHEN 5 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48578                 WHEN 6 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48579                 WHEN 7 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48580                 WHEN 8 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48581                 WHEN 9 THEN 'PA_XLA_PROJECT_REF_V' 
48582                 WHEN 10 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48583                 WHEN 11 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48584                 WHEN 12 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48585                 WHEN 13 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48586                 WHEN 14 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48587                 WHEN 15 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48588                 WHEN 16 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48589                 WHEN 17 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48590                 WHEN 18 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48591                 WHEN 19 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48592                 WHEN 20 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48593                 WHEN 21 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48594                 WHEN 22 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48595                 WHEN 23 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48596                 WHEN 24 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48597                 WHEN 25 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48598                 WHEN 26 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48599                 WHEN 27 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48600                 WHEN 28 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48601                 WHEN 29 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48602                 WHEN 30 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48603                 WHEN 31 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48604                 WHEN 32 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48605                 WHEN 33 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48606                 WHEN 34 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48607                 WHEN 35 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48608                 WHEN 36 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48609                 WHEN 37 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48610                 WHEN 38 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48611                 WHEN 39 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48612                 WHEN 40 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48613                 WHEN 41 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48614                 WHEN 42 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48615                 WHEN 43 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48616                 WHEN 44 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48617                 WHEN 45 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48618                 WHEN 46 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
48619                 
48620                ELSE null
48621               END                           object_name
48622             , CASE r
48623                 WHEN 1 THEN 'LINE' 
48624                 WHEN 2 THEN 'LINE' 
48625                 WHEN 3 THEN 'LINE' 
48626                 WHEN 4 THEN 'LINE' 
48627                 WHEN 5 THEN 'LINE' 
48628                 WHEN 6 THEN 'LINE' 
48629                 WHEN 7 THEN 'LINE' 
48630                 WHEN 8 THEN 'LINE' 
48631                 WHEN 9 THEN 'LINE' 
48632                 WHEN 10 THEN 'LINE' 
48633                 WHEN 11 THEN 'LINE' 
48634                 WHEN 12 THEN 'LINE' 
48635                 WHEN 13 THEN 'LINE' 
48636                 WHEN 14 THEN 'LINE' 
48637                 WHEN 15 THEN 'LINE' 
48638                 WHEN 16 THEN 'LINE' 
48639                 WHEN 17 THEN 'LINE' 
48640                 WHEN 18 THEN 'LINE' 
48641                 WHEN 19 THEN 'LINE' 
48642                 WHEN 20 THEN 'LINE' 
48643                 WHEN 21 THEN 'LINE' 
48644                 WHEN 22 THEN 'LINE' 
48645                 WHEN 23 THEN 'LINE' 
48646                 WHEN 24 THEN 'LINE' 
48647                 WHEN 25 THEN 'LINE' 
48648                 WHEN 26 THEN 'LINE' 
48649                 WHEN 27 THEN 'LINE' 
48650                 WHEN 28 THEN 'LINE' 
48651                 WHEN 29 THEN 'LINE' 
48652                 WHEN 30 THEN 'LINE' 
48653                 WHEN 31 THEN 'LINE' 
48654                 WHEN 32 THEN 'LINE' 
48655                 WHEN 33 THEN 'LINE' 
48656                 WHEN 34 THEN 'LINE' 
48657                 WHEN 35 THEN 'LINE' 
48658                 WHEN 36 THEN 'LINE' 
48659                 WHEN 37 THEN 'LINE' 
48660                 WHEN 38 THEN 'LINE' 
48661                 WHEN 39 THEN 'LINE' 
48662                 WHEN 40 THEN 'LINE' 
48663                 WHEN 41 THEN 'LINE' 
48664                 WHEN 42 THEN 'LINE' 
48665                 WHEN 43 THEN 'LINE' 
48666                 WHEN 44 THEN 'LINE' 
48667                 WHEN 45 THEN 'LINE' 
48668                 WHEN 46 THEN 'LINE' 
48669                 
48670                 ELSE null
48671               END                           object_type_code
48672             , CASE r
48673                 WHEN 1 THEN '275' 
48674                 WHEN 2 THEN '275' 
48675                 WHEN 3 THEN '201' 
48676                 WHEN 4 THEN '201' 
48677                 WHEN 5 THEN '201' 
48678                 WHEN 6 THEN '201' 
48679                 WHEN 7 THEN '201' 
48680                 WHEN 8 THEN '201' 
48681                 WHEN 9 THEN '275' 
48682                 WHEN 10 THEN '201' 
48683                 WHEN 11 THEN '201' 
48684                 WHEN 12 THEN '201' 
48685                 WHEN 13 THEN '201' 
48686                 WHEN 14 THEN '201' 
48687                 WHEN 15 THEN '201' 
48688                 WHEN 16 THEN '201' 
48689                 WHEN 17 THEN '201' 
48690                 WHEN 18 THEN '201' 
48691                 WHEN 19 THEN '201' 
48692                 WHEN 20 THEN '201' 
48693                 WHEN 21 THEN '201' 
48694                 WHEN 22 THEN '201' 
48695                 WHEN 23 THEN '201' 
48696                 WHEN 24 THEN '201' 
48697                 WHEN 25 THEN '201' 
48698                 WHEN 26 THEN '201' 
48699                 WHEN 27 THEN '201' 
48700                 WHEN 28 THEN '201' 
48701                 WHEN 29 THEN '201' 
48702                 WHEN 30 THEN '201' 
48703                 WHEN 31 THEN '201' 
48704                 WHEN 32 THEN '201' 
48705                 WHEN 33 THEN '201' 
48706                 WHEN 34 THEN '201' 
48707                 WHEN 35 THEN '201' 
48708                 WHEN 36 THEN '201' 
48709                 WHEN 37 THEN '201' 
48710                 WHEN 38 THEN '201' 
48711                 WHEN 39 THEN '201' 
48712                 WHEN 40 THEN '201' 
48713                 WHEN 41 THEN '201' 
48714                 WHEN 42 THEN '201' 
48715                 WHEN 43 THEN '201' 
48716                 WHEN 44 THEN '201' 
48717                 WHEN 45 THEN '201' 
48718                 WHEN 46 THEN '201' 
48719                 
48720                 ELSE null
48721               END                           source_application_id
48722             , 'S'             source_type_code
48723             , CASE r
48724                 WHEN 1 THEN 'PROJECT_NAME' 
48725                 WHEN 2 THEN 'TASK_NAME' 
48726                 WHEN 3 THEN 'EXPENDITURE_ORGANIZATION_ID' 
48727                 WHEN 4 THEN 'EXPENDITURE_TYPE' 
48728                 WHEN 5 THEN 'DOCUMENT_TYPE' 
48729                 WHEN 6 THEN 'BUDGET_ACCOUNT' 
48730                 WHEN 7 THEN 'MAIN_OR_BACKING_CODE' 
48731                 WHEN 8 THEN 'BURDEN_COST_FLAG' 
48732                 WHEN 9 THEN 'PROJ_BURDEN_DISPLAY_METHOD' 
48733                 WHEN 10 THEN 'ACCOUNTING_REVERSAL_FLAG' 
48734                 WHEN 11 THEN 'ALLOC_TO_APPLN_ID' 
48735                 WHEN 12 THEN 'ALLOC_TO_DIST_TYPE' 
48736                 WHEN 13 THEN 'ALLOC_TO_ENTITY_CODE' 
48737                 WHEN 14 THEN 'ALLOC_TO_FIRST_DIST_ID' 
48738                 WHEN 15 THEN 'ALLOC_TO_FIRST_SYS_TRANS_ID' 
48739                 WHEN 16 THEN 'PO_APPLICATION_ID' 
48740                 WHEN 17 THEN 'PO_DISTRIBUTION_TYPE' 
48741                 WHEN 18 THEN 'PO_ENTITY_CODE' 
48742                 WHEN 19 THEN 'PO_FIRST_DIST_ID' 
48743                 WHEN 20 THEN 'PO_FIRST_SYS_TRANS_ID' 
48744                 WHEN 21 THEN 'PO_SECOND_DIST_ID' 
48745                 WHEN 22 THEN 'PO_DISTRIBUTION_ID' 
48746                 WHEN 23 THEN 'LINE_TYPE_NAME' 
48747                 WHEN 24 THEN 'ENC_UPG_CR_ACCT_CLASS' 
48748                 WHEN 25 THEN 'ENC_UPG_CR_ACCOUNT' 
48749                 WHEN 26 THEN 'ENTERED_AMT' 
48750                 WHEN 27 THEN 'CURRENCY_CODE' 
48751                 WHEN 28 THEN 'ACCOUNTED_AMT' 
48752                 WHEN 29 THEN 'ENC_UPG_DR_ACCT_CLASS' 
48753                 WHEN 30 THEN 'ENC_UPG_DR_ACCOUNT' 
48754                 WHEN 31 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
48755                 WHEN 32 THEN 'ENC_UPG_CR_ENC_TYPE_ID' 
48756                 WHEN 33 THEN 'ENC_UPG_DR_ENC_TYPE_ID' 
48757                 WHEN 34 THEN 'REQ_APPLICATION_ID' 
48758                 WHEN 35 THEN 'REQ_DISTRIBUTION_TYPE' 
48759                 WHEN 36 THEN 'REQ_ENTITY_CODE' 
48760                 WHEN 37 THEN 'REQ_FIRST_DIST_ID' 
48761                 WHEN 38 THEN 'REQ_FIRST_SYS_TRANS_ID' 
48762                 WHEN 39 THEN 'REQ_SECOND_DIST_ID' 
48763                 WHEN 40 THEN 'BACKING_REQ_ENC_FLIPPED_FLAG' 
48764                 WHEN 41 THEN 'PA_APPLICATION_ID' 
48765                 WHEN 42 THEN 'PA_DISTRIBUTION_TYPE' 
48766                 WHEN 43 THEN 'PA_ENTITY_CODE' 
48767                 WHEN 44 THEN 'PA_FIRST_DIST_ID' 
48768                 WHEN 45 THEN 'PA_FIRST_SYS_TRANS_ID' 
48769                 WHEN 46 THEN 'PA_SECOND_DIST_ID' 
48770                 
48771                 ELSE null
48772               END                           source_code
48773             , CASE r
48774                 WHEN 1 THEN TO_CHAR(l3.PROJECT_NAME)
48775                 WHEN 2 THEN TO_CHAR(l4.TASK_NAME)
48776                 WHEN 3 THEN TO_CHAR(l1.EXPENDITURE_ORGANIZATION_ID)
48777                 WHEN 4 THEN TO_CHAR(l1.EXPENDITURE_TYPE)
48778                 WHEN 5 THEN TO_CHAR(l1.DOCUMENT_TYPE)
48779                 WHEN 6 THEN TO_CHAR(l1.BUDGET_ACCOUNT)
48780                 WHEN 7 THEN TO_CHAR(l1.MAIN_OR_BACKING_CODE)
48781                 WHEN 8 THEN TO_CHAR(l1.BURDEN_COST_FLAG)
48782                 WHEN 9 THEN TO_CHAR(l3.PROJ_BURDEN_DISPLAY_METHOD)
48783                 WHEN 10 THEN TO_CHAR(l1.ACCOUNTING_REVERSAL_FLAG)
48784                 WHEN 11 THEN TO_CHAR(l1.ALLOC_TO_APPLN_ID)
48785                 WHEN 12 THEN TO_CHAR(l1.ALLOC_TO_DIST_TYPE)
48786                 WHEN 13 THEN TO_CHAR(l1.ALLOC_TO_ENTITY_CODE)
48787                 WHEN 14 THEN TO_CHAR(l1.ALLOC_TO_FIRST_DIST_ID)
48788                 WHEN 15 THEN TO_CHAR(l1.ALLOC_TO_FIRST_SYS_TRANS_ID)
48789                 WHEN 16 THEN TO_CHAR(l1.PO_APPLICATION_ID)
48790                 WHEN 17 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
48791                 WHEN 18 THEN TO_CHAR(l1.PO_ENTITY_CODE)
48792                 WHEN 19 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
48793                 WHEN 20 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
48794                 WHEN 21 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
48795                 WHEN 22 THEN TO_CHAR(l1.PO_DISTRIBUTION_ID)
48796                 WHEN 23 THEN TO_CHAR(l1.LINE_TYPE_NAME)
48797                 WHEN 24 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
48798                 WHEN 25 THEN TO_CHAR(l1.ENC_UPG_CR_ACCOUNT)
48799                 WHEN 26 THEN TO_CHAR(l1.ENTERED_AMT)
48800                 WHEN 27 THEN TO_CHAR(l1.CURRENCY_CODE)
48801                 WHEN 28 THEN TO_CHAR(l1.ACCOUNTED_AMT)
48802                 WHEN 29 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
48803                 WHEN 30 THEN TO_CHAR(l1.ENC_UPG_DR_ACCOUNT)
48804                 WHEN 31 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
48805                 WHEN 32 THEN TO_CHAR(l1.ENC_UPG_CR_ENC_TYPE_ID)
48806                 WHEN 33 THEN TO_CHAR(l1.ENC_UPG_DR_ENC_TYPE_ID)
48807                 WHEN 34 THEN TO_CHAR(l1.REQ_APPLICATION_ID)
48808                 WHEN 35 THEN TO_CHAR(l1.REQ_DISTRIBUTION_TYPE)
48809                 WHEN 36 THEN TO_CHAR(l1.REQ_ENTITY_CODE)
48810                 WHEN 37 THEN TO_CHAR(l1.REQ_FIRST_DIST_ID)
48811                 WHEN 38 THEN TO_CHAR(l1.REQ_FIRST_SYS_TRANS_ID)
48812                 WHEN 39 THEN TO_CHAR(l1.REQ_SECOND_DIST_ID)
48813                 WHEN 40 THEN TO_CHAR(l1.BACKING_REQ_ENC_FLIPPED_FLAG)
48814                 WHEN 41 THEN TO_CHAR(l1.PA_APPLICATION_ID)
48815                 WHEN 42 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
48816                 WHEN 43 THEN TO_CHAR(l1.PA_ENTITY_CODE)
48817                 WHEN 44 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
48818                 WHEN 45 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
48819                 WHEN 46 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
48820                 
48821                 ELSE null
48822               END                           source_value
48823             , CASE r
48824                 WHEN 3 THEN XLA_00201_AAD_S_000005_BC_PKG.GetMeaning(
48825                           1011404
48826                          ,TO_CHAR(l1.EXPENDITURE_ORGANIZATION_ID)
48827                          ,'EXPENDITURE_ORGANIZATION_ID'
48828                          ,'S'
48829                          ,201)
48830                 WHEN 8 THEN fvl14.meaning
48831                 
48832                 ELSE null
48833               END               source_meaning
48834          FROM  xla_events_gt     xet  
48835         , PA_XLA_BC_PKT_PO_DETAIL_V  l1
48836         , PA_XLA_PROJECT_REF_V  l3
48837         , PA_XLA_TASK_REF_V  l4
48838   , fnd_lookup_values    fvl14
48839             , (select rownum r from all_objects where rownum <= 46 and owner = p_apps_owner)
48840         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
48841           AND xet.event_class_code = C_EVENT_CLASS_CODE
48842             AND l1.event_id          = xet.event_id
48843  AND l3.project_id=l1.project_id AND l4.task_id=l1.task_id   AND fvl14.lookup_type(+)         = 'BC_PKT_BURDEN_COST_FLAG'
48844   AND fvl14.lookup_code(+)         = l1.BURDEN_COST_FLAG
48845   AND fvl14.view_application_id(+) = 275
48846   AND fvl14.language(+)            = USERENV('LANG')
48847   
48848 )
48849 ;
48850 --
48851 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
48852 
48853       trace
48854          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
48855          ,p_level    => C_LEVEL_STATEMENT
48856          ,p_module   => l_log_module);
48857 
48858 END IF;
48859 
48860 
48861 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48862       trace
48863          (p_msg      => 'END of insert_sources_85'
48864          ,p_level    => C_LEVEL_PROCEDURE
48865          ,p_module   => l_log_module);
48866 END IF;
48867 EXCEPTION
48868   WHEN xla_exceptions_pkg.application_exception THEN
48869       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
48870             trace
48871                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
48872                ,p_level    => C_LEVEL_EXCEPTION
48873                ,p_module   => l_log_module);
48874       END IF;
48875       RAISE;
48876   WHEN OTHERS THEN
48877       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
48878             trace
48879                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
48880                ,p_level    => C_LEVEL_EXCEPTION
48881                ,p_module   => l_log_module);
48882        END IF;
48883        xla_exceptions_pkg.raise_message
48884            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.insert_sources_85');
48885 END insert_sources_85;
48886 --
48887 
48888 ---------------------------------------
48889 --
48890 -- PRIVATE FUNCTION
48891 --         EventClass_85
48892 --
48893 ----------------------------------------
48894 --
48895 FUNCTION EventClass_85
48896        (p_application_id         IN NUMBER
48897        ,p_base_ledger_id         IN NUMBER
48898        ,p_target_ledger_id       IN NUMBER
48899        ,p_language               IN VARCHAR2
48900        ,p_currency_code          IN VARCHAR2
48901        ,p_sla_ledger_id          IN NUMBER
48902        ,p_pad_start_date         IN DATE
48903        ,p_pad_end_date           IN DATE
48904        ,p_primary_ledger_id      IN NUMBER)
48905 RETURN BOOLEAN IS
48906 --
48907 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_BURDEN_ALL';
48908 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PO_BURDEN';
48909 
48910 l_calculate_acctd_flag   VARCHAR2(1) :='N';
48911 l_calculate_g_l_flag     VARCHAR2(1) :='N';
48912 --
48913 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48914 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48915 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
48916 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
48917 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48918 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
48919 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
48920 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48921 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
48922 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
48923 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48924 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48925 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48926 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
48927 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
48928 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
48929 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
48930 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
48931 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
48932 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
48933 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
48934 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
48935 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
48936 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
48937 
48938 l_event_id                             NUMBER;
48939 l_previous_event_id                    NUMBER;
48940 l_first_event_id                       NUMBER;
48941 l_last_event_id                        NUMBER;
48942 
48943 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
48944 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
48945 --
48946 --
48947 l_result                    BOOLEAN := TRUE;
48948 l_rows                      NUMBER  := 1000;
48949 l_event_type_name           VARCHAR2(80) := 'All';
48950 l_event_class_name          VARCHAR2(80) := 'Burden for Purchase Orders';
48951 l_description               VARCHAR2(4000);
48952 l_transaction_reversal      NUMBER;
48953 l_ae_header_id              NUMBER;
48954 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
48955 l_log_module                VARCHAR2(240);
48956 --
48957 l_acct_reversal_source      VARCHAR2(30);
48958 l_trx_reversal_source       VARCHAR2(30);
48959 
48960 l_continue_with_lines       BOOLEAN := TRUE;
48961 --
48962 l_acc_rev_gl_date_source    DATE;                      -- 4262811
48963 --
48964 type t_array_event_id is table of number index by binary_integer;
48965 
48966 l_rec_array_event                    t_rec_array_event;
48967 l_null_rec_array_event               t_rec_array_event;
48968 l_array_ae_header_id                 xla_number_array_type;
48969 l_actual_flag                        VARCHAR2(1) := NULL;
48970 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
48971 l_balance_type_code                  VARCHAR2(1) :=NULL;
48972 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
48973 
48974 --
48975 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
48976 --
48977 
48978 TYPE t_array_source_79 IS TABLE OF PA_XLA_BC_PKT_PO_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
48979 
48980 TYPE t_array_source_3 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJECT_NAME%TYPE INDEX BY BINARY_INTEGER;
48981 TYPE t_array_source_4 IS TABLE OF PA_XLA_TASK_REF_V.TASK_NAME%TYPE INDEX BY BINARY_INTEGER;
48982 TYPE t_array_source_5 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.EXPENDITURE_ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
48983 TYPE t_array_source_6 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.EXPENDITURE_TYPE%TYPE INDEX BY BINARY_INTEGER;
48984 TYPE t_array_source_9 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
48985 TYPE t_array_source_11 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
48986 TYPE t_array_source_13 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
48987 TYPE t_array_source_14 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.BURDEN_COST_FLAG%TYPE INDEX BY BINARY_INTEGER;
48988 TYPE t_array_source_15 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJ_BURDEN_DISPLAY_METHOD%TYPE INDEX BY BINARY_INTEGER;
48989 TYPE t_array_source_16 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
48990 TYPE t_array_source_17 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_APPLN_ID%TYPE INDEX BY BINARY_INTEGER;
48991 TYPE t_array_source_18 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
48992 TYPE t_array_source_19 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
48993 TYPE t_array_source_20 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
48994 TYPE t_array_source_21 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
48995 TYPE t_array_source_23 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
48996 TYPE t_array_source_24 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
48997 TYPE t_array_source_25 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
48998 TYPE t_array_source_26 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
48999 TYPE t_array_source_27 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
49000 TYPE t_array_source_28 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
49001 TYPE t_array_source_29 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
49002 TYPE t_array_source_30 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.LINE_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
49003 TYPE t_array_source_31 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
49004 TYPE t_array_source_32 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_CR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
49005 TYPE t_array_source_33 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
49006 TYPE t_array_source_34 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
49007 TYPE t_array_source_35 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
49008 TYPE t_array_source_36 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
49009 TYPE t_array_source_37 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_DR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
49010 TYPE t_array_source_38 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
49011 TYPE t_array_source_39 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_CR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
49012 TYPE t_array_source_40 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_DR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
49013 TYPE t_array_source_41 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
49014 TYPE t_array_source_42 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
49015 TYPE t_array_source_43 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
49016 TYPE t_array_source_44 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
49017 TYPE t_array_source_45 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
49018 TYPE t_array_source_46 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
49019 TYPE t_array_source_67 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.BACKING_REQ_ENC_FLIPPED_FLAG%TYPE INDEX BY BINARY_INTEGER;
49020 TYPE t_array_source_68 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
49021 TYPE t_array_source_69 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
49022 TYPE t_array_source_70 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
49023 TYPE t_array_source_71 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
49024 TYPE t_array_source_72 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
49025 TYPE t_array_source_73 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
49026 
49027 l_array_source_79              t_array_source_79;
49028 
49029 l_array_source_3      t_array_source_3;
49030 l_array_source_4      t_array_source_4;
49031 l_array_source_5      t_array_source_5;
49032 l_array_source_6      t_array_source_6;
49033 l_array_source_9      t_array_source_9;
49034 l_array_source_11      t_array_source_11;
49035 l_array_source_13      t_array_source_13;
49036 l_array_source_14      t_array_source_14;
49037 l_array_source_14_meaning      t_array_lookup_meaning;
49038 l_array_source_15      t_array_source_15;
49039 l_array_source_16      t_array_source_16;
49040 l_array_source_17      t_array_source_17;
49041 l_array_source_18      t_array_source_18;
49042 l_array_source_19      t_array_source_19;
49043 l_array_source_20      t_array_source_20;
49044 l_array_source_21      t_array_source_21;
49045 l_array_source_23      t_array_source_23;
49046 l_array_source_24      t_array_source_24;
49047 l_array_source_25      t_array_source_25;
49048 l_array_source_26      t_array_source_26;
49049 l_array_source_27      t_array_source_27;
49050 l_array_source_28      t_array_source_28;
49051 l_array_source_29      t_array_source_29;
49052 l_array_source_30      t_array_source_30;
49053 l_array_source_31      t_array_source_31;
49054 l_array_source_32      t_array_source_32;
49055 l_array_source_33      t_array_source_33;
49056 l_array_source_34      t_array_source_34;
49057 l_array_source_35      t_array_source_35;
49058 l_array_source_36      t_array_source_36;
49059 l_array_source_37      t_array_source_37;
49060 l_array_source_38      t_array_source_38;
49061 l_array_source_39      t_array_source_39;
49062 l_array_source_40      t_array_source_40;
49063 l_array_source_41      t_array_source_41;
49064 l_array_source_42      t_array_source_42;
49065 l_array_source_43      t_array_source_43;
49066 l_array_source_44      t_array_source_44;
49067 l_array_source_45      t_array_source_45;
49068 l_array_source_46      t_array_source_46;
49069 l_array_source_67      t_array_source_67;
49070 l_array_source_68      t_array_source_68;
49071 l_array_source_69      t_array_source_69;
49072 l_array_source_70      t_array_source_70;
49073 l_array_source_71      t_array_source_71;
49074 l_array_source_72      t_array_source_72;
49075 l_array_source_73      t_array_source_73;
49076 
49077 --
49078 CURSOR header_cur
49079 IS
49080 SELECT /*+ leading(xet) cardinality(xet,1) */
49081 -- Event Class Code: PO_BURDEN
49082     xet.entity_id
49083    ,xet.legal_entity_id
49084    ,xet.entity_code
49085    ,xet.transaction_number
49086    ,xet.event_id
49087    ,xet.event_class_code
49088    ,xet.event_type_code
49089    ,xet.event_number
49090    ,xet.event_date
49091    ,xet.transaction_date
49092    ,xet.reference_num_1
49093    ,xet.reference_num_2
49094    ,xet.reference_num_3
49095    ,xet.reference_num_4
49096    ,xet.reference_char_1
49097    ,xet.reference_char_2
49098    ,xet.reference_char_3
49099    ,xet.reference_char_4
49100    ,xet.reference_date_1
49101    ,xet.reference_date_2
49102    ,xet.reference_date_3
49103    ,xet.reference_date_4
49104    ,xet.event_created_by
49105    ,xet.budgetary_control_flag 
49106   , h2.GL_DATE    source_79
49107   FROM xla_events_gt     xet 
49108   , PA_XLA_BC_PKT_PO_HEADER_V  h2
49109  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
49110    and xet.event_class_code = C_EVENT_CLASS_CODE
49111    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
49112 
49113  ORDER BY event_id
49114 ;
49115 
49116 
49117 --
49118 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
49119 IS
49120 SELECT  /*+ leading(xet) cardinality(xet,1) */
49121 -- Event Class Code: PO_BURDEN
49122     xet.entity_id
49123    ,xet.legal_entity_id
49124    ,xet.entity_code
49125    ,xet.transaction_number
49126    ,xet.event_id
49127    ,xet.event_class_code
49128    ,xet.event_type_code
49129    ,xet.event_number
49130    ,xet.event_date
49131    ,xet.transaction_date
49132    ,xet.reference_num_1
49133    ,xet.reference_num_2
49134    ,xet.reference_num_3
49135    ,xet.reference_num_4
49136    ,xet.reference_char_1
49137    ,xet.reference_char_2
49138    ,xet.reference_char_3
49139    ,xet.reference_char_4
49140    ,xet.reference_date_1
49141    ,xet.reference_date_2
49142    ,xet.reference_date_3
49143    ,xet.reference_date_4
49144    ,xet.event_created_by
49145    ,xet.budgetary_control_flag
49146  , l1.LINE_NUMBER  
49147   , l3.PROJECT_NAME    source_3
49148   , l4.TASK_NAME    source_4
49149   , l1.EXPENDITURE_ORGANIZATION_ID    source_5
49150   , l1.EXPENDITURE_TYPE    source_6
49151   , l1.DOCUMENT_TYPE    source_9
49152   , l1.BUDGET_ACCOUNT    source_11
49153   , l1.MAIN_OR_BACKING_CODE    source_13
49154   , l1.BURDEN_COST_FLAG    source_14
49155   , fvl14.meaning   source_14_meaning
49156   , l3.PROJ_BURDEN_DISPLAY_METHOD    source_15
49157   , l1.ACCOUNTING_REVERSAL_FLAG    source_16
49158   , l1.ALLOC_TO_APPLN_ID    source_17
49159   , l1.ALLOC_TO_DIST_TYPE    source_18
49160   , l1.ALLOC_TO_ENTITY_CODE    source_19
49161   , l1.ALLOC_TO_FIRST_DIST_ID    source_20
49162   , l1.ALLOC_TO_FIRST_SYS_TRANS_ID    source_21
49163   , l1.PO_APPLICATION_ID    source_23
49164   , l1.PO_DISTRIBUTION_TYPE    source_24
49165   , l1.PO_ENTITY_CODE    source_25
49166   , l1.PO_FIRST_DIST_ID    source_26
49167   , l1.PO_FIRST_SYS_TRANS_ID    source_27
49168   , l1.PO_SECOND_DIST_ID    source_28
49169   , l1.PO_DISTRIBUTION_ID    source_29
49170   , l1.LINE_TYPE_NAME    source_30
49171   , l1.ENC_UPG_CR_ACCT_CLASS    source_31
49172   , l1.ENC_UPG_CR_ACCOUNT    source_32
49173   , l1.ENTERED_AMT    source_33
49174   , l1.CURRENCY_CODE    source_34
49175   , l1.ACCOUNTED_AMT    source_35
49176   , l1.ENC_UPG_DR_ACCT_CLASS    source_36
49177   , l1.ENC_UPG_DR_ACCOUNT    source_37
49178   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_38
49179   , l1.ENC_UPG_CR_ENC_TYPE_ID    source_39
49180   , l1.ENC_UPG_DR_ENC_TYPE_ID    source_40
49181   , l1.REQ_APPLICATION_ID    source_41
49182   , l1.REQ_DISTRIBUTION_TYPE    source_42
49183   , l1.REQ_ENTITY_CODE    source_43
49184   , l1.REQ_FIRST_DIST_ID    source_44
49185   , l1.REQ_FIRST_SYS_TRANS_ID    source_45
49186   , l1.REQ_SECOND_DIST_ID    source_46
49187   , l1.BACKING_REQ_ENC_FLIPPED_FLAG    source_67
49188   , l1.PA_APPLICATION_ID    source_68
49189   , l1.PA_DISTRIBUTION_TYPE    source_69
49190   , l1.PA_ENTITY_CODE    source_70
49191   , l1.PA_FIRST_DIST_ID    source_71
49192   , l1.PA_FIRST_SYS_TRANS_ID    source_72
49193   , l1.PA_SECOND_DIST_ID    source_73
49194   FROM xla_events_gt     xet 
49195   , PA_XLA_BC_PKT_PO_DETAIL_V  l1
49196   , PA_XLA_PROJECT_REF_V  l3
49197   , PA_XLA_TASK_REF_V  l4
49198   , fnd_lookup_values    fvl14
49199  WHERE xet.event_id between x_first_event_id and x_last_event_id
49200    and xet.event_date between p_pad_start_date and p_pad_end_date
49201    and xet.event_class_code = C_EVENT_CLASS_CODE
49202    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
49203  AND l3.project_id=l1.project_id AND l4.task_id=l1.task_id   AND fvl14.lookup_type(+)         = 'BC_PKT_BURDEN_COST_FLAG'
49204   AND fvl14.lookup_code(+)         = l1.BURDEN_COST_FLAG
49205   AND fvl14.view_application_id(+) = 275
49206   AND fvl14.language(+)            = USERENV('LANG')
49207   ;
49208 
49209 --
49210 BEGIN
49211 IF g_log_enabled THEN
49212    l_log_module := C_DEFAULT_MODULE||'.EventClass_85';
49213 END IF;
49214 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49215    trace
49216       (p_msg      => 'BEGIN of EventClass_85'
49217       ,p_level    => C_LEVEL_PROCEDURE
49218       ,p_module   => l_log_module);
49219 END IF;
49220 
49221 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
49222    trace
49223       (p_msg      => 'p_application_id = '||p_application_id||
49224                      ' - p_base_ledger_id = '||p_base_ledger_id||
49225                      ' - p_target_ledger_id  = '||p_target_ledger_id||
49226                      ' - p_language = '||p_language||
49227                      ' - p_currency_code = '||p_currency_code||
49228                      ' - p_sla_ledger_id = '||p_sla_ledger_id
49229       ,p_level    => C_LEVEL_STATEMENT
49230       ,p_module   => l_log_module);
49231 END IF;
49232 --
49233 -- initialze arrays
49234 --
49235 g_array_event.DELETE;
49236 l_rec_array_event := l_null_rec_array_event;
49237 --
49238 --------------------------------------
49239 -- 4262811 Initialze MPA Line Number
49240 --------------------------------------
49241 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
49242 
49243 --
49244 
49245 --
49246 OPEN header_cur;
49247 --
49248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
49249    trace
49250    (p_msg      => 'SQL - FETCH header_cur'
49251    ,p_level    => C_LEVEL_STATEMENT
49252    ,p_module   => l_log_module);
49253 END IF;
49254 --
49255 LOOP
49256 FETCH header_cur BULK COLLECT INTO
49257         l_array_entity_id
49258       , l_array_legal_entity_id
49259       , l_array_entity_code
49260       , l_array_transaction_num
49261       , l_array_event_id
49262       , l_array_class_code
49263       , l_array_event_type
49264       , l_array_event_number
49265       , l_array_event_date
49266       , l_array_transaction_date
49267       , l_array_reference_num_1
49268       , l_array_reference_num_2
49269       , l_array_reference_num_3
49270       , l_array_reference_num_4
49271       , l_array_reference_char_1
49272       , l_array_reference_char_2
49273       , l_array_reference_char_3
49274       , l_array_reference_char_4
49275       , l_array_reference_date_1
49276       , l_array_reference_date_2
49277       , l_array_reference_date_3
49278       , l_array_reference_date_4
49279       , l_array_event_created_by
49280       , l_array_budgetary_control_flag 
49281       , l_array_source_79
49282       LIMIT l_rows;
49283 --
49284 IF (C_LEVEL_EVENT >= g_log_level) THEN
49285    trace
49286    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
49287    ,p_level    => C_LEVEL_EVENT
49288    ,p_module   => l_log_module);
49289 END IF;
49290 --
49291 EXIT WHEN l_array_entity_id.COUNT = 0;
49292 
49293 -- initialize arrays
49294 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
49295 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
49296 
49297 --
49298 -- Bug 4458708
49299 --
49300 XLA_AE_LINES_PKG.g_LineNumber := 0;
49301 
49302 
49303 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
49304 g_last_hdr_idx := l_array_event_id.LAST;
49305 --
49306 -- loop for the headers. Each iteration is for each header extract row
49307 -- fetched in header cursor
49308 --
49309 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
49310 
49311 --
49312 -- set event info as cache for other routines to refer event attributes
49313 --
49314 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
49315    (p_application_id           => p_application_id
49316    ,p_primary_ledger_id        => p_primary_ledger_id
49317    ,p_base_ledger_id           => p_base_ledger_id
49318    ,p_target_ledger_id         => p_target_ledger_id
49319    ,p_entity_id                => l_array_entity_id(hdr_idx)
49320    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
49321    ,p_entity_code              => l_array_entity_code(hdr_idx)
49322    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
49323    ,p_event_id                 => l_array_event_id(hdr_idx)
49324    ,p_event_class_code         => l_array_class_code(hdr_idx)
49325    ,p_event_type_code          => l_array_event_type(hdr_idx)
49326    ,p_event_number             => l_array_event_number(hdr_idx)
49327    ,p_event_date               => l_array_event_date(hdr_idx)
49328    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
49329    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
49330    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
49331    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
49332    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
49333    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
49334    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
49335    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
49336    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
49337    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
49338    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
49339    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
49340    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
49341    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
49342    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
49343 
49344 --
49345 -- set the status of entry to C_VALID (0)
49346 --
49347 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
49348 
49349 --
49350 -- initialize a row for ae header
49351 --
49352 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
49353 
49354 l_event_id := l_array_event_id(hdr_idx);
49355 
49356 --
49357 -- storing the hdr_idx for event. May be used by line cursor.
49358 --
49359 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
49360 
49361 --
49362 -- store sources from header extract. This can be improved to
49363 -- store only those sources from header extract that may be used in lines
49364 --
49365 
49366 g_array_event(l_event_id).array_value_date('source_79') := l_array_source_79(hdr_idx);
49367 
49368 --
49369 -- initilaize the status of ae headers for diffrent balance types
49370 -- the status is initialised to C_NOT_CREATED (2)
49371 --
49372 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
49373 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
49374 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
49375 
49376 --
49377 -- call api to validate and store accounting attributes for header
49378 --
49379 
49380 ------------------------------------------------------------
49381 -- Accrual Reversal : to get date for Standard Source (NONE)
49382 ------------------------------------------------------------
49383 l_acc_rev_gl_date_source := NULL;
49384 
49385      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
49386       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_79');
49387 
49388 
49389 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
49390 
49391 XLA_AE_HEADER_PKG.SetJeCategoryName;
49392 
49393 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
49394 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
49395 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
49396 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
49397 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
49398 
49399 
49400 -- No header level analytical criteria
49401 
49402 --
49403 --accounting attribute enhancement, bug 3612931
49404 --
49405 l_trx_reversal_source := SUBSTR(NULL, 1,30);
49406 
49407 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
49408    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
49409 
49410    xla_accounting_err_pkg.build_message
49411       (p_appli_s_name            => 'XLA'
49412       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
49413       ,p_token_1                 => 'ACCT_ATTR_NAME'
49414       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
49415       ,p_token_2                 => 'PRODUCT_NAME'
49416       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
49417       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
49418       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
49419       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
49420 
49421 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
49422    --
49423    -- following sets the accounting attributes needed to reverse
49424    -- accounting for a distributeion
49425    --
49426    xla_ae_lines_pkg.SetTrxReversalAttrs
49427       (p_event_id              => l_event_id
49428       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
49429       ,p_trx_reversal_source   => l_trx_reversal_source);
49430 
49431 END IF;
49432 
49433 
49434 ----------------------------------------------------------------
49435 -- 4262811 -  update the header statuses to invalid in need be
49436 ----------------------------------------------------------------
49437 --
49438 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
49439 
49440 
49441   -----------------------------------------------
49442   -- No accrual reversal for the event class/type
49443   -----------------------------------------------
49444 ----------------------------------------------------------------
49445 
49446 --
49447 -- this ends the header loop iteration for one bulk fetch
49448 --
49449 END LOOP;
49450 
49451 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
49452 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
49453 
49454 --
49455 -- insert dummy rows into lines gt table that were created due to
49456 -- transaction reversals
49457 --
49458 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
49459    l_result := XLA_AE_LINES_PKG.InsertLines;
49460 END IF;
49461 
49462 --
49463 -- reset the temp_line_num for each set of events fetched from header
49464 -- cursor rather than doing it for each new event in line cursor
49465 -- Bug 3939231
49466 --
49467 xla_ae_lines_pkg.g_temp_line_num := 0;
49468 
49469 
49470 
49471 --
49472 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
49473 --
49474 --
49475 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
49476 
49477       trace
49478          (p_msg      => 'SQL - FETCH line_cur'
49479          ,p_level    => C_LEVEL_STATEMENT
49480          ,p_module   => l_log_module);
49481 
49482 END IF;
49483 --
49484 --
49485 LOOP
49486   --
49487   FETCH line_cur BULK COLLECT INTO
49488         l_array_entity_id
49489       , l_array_legal_entity_id
49490       , l_array_entity_code
49491       , l_array_transaction_num
49492       , l_array_event_id
49493       , l_array_class_code
49494       , l_array_event_type
49495       , l_array_event_number
49496       , l_array_event_date
49497       , l_array_transaction_date
49498       , l_array_reference_num_1
49499       , l_array_reference_num_2
49500       , l_array_reference_num_3
49501       , l_array_reference_num_4
49502       , l_array_reference_char_1
49503       , l_array_reference_char_2
49504       , l_array_reference_char_3
49505       , l_array_reference_char_4
49506       , l_array_reference_date_1
49507       , l_array_reference_date_2
49508       , l_array_reference_date_3
49509       , l_array_reference_date_4
49510       , l_array_event_created_by
49511       , l_array_budgetary_control_flag
49512       , l_array_extract_line_num 
49513       , l_array_source_3
49514       , l_array_source_4
49515       , l_array_source_5
49516       , l_array_source_6
49517       , l_array_source_9
49518       , l_array_source_11
49519       , l_array_source_13
49520       , l_array_source_14
49521       , l_array_source_14_meaning
49522       , l_array_source_15
49523       , l_array_source_16
49524       , l_array_source_17
49525       , l_array_source_18
49526       , l_array_source_19
49527       , l_array_source_20
49528       , l_array_source_21
49529       , l_array_source_23
49530       , l_array_source_24
49531       , l_array_source_25
49532       , l_array_source_26
49533       , l_array_source_27
49534       , l_array_source_28
49535       , l_array_source_29
49536       , l_array_source_30
49537       , l_array_source_31
49538       , l_array_source_32
49539       , l_array_source_33
49540       , l_array_source_34
49541       , l_array_source_35
49542       , l_array_source_36
49543       , l_array_source_37
49544       , l_array_source_38
49545       , l_array_source_39
49546       , l_array_source_40
49547       , l_array_source_41
49548       , l_array_source_42
49549       , l_array_source_43
49550       , l_array_source_44
49551       , l_array_source_45
49552       , l_array_source_46
49553       , l_array_source_67
49554       , l_array_source_68
49555       , l_array_source_69
49556       , l_array_source_70
49557       , l_array_source_71
49558       , l_array_source_72
49559       , l_array_source_73
49560       LIMIT l_rows;
49561 
49562   --
49563   IF (C_LEVEL_EVENT >= g_log_level) THEN
49564             trace
49565                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
49566                ,p_level    => C_LEVEL_EVENT
49567                ,p_module   => l_log_module);
49568   END IF;
49569   --
49570   EXIT WHEN l_array_entity_id.count = 0;
49571 
49572   XLA_AE_LINES_PKG.g_rec_lines := null;
49573 
49574 --
49575 -- Bug 4458708
49576 --
49577 XLA_AE_LINES_PKG.g_LineNumber := 0;
49578 --
49579 --
49580 
49581 FOR Idx IN 1..l_array_event_id.count LOOP
49582    --
49583    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
49584    --
49585    l_event_id := l_array_event_id(idx);  -- 5648433
49586 
49587    --
49588    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
49589    --
49590 
49591    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
49592              (g_array_event(l_event_id).array_value_num('header_index'))
49593          ,'N'
49594          ) <> 'Y'
49595    THEN
49596       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
49597          trace
49598             (p_msg      => 'Trancaction revesal option is not Y '
49599             ,p_level    => C_LEVEL_STATEMENT
49600             ,p_module   => l_log_module);
49601       END IF;
49602 
49603 --
49604 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
49605 --
49606 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
49607 --
49608 -- set event info as cache for other routines to refer event attributes
49609 --
49610 
49611 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
49612    l_previous_event_id := l_event_id;
49613 
49614    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
49615       (p_application_id           => p_application_id
49616       ,p_primary_ledger_id        => p_primary_ledger_id
49617       ,p_base_ledger_id           => p_base_ledger_id
49618       ,p_target_ledger_id         => p_target_ledger_id
49619       ,p_entity_id                => l_array_entity_id(Idx)
49620       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
49621       ,p_entity_code              => l_array_entity_code(Idx)
49622       ,p_transaction_num          => l_array_transaction_num(Idx)
49623       ,p_event_id                 => l_array_event_id(Idx)
49624       ,p_event_class_code         => l_array_class_code(Idx)
49625       ,p_event_type_code          => l_array_event_type(Idx)
49626       ,p_event_number             => l_array_event_number(Idx)
49627       ,p_event_date               => l_array_event_date(Idx)
49628       ,p_transaction_date         => l_array_transaction_date(Idx)
49629       ,p_reference_num_1          => l_array_reference_num_1(Idx)
49630       ,p_reference_num_2          => l_array_reference_num_2(Idx)
49631       ,p_reference_num_3          => l_array_reference_num_3(Idx)
49632       ,p_reference_num_4          => l_array_reference_num_4(Idx)
49633       ,p_reference_char_1         => l_array_reference_char_1(Idx)
49634       ,p_reference_char_2         => l_array_reference_char_2(Idx)
49635       ,p_reference_char_3         => l_array_reference_char_3(Idx)
49636       ,p_reference_char_4         => l_array_reference_char_4(Idx)
49637       ,p_reference_date_1         => l_array_reference_date_1(Idx)
49638       ,p_reference_date_2         => l_array_reference_date_2(Idx)
49639       ,p_reference_date_3         => l_array_reference_date_3(Idx)
49640       ,p_reference_date_4         => l_array_reference_date_4(Idx)
49641       ,p_event_created_by         => l_array_event_created_by(Idx)
49642       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
49643        --
49644 END IF;
49645 
49646 
49647 
49648 --
49649 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
49650 
49651 l_acct_reversal_source := SUBSTR(l_array_source_16(Idx), 1,30);
49652 
49653 IF l_continue_with_lines THEN
49654    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
49655       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
49656 
49657       xla_accounting_err_pkg.build_message
49658          (p_appli_s_name            => 'XLA'
49659          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
49660          ,p_token_1                 => 'LINE_NUMBER'
49661          ,p_value_1                 => l_array_extract_line_num(Idx)
49662          ,p_token_2                 => 'PRODUCT_NAME'
49663          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
49664          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
49665          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
49666          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
49667 
49668    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
49669       --
49670       -- following sets the accounting attributes needed to reverse
49671       -- accounting for a distributeion
49672       --
49673 
49674       --
49675       -- 5217187
49676       --
49677       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
49678       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
49679                                        g_array_event(l_event_id).array_value_num('header_index'));
49680       --
49681       --
49682 
49683       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
49684       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_16(Idx);
49685       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
49686       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_29(Idx);
49687       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
49688       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_6(Idx);
49689       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
49690       l_rec_rev_acct_attrs.array_char_value(5)  := l_array_source_30(Idx);
49691       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ACCT_CLASS';
49692       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_31(Idx);
49693       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_CCID';
49694       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_32(Idx);
49695       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_ENTERED_AMT';
49696       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_33(Idx);
49697       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_CURR';
49698       l_rec_rev_acct_attrs.array_char_value(9)  := l_array_source_34(Idx);
49699       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_LEDGER_AMT';
49700       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_35(Idx);
49701       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ACCT_CLASS';
49702       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_36(Idx);
49703       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
49704       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_37(Idx);
49705       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
49706       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_33(Idx);
49707       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
49708       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_34(Idx);
49709       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
49710       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_35(Idx);
49711       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
49712       l_rec_rev_acct_attrs.array_char_value(16)  := l_array_source_38(Idx);
49713       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_ID1';
49714       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
49715       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'REVERSED_DISTRIBUTION_ID2';
49716       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_6(Idx);
49717       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'REVERSED_DISTRIBUTION_TYPE';
49718       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_30(Idx);
49719       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
49720       l_rec_rev_acct_attrs.array_num_value(20)  := l_array_source_39(Idx);
49721       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
49722       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_40(Idx);
49723 
49724 
49725       xla_ae_lines_pkg.SetAcctReversalAttrs
49726          (p_event_id             => l_event_id
49727          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
49728          ,p_calculate_acctd_flag => l_calculate_acctd_flag
49729          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
49730    END IF;
49731 
49732    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
49733        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
49734 
49735 --
49736 AcctLineType_10 (
49737  p_application_id  => p_application_id
49738  ,p_event_id     => l_event_id
49739  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49740  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49741  ,p_actual_flag => l_actual_flag
49742  ,p_balance_type_code => l_balance_type_code
49743  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49744  
49745  , p_source_3 => l_array_source_3(Idx)
49746  , p_source_4 => l_array_source_4(Idx)
49747  , p_source_5 => l_array_source_5(Idx)
49748  , p_source_6 => l_array_source_6(Idx)
49749  , p_source_9 => l_array_source_9(Idx)
49750  , p_source_13 => l_array_source_13(Idx)
49751  , p_source_14 => l_array_source_14(Idx)
49752  , p_source_14_meaning => l_array_source_14_meaning(Idx)
49753  , p_source_15 => l_array_source_15(Idx)
49754  , p_source_16 => l_array_source_16(Idx)
49755  , p_source_17 => l_array_source_17(Idx)
49756  , p_source_18 => l_array_source_18(Idx)
49757  , p_source_19 => l_array_source_19(Idx)
49758  , p_source_20 => l_array_source_20(Idx)
49759  , p_source_21 => l_array_source_21(Idx)
49760  , p_source_23 => l_array_source_23(Idx)
49761  , p_source_24 => l_array_source_24(Idx)
49762  , p_source_25 => l_array_source_25(Idx)
49763  , p_source_26 => l_array_source_26(Idx)
49764  , p_source_27 => l_array_source_27(Idx)
49765  , p_source_28 => l_array_source_28(Idx)
49766  , p_source_29 => l_array_source_29(Idx)
49767  , p_source_30 => l_array_source_30(Idx)
49768  , p_source_31 => l_array_source_31(Idx)
49769  , p_source_32 => l_array_source_32(Idx)
49770  , p_source_33 => l_array_source_33(Idx)
49771  , p_source_34 => l_array_source_34(Idx)
49772  , p_source_35 => l_array_source_35(Idx)
49773  , p_source_36 => l_array_source_36(Idx)
49774  , p_source_37 => l_array_source_37(Idx)
49775  , p_source_38 => l_array_source_38(Idx)
49776  , p_source_39 => l_array_source_39(Idx)
49777  , p_source_40 => l_array_source_40(Idx)
49778  );
49779 If(l_balance_type_code = 'A') THEN
49780   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49781 END IF;
49782 
49783 --
49784 
49785 
49786 --
49787 AcctLineType_13 (
49788  p_application_id  => p_application_id
49789  ,p_event_id     => l_event_id
49790  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49791  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49792  ,p_actual_flag => l_actual_flag
49793  ,p_balance_type_code => l_balance_type_code
49794  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49795  
49796  , p_source_3 => l_array_source_3(Idx)
49797  , p_source_4 => l_array_source_4(Idx)
49798  , p_source_5 => l_array_source_5(Idx)
49799  , p_source_6 => l_array_source_6(Idx)
49800  , p_source_9 => l_array_source_9(Idx)
49801  , p_source_13 => l_array_source_13(Idx)
49802  , p_source_14 => l_array_source_14(Idx)
49803  , p_source_14_meaning => l_array_source_14_meaning(Idx)
49804  , p_source_15 => l_array_source_15(Idx)
49805  , p_source_16 => l_array_source_16(Idx)
49806  , p_source_17 => l_array_source_17(Idx)
49807  , p_source_18 => l_array_source_18(Idx)
49808  , p_source_19 => l_array_source_19(Idx)
49809  , p_source_20 => l_array_source_20(Idx)
49810  , p_source_21 => l_array_source_21(Idx)
49811  , p_source_23 => l_array_source_23(Idx)
49812  , p_source_24 => l_array_source_24(Idx)
49813  , p_source_25 => l_array_source_25(Idx)
49814  , p_source_26 => l_array_source_26(Idx)
49815  , p_source_27 => l_array_source_27(Idx)
49816  , p_source_28 => l_array_source_28(Idx)
49817  , p_source_29 => l_array_source_29(Idx)
49818  , p_source_30 => l_array_source_30(Idx)
49819  , p_source_31 => l_array_source_31(Idx)
49820  , p_source_32 => l_array_source_32(Idx)
49821  , p_source_33 => l_array_source_33(Idx)
49822  , p_source_34 => l_array_source_34(Idx)
49823  , p_source_35 => l_array_source_35(Idx)
49824  , p_source_36 => l_array_source_36(Idx)
49825  , p_source_37 => l_array_source_37(Idx)
49826  , p_source_38 => l_array_source_38(Idx)
49827  , p_source_39 => l_array_source_39(Idx)
49828  , p_source_40 => l_array_source_40(Idx)
49829  );
49830 If(l_balance_type_code = 'A') THEN
49831   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49832 END IF;
49833 
49834 --
49835 
49836 
49837 --
49838 AcctLineType_28 (
49839  p_application_id  => p_application_id
49840  ,p_event_id     => l_event_id
49841  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49842  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49843  ,p_actual_flag => l_actual_flag
49844  ,p_balance_type_code => l_balance_type_code
49845  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49846  
49847  , p_source_3 => l_array_source_3(Idx)
49848  , p_source_4 => l_array_source_4(Idx)
49849  , p_source_5 => l_array_source_5(Idx)
49850  , p_source_6 => l_array_source_6(Idx)
49851  , p_source_9 => l_array_source_9(Idx)
49852  , p_source_11 => l_array_source_11(Idx)
49853  , p_source_13 => l_array_source_13(Idx)
49854  , p_source_14 => l_array_source_14(Idx)
49855  , p_source_14_meaning => l_array_source_14_meaning(Idx)
49856  , p_source_15 => l_array_source_15(Idx)
49857  , p_source_16 => l_array_source_16(Idx)
49858  , p_source_17 => l_array_source_17(Idx)
49859  , p_source_18 => l_array_source_18(Idx)
49860  , p_source_19 => l_array_source_19(Idx)
49861  , p_source_20 => l_array_source_20(Idx)
49862  , p_source_21 => l_array_source_21(Idx)
49863  , p_source_29 => l_array_source_29(Idx)
49864  , p_source_30 => l_array_source_30(Idx)
49865  , p_source_31 => l_array_source_31(Idx)
49866  , p_source_32 => l_array_source_32(Idx)
49867  , p_source_33 => l_array_source_33(Idx)
49868  , p_source_34 => l_array_source_34(Idx)
49869  , p_source_35 => l_array_source_35(Idx)
49870  , p_source_36 => l_array_source_36(Idx)
49871  , p_source_37 => l_array_source_37(Idx)
49872  , p_source_38 => l_array_source_38(Idx)
49873  , p_source_39 => l_array_source_39(Idx)
49874  , p_source_40 => l_array_source_40(Idx)
49875  , p_source_41 => l_array_source_41(Idx)
49876  , p_source_42 => l_array_source_42(Idx)
49877  , p_source_43 => l_array_source_43(Idx)
49878  , p_source_44 => l_array_source_44(Idx)
49879  , p_source_45 => l_array_source_45(Idx)
49880  , p_source_46 => l_array_source_46(Idx)
49881  );
49882 If(l_balance_type_code = 'A') THEN
49883   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49884 END IF;
49885 
49886 --
49887 
49888 
49889 --
49890 AcctLineType_29 (
49891  p_application_id  => p_application_id
49892  ,p_event_id     => l_event_id
49893  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49894  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49895  ,p_actual_flag => l_actual_flag
49896  ,p_balance_type_code => l_balance_type_code
49897  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49898  
49899  , p_source_3 => l_array_source_3(Idx)
49900  , p_source_4 => l_array_source_4(Idx)
49901  , p_source_5 => l_array_source_5(Idx)
49902  , p_source_6 => l_array_source_6(Idx)
49903  , p_source_9 => l_array_source_9(Idx)
49904  , p_source_13 => l_array_source_13(Idx)
49905  , p_source_14 => l_array_source_14(Idx)
49906  , p_source_14_meaning => l_array_source_14_meaning(Idx)
49907  , p_source_15 => l_array_source_15(Idx)
49908  , p_source_16 => l_array_source_16(Idx)
49909  , p_source_17 => l_array_source_17(Idx)
49910  , p_source_18 => l_array_source_18(Idx)
49911  , p_source_19 => l_array_source_19(Idx)
49912  , p_source_20 => l_array_source_20(Idx)
49913  , p_source_21 => l_array_source_21(Idx)
49914  , p_source_29 => l_array_source_29(Idx)
49915  , p_source_30 => l_array_source_30(Idx)
49916  , p_source_31 => l_array_source_31(Idx)
49917  , p_source_32 => l_array_source_32(Idx)
49918  , p_source_33 => l_array_source_33(Idx)
49919  , p_source_34 => l_array_source_34(Idx)
49920  , p_source_35 => l_array_source_35(Idx)
49921  , p_source_36 => l_array_source_36(Idx)
49922  , p_source_37 => l_array_source_37(Idx)
49923  , p_source_38 => l_array_source_38(Idx)
49924  , p_source_39 => l_array_source_39(Idx)
49925  , p_source_40 => l_array_source_40(Idx)
49926  , p_source_41 => l_array_source_41(Idx)
49927  , p_source_42 => l_array_source_42(Idx)
49928  , p_source_43 => l_array_source_43(Idx)
49929  , p_source_44 => l_array_source_44(Idx)
49930  , p_source_45 => l_array_source_45(Idx)
49931  , p_source_46 => l_array_source_46(Idx)
49932  , p_source_67 => l_array_source_67(Idx)
49933  );
49934 If(l_balance_type_code = 'A') THEN
49935   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49936 END IF;
49937 
49938 --
49939 
49940 
49941 --
49942 AcctLineType_34 (
49943  p_application_id  => p_application_id
49944  ,p_event_id     => l_event_id
49945  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49946  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49947  ,p_actual_flag => l_actual_flag
49948  ,p_balance_type_code => l_balance_type_code
49949  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49950  
49951  , p_source_3 => l_array_source_3(Idx)
49952  , p_source_4 => l_array_source_4(Idx)
49953  , p_source_5 => l_array_source_5(Idx)
49954  , p_source_6 => l_array_source_6(Idx)
49955  , p_source_9 => l_array_source_9(Idx)
49956  , p_source_11 => l_array_source_11(Idx)
49957  , p_source_13 => l_array_source_13(Idx)
49958  , p_source_14 => l_array_source_14(Idx)
49959  , p_source_14_meaning => l_array_source_14_meaning(Idx)
49960  , p_source_15 => l_array_source_15(Idx)
49961  , p_source_16 => l_array_source_16(Idx)
49962  , p_source_17 => l_array_source_17(Idx)
49963  , p_source_18 => l_array_source_18(Idx)
49964  , p_source_19 => l_array_source_19(Idx)
49965  , p_source_20 => l_array_source_20(Idx)
49966  , p_source_21 => l_array_source_21(Idx)
49967  , p_source_29 => l_array_source_29(Idx)
49968  , p_source_30 => l_array_source_30(Idx)
49969  , p_source_31 => l_array_source_31(Idx)
49970  , p_source_32 => l_array_source_32(Idx)
49971  , p_source_33 => l_array_source_33(Idx)
49972  , p_source_34 => l_array_source_34(Idx)
49973  , p_source_35 => l_array_source_35(Idx)
49974  , p_source_36 => l_array_source_36(Idx)
49975  , p_source_37 => l_array_source_37(Idx)
49976  , p_source_38 => l_array_source_38(Idx)
49977  , p_source_39 => l_array_source_39(Idx)
49978  , p_source_40 => l_array_source_40(Idx)
49979  , p_source_41 => l_array_source_41(Idx)
49980  , p_source_42 => l_array_source_42(Idx)
49981  , p_source_43 => l_array_source_43(Idx)
49982  , p_source_44 => l_array_source_44(Idx)
49983  , p_source_45 => l_array_source_45(Idx)
49984  , p_source_46 => l_array_source_46(Idx)
49985  );
49986 If(l_balance_type_code = 'A') THEN
49987   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49988 END IF;
49989 
49990 --
49991 
49992 
49993 --
49994 AcctLineType_35 (
49995  p_application_id  => p_application_id
49996  ,p_event_id     => l_event_id
49997  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49998  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49999  ,p_actual_flag => l_actual_flag
50000  ,p_balance_type_code => l_balance_type_code
50001  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50002  
50003  , p_source_3 => l_array_source_3(Idx)
50004  , p_source_4 => l_array_source_4(Idx)
50005  , p_source_5 => l_array_source_5(Idx)
50006  , p_source_6 => l_array_source_6(Idx)
50007  , p_source_9 => l_array_source_9(Idx)
50008  , p_source_13 => l_array_source_13(Idx)
50009  , p_source_14 => l_array_source_14(Idx)
50010  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50011  , p_source_15 => l_array_source_15(Idx)
50012  , p_source_16 => l_array_source_16(Idx)
50013  , p_source_17 => l_array_source_17(Idx)
50014  , p_source_18 => l_array_source_18(Idx)
50015  , p_source_19 => l_array_source_19(Idx)
50016  , p_source_20 => l_array_source_20(Idx)
50017  , p_source_21 => l_array_source_21(Idx)
50018  , p_source_29 => l_array_source_29(Idx)
50019  , p_source_30 => l_array_source_30(Idx)
50020  , p_source_31 => l_array_source_31(Idx)
50021  , p_source_32 => l_array_source_32(Idx)
50022  , p_source_33 => l_array_source_33(Idx)
50023  , p_source_34 => l_array_source_34(Idx)
50024  , p_source_35 => l_array_source_35(Idx)
50025  , p_source_36 => l_array_source_36(Idx)
50026  , p_source_37 => l_array_source_37(Idx)
50027  , p_source_38 => l_array_source_38(Idx)
50028  , p_source_39 => l_array_source_39(Idx)
50029  , p_source_40 => l_array_source_40(Idx)
50030  , p_source_41 => l_array_source_41(Idx)
50031  , p_source_42 => l_array_source_42(Idx)
50032  , p_source_43 => l_array_source_43(Idx)
50033  , p_source_44 => l_array_source_44(Idx)
50034  , p_source_45 => l_array_source_45(Idx)
50035  , p_source_46 => l_array_source_46(Idx)
50036  , p_source_67 => l_array_source_67(Idx)
50037  );
50038 If(l_balance_type_code = 'A') THEN
50039   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50040 END IF;
50041 
50042 --
50043 
50044 
50045 --
50046 AcctLineType_36 (
50047  p_application_id  => p_application_id
50048  ,p_event_id     => l_event_id
50049  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50050  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50051  ,p_actual_flag => l_actual_flag
50052  ,p_balance_type_code => l_balance_type_code
50053  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50054  
50055  , p_source_3 => l_array_source_3(Idx)
50056  , p_source_4 => l_array_source_4(Idx)
50057  , p_source_5 => l_array_source_5(Idx)
50058  , p_source_6 => l_array_source_6(Idx)
50059  , p_source_9 => l_array_source_9(Idx)
50060  , p_source_11 => l_array_source_11(Idx)
50061  , p_source_13 => l_array_source_13(Idx)
50062  , p_source_14 => l_array_source_14(Idx)
50063  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50064  , p_source_15 => l_array_source_15(Idx)
50065  , p_source_16 => l_array_source_16(Idx)
50066  , p_source_17 => l_array_source_17(Idx)
50067  , p_source_18 => l_array_source_18(Idx)
50068  , p_source_19 => l_array_source_19(Idx)
50069  , p_source_20 => l_array_source_20(Idx)
50070  , p_source_21 => l_array_source_21(Idx)
50071  , p_source_23 => l_array_source_23(Idx)
50072  , p_source_24 => l_array_source_24(Idx)
50073  , p_source_25 => l_array_source_25(Idx)
50074  , p_source_26 => l_array_source_26(Idx)
50075  , p_source_27 => l_array_source_27(Idx)
50076  , p_source_28 => l_array_source_28(Idx)
50077  , p_source_29 => l_array_source_29(Idx)
50078  , p_source_30 => l_array_source_30(Idx)
50079  , p_source_31 => l_array_source_31(Idx)
50080  , p_source_32 => l_array_source_32(Idx)
50081  , p_source_33 => l_array_source_33(Idx)
50082  , p_source_34 => l_array_source_34(Idx)
50083  , p_source_35 => l_array_source_35(Idx)
50084  , p_source_36 => l_array_source_36(Idx)
50085  , p_source_37 => l_array_source_37(Idx)
50086  , p_source_38 => l_array_source_38(Idx)
50087  , p_source_39 => l_array_source_39(Idx)
50088  , p_source_40 => l_array_source_40(Idx)
50089  , p_source_67 => l_array_source_67(Idx)
50090  );
50091 If(l_balance_type_code = 'A') THEN
50092   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50093 END IF;
50094 
50095 --
50096 
50097 
50098 --
50099 AcctLineType_37 (
50100  p_application_id  => p_application_id
50101  ,p_event_id     => l_event_id
50102  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50103  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50104  ,p_actual_flag => l_actual_flag
50105  ,p_balance_type_code => l_balance_type_code
50106  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50107  
50108  , p_source_3 => l_array_source_3(Idx)
50109  , p_source_4 => l_array_source_4(Idx)
50110  , p_source_5 => l_array_source_5(Idx)
50111  , p_source_6 => l_array_source_6(Idx)
50112  , p_source_9 => l_array_source_9(Idx)
50113  , p_source_11 => l_array_source_11(Idx)
50114  , p_source_13 => l_array_source_13(Idx)
50115  , p_source_14 => l_array_source_14(Idx)
50116  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50117  , p_source_15 => l_array_source_15(Idx)
50118  , p_source_16 => l_array_source_16(Idx)
50119  , p_source_17 => l_array_source_17(Idx)
50120  , p_source_18 => l_array_source_18(Idx)
50121  , p_source_19 => l_array_source_19(Idx)
50122  , p_source_20 => l_array_source_20(Idx)
50123  , p_source_21 => l_array_source_21(Idx)
50124  , p_source_23 => l_array_source_23(Idx)
50125  , p_source_24 => l_array_source_24(Idx)
50126  , p_source_25 => l_array_source_25(Idx)
50127  , p_source_26 => l_array_source_26(Idx)
50128  , p_source_27 => l_array_source_27(Idx)
50129  , p_source_28 => l_array_source_28(Idx)
50130  , p_source_29 => l_array_source_29(Idx)
50131  , p_source_30 => l_array_source_30(Idx)
50132  , p_source_31 => l_array_source_31(Idx)
50133  , p_source_32 => l_array_source_32(Idx)
50134  , p_source_33 => l_array_source_33(Idx)
50135  , p_source_34 => l_array_source_34(Idx)
50136  , p_source_35 => l_array_source_35(Idx)
50137  , p_source_36 => l_array_source_36(Idx)
50138  , p_source_37 => l_array_source_37(Idx)
50139  , p_source_38 => l_array_source_38(Idx)
50140  , p_source_39 => l_array_source_39(Idx)
50141  , p_source_40 => l_array_source_40(Idx)
50142  , p_source_67 => l_array_source_67(Idx)
50143  );
50144 If(l_balance_type_code = 'A') THEN
50145   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50146 END IF;
50147 
50148 --
50149 
50150 
50151 --
50152 AcctLineType_40 (
50153  p_application_id  => p_application_id
50154  ,p_event_id     => l_event_id
50155  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50156  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50157  ,p_actual_flag => l_actual_flag
50158  ,p_balance_type_code => l_balance_type_code
50159  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50160  
50161  , p_source_3 => l_array_source_3(Idx)
50162  , p_source_4 => l_array_source_4(Idx)
50163  , p_source_5 => l_array_source_5(Idx)
50164  , p_source_6 => l_array_source_6(Idx)
50165  , p_source_9 => l_array_source_9(Idx)
50166  , p_source_13 => l_array_source_13(Idx)
50167  , p_source_14 => l_array_source_14(Idx)
50168  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50169  , p_source_15 => l_array_source_15(Idx)
50170  , p_source_16 => l_array_source_16(Idx)
50171  , p_source_17 => l_array_source_17(Idx)
50172  , p_source_18 => l_array_source_18(Idx)
50173  , p_source_19 => l_array_source_19(Idx)
50174  , p_source_20 => l_array_source_20(Idx)
50175  , p_source_21 => l_array_source_21(Idx)
50176  , p_source_29 => l_array_source_29(Idx)
50177  , p_source_30 => l_array_source_30(Idx)
50178  , p_source_31 => l_array_source_31(Idx)
50179  , p_source_32 => l_array_source_32(Idx)
50180  , p_source_33 => l_array_source_33(Idx)
50181  , p_source_34 => l_array_source_34(Idx)
50182  , p_source_35 => l_array_source_35(Idx)
50183  , p_source_36 => l_array_source_36(Idx)
50184  , p_source_37 => l_array_source_37(Idx)
50185  , p_source_38 => l_array_source_38(Idx)
50186  , p_source_39 => l_array_source_39(Idx)
50187  , p_source_40 => l_array_source_40(Idx)
50188  , p_source_41 => l_array_source_41(Idx)
50189  , p_source_42 => l_array_source_42(Idx)
50190  , p_source_43 => l_array_source_43(Idx)
50191  , p_source_44 => l_array_source_44(Idx)
50192  , p_source_45 => l_array_source_45(Idx)
50193  , p_source_46 => l_array_source_46(Idx)
50194  , p_source_67 => l_array_source_67(Idx)
50195  );
50196 If(l_balance_type_code = 'A') THEN
50197   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50198 END IF;
50199 
50200 --
50201 
50202 
50203 --
50204 AcctLineType_43 (
50205  p_application_id  => p_application_id
50206  ,p_event_id     => l_event_id
50207  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50208  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50209  ,p_actual_flag => l_actual_flag
50210  ,p_balance_type_code => l_balance_type_code
50211  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50212  
50213  , p_source_3 => l_array_source_3(Idx)
50214  , p_source_4 => l_array_source_4(Idx)
50215  , p_source_5 => l_array_source_5(Idx)
50216  , p_source_6 => l_array_source_6(Idx)
50217  , p_source_9 => l_array_source_9(Idx)
50218  , p_source_13 => l_array_source_13(Idx)
50219  , p_source_14 => l_array_source_14(Idx)
50220  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50221  , p_source_15 => l_array_source_15(Idx)
50222  , p_source_16 => l_array_source_16(Idx)
50223  , p_source_17 => l_array_source_17(Idx)
50224  , p_source_18 => l_array_source_18(Idx)
50225  , p_source_19 => l_array_source_19(Idx)
50226  , p_source_20 => l_array_source_20(Idx)
50227  , p_source_21 => l_array_source_21(Idx)
50228  , p_source_29 => l_array_source_29(Idx)
50229  , p_source_30 => l_array_source_30(Idx)
50230  , p_source_31 => l_array_source_31(Idx)
50231  , p_source_32 => l_array_source_32(Idx)
50232  , p_source_33 => l_array_source_33(Idx)
50233  , p_source_34 => l_array_source_34(Idx)
50234  , p_source_35 => l_array_source_35(Idx)
50235  , p_source_36 => l_array_source_36(Idx)
50236  , p_source_37 => l_array_source_37(Idx)
50237  , p_source_38 => l_array_source_38(Idx)
50238  , p_source_39 => l_array_source_39(Idx)
50239  , p_source_40 => l_array_source_40(Idx)
50240  , p_source_41 => l_array_source_41(Idx)
50241  , p_source_42 => l_array_source_42(Idx)
50242  , p_source_43 => l_array_source_43(Idx)
50243  , p_source_44 => l_array_source_44(Idx)
50244  , p_source_45 => l_array_source_45(Idx)
50245  , p_source_46 => l_array_source_46(Idx)
50246  , p_source_67 => l_array_source_67(Idx)
50247  );
50248 If(l_balance_type_code = 'A') THEN
50249   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50250 END IF;
50251 
50252 --
50253 
50254 
50255 --
50256 AcctLineType_48 (
50257  p_application_id  => p_application_id
50258  ,p_event_id     => l_event_id
50259  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50260  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50261  ,p_actual_flag => l_actual_flag
50262  ,p_balance_type_code => l_balance_type_code
50263  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50264  
50265  , p_source_3 => l_array_source_3(Idx)
50266  , p_source_4 => l_array_source_4(Idx)
50267  , p_source_5 => l_array_source_5(Idx)
50268  , p_source_6 => l_array_source_6(Idx)
50269  , p_source_13 => l_array_source_13(Idx)
50270  , p_source_16 => l_array_source_16(Idx)
50271  , p_source_17 => l_array_source_17(Idx)
50272  , p_source_18 => l_array_source_18(Idx)
50273  , p_source_19 => l_array_source_19(Idx)
50274  , p_source_20 => l_array_source_20(Idx)
50275  , p_source_21 => l_array_source_21(Idx)
50276  , p_source_29 => l_array_source_29(Idx)
50277  , p_source_30 => l_array_source_30(Idx)
50278  , p_source_31 => l_array_source_31(Idx)
50279  , p_source_32 => l_array_source_32(Idx)
50280  , p_source_33 => l_array_source_33(Idx)
50281  , p_source_34 => l_array_source_34(Idx)
50282  , p_source_35 => l_array_source_35(Idx)
50283  , p_source_36 => l_array_source_36(Idx)
50284  , p_source_37 => l_array_source_37(Idx)
50285  , p_source_38 => l_array_source_38(Idx)
50286  , p_source_39 => l_array_source_39(Idx)
50287  , p_source_40 => l_array_source_40(Idx)
50288  , p_source_68 => l_array_source_68(Idx)
50289  , p_source_69 => l_array_source_69(Idx)
50290  , p_source_70 => l_array_source_70(Idx)
50291  , p_source_71 => l_array_source_71(Idx)
50292  , p_source_72 => l_array_source_72(Idx)
50293  , p_source_73 => l_array_source_73(Idx)
50294  );
50295 If(l_balance_type_code = 'A') THEN
50296   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50297 END IF;
50298 
50299 --
50300 
50301 
50302 --
50303 AcctLineType_51 (
50304  p_application_id  => p_application_id
50305  ,p_event_id     => l_event_id
50306  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50307  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50308  ,p_actual_flag => l_actual_flag
50309  ,p_balance_type_code => l_balance_type_code
50310  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50311  
50312  , p_source_3 => l_array_source_3(Idx)
50313  , p_source_4 => l_array_source_4(Idx)
50314  , p_source_5 => l_array_source_5(Idx)
50315  , p_source_6 => l_array_source_6(Idx)
50316  , p_source_9 => l_array_source_9(Idx)
50317  , p_source_11 => l_array_source_11(Idx)
50318  , p_source_13 => l_array_source_13(Idx)
50319  , p_source_14 => l_array_source_14(Idx)
50320  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50321  , p_source_15 => l_array_source_15(Idx)
50322  , p_source_16 => l_array_source_16(Idx)
50323  , p_source_17 => l_array_source_17(Idx)
50324  , p_source_18 => l_array_source_18(Idx)
50325  , p_source_19 => l_array_source_19(Idx)
50326  , p_source_20 => l_array_source_20(Idx)
50327  , p_source_21 => l_array_source_21(Idx)
50328  , p_source_23 => l_array_source_23(Idx)
50329  , p_source_24 => l_array_source_24(Idx)
50330  , p_source_25 => l_array_source_25(Idx)
50331  , p_source_26 => l_array_source_26(Idx)
50332  , p_source_27 => l_array_source_27(Idx)
50333  , p_source_28 => l_array_source_28(Idx)
50334  , p_source_29 => l_array_source_29(Idx)
50335  , p_source_30 => l_array_source_30(Idx)
50336  , p_source_31 => l_array_source_31(Idx)
50337  , p_source_32 => l_array_source_32(Idx)
50338  , p_source_33 => l_array_source_33(Idx)
50339  , p_source_34 => l_array_source_34(Idx)
50340  , p_source_35 => l_array_source_35(Idx)
50341  , p_source_36 => l_array_source_36(Idx)
50342  , p_source_37 => l_array_source_37(Idx)
50343  , p_source_38 => l_array_source_38(Idx)
50344  , p_source_39 => l_array_source_39(Idx)
50345  , p_source_40 => l_array_source_40(Idx)
50346  , p_source_67 => l_array_source_67(Idx)
50347  );
50348 If(l_balance_type_code = 'A') THEN
50349   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50350 END IF;
50351 
50352 --
50353 
50354 
50355 --
50356 AcctLineType_52 (
50357  p_application_id  => p_application_id
50358  ,p_event_id     => l_event_id
50359  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50360  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50361  ,p_actual_flag => l_actual_flag
50362  ,p_balance_type_code => l_balance_type_code
50363  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50364  
50365  , p_source_3 => l_array_source_3(Idx)
50366  , p_source_4 => l_array_source_4(Idx)
50367  , p_source_5 => l_array_source_5(Idx)
50368  , p_source_6 => l_array_source_6(Idx)
50369  , p_source_9 => l_array_source_9(Idx)
50370  , p_source_11 => l_array_source_11(Idx)
50371  , p_source_13 => l_array_source_13(Idx)
50372  , p_source_14 => l_array_source_14(Idx)
50373  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50374  , p_source_15 => l_array_source_15(Idx)
50375  , p_source_16 => l_array_source_16(Idx)
50376  , p_source_17 => l_array_source_17(Idx)
50377  , p_source_18 => l_array_source_18(Idx)
50378  , p_source_19 => l_array_source_19(Idx)
50379  , p_source_20 => l_array_source_20(Idx)
50380  , p_source_21 => l_array_source_21(Idx)
50381  , p_source_23 => l_array_source_23(Idx)
50382  , p_source_24 => l_array_source_24(Idx)
50383  , p_source_25 => l_array_source_25(Idx)
50384  , p_source_26 => l_array_source_26(Idx)
50385  , p_source_27 => l_array_source_27(Idx)
50386  , p_source_28 => l_array_source_28(Idx)
50387  , p_source_29 => l_array_source_29(Idx)
50388  , p_source_30 => l_array_source_30(Idx)
50389  , p_source_31 => l_array_source_31(Idx)
50390  , p_source_32 => l_array_source_32(Idx)
50391  , p_source_33 => l_array_source_33(Idx)
50392  , p_source_34 => l_array_source_34(Idx)
50393  , p_source_35 => l_array_source_35(Idx)
50394  , p_source_36 => l_array_source_36(Idx)
50395  , p_source_37 => l_array_source_37(Idx)
50396  , p_source_38 => l_array_source_38(Idx)
50397  , p_source_39 => l_array_source_39(Idx)
50398  , p_source_40 => l_array_source_40(Idx)
50399  , p_source_67 => l_array_source_67(Idx)
50400  );
50401 If(l_balance_type_code = 'A') THEN
50402   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50403 END IF;
50404 
50405 --
50406 
50407 
50408 --
50409 AcctLineType_56 (
50410  p_application_id  => p_application_id
50411  ,p_event_id     => l_event_id
50412  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50413  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50414  ,p_actual_flag => l_actual_flag
50415  ,p_balance_type_code => l_balance_type_code
50416  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50417  
50418  , p_source_3 => l_array_source_3(Idx)
50419  , p_source_4 => l_array_source_4(Idx)
50420  , p_source_5 => l_array_source_5(Idx)
50421  , p_source_6 => l_array_source_6(Idx)
50422  , p_source_9 => l_array_source_9(Idx)
50423  , p_source_11 => l_array_source_11(Idx)
50424  , p_source_13 => l_array_source_13(Idx)
50425  , p_source_14 => l_array_source_14(Idx)
50426  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50427  , p_source_15 => l_array_source_15(Idx)
50428  , p_source_16 => l_array_source_16(Idx)
50429  , p_source_17 => l_array_source_17(Idx)
50430  , p_source_18 => l_array_source_18(Idx)
50431  , p_source_19 => l_array_source_19(Idx)
50432  , p_source_20 => l_array_source_20(Idx)
50433  , p_source_21 => l_array_source_21(Idx)
50434  , p_source_23 => l_array_source_23(Idx)
50435  , p_source_24 => l_array_source_24(Idx)
50436  , p_source_25 => l_array_source_25(Idx)
50437  , p_source_26 => l_array_source_26(Idx)
50438  , p_source_27 => l_array_source_27(Idx)
50439  , p_source_28 => l_array_source_28(Idx)
50440  , p_source_29 => l_array_source_29(Idx)
50441  , p_source_30 => l_array_source_30(Idx)
50442  , p_source_31 => l_array_source_31(Idx)
50443  , p_source_32 => l_array_source_32(Idx)
50444  , p_source_33 => l_array_source_33(Idx)
50445  , p_source_34 => l_array_source_34(Idx)
50446  , p_source_35 => l_array_source_35(Idx)
50447  , p_source_36 => l_array_source_36(Idx)
50448  , p_source_37 => l_array_source_37(Idx)
50449  , p_source_38 => l_array_source_38(Idx)
50450  , p_source_39 => l_array_source_39(Idx)
50451  , p_source_40 => l_array_source_40(Idx)
50452  );
50453 If(l_balance_type_code = 'A') THEN
50454   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50455 END IF;
50456 
50457 --
50458 
50459 
50460 --
50461 AcctLineType_57 (
50462  p_application_id  => p_application_id
50463  ,p_event_id     => l_event_id
50464  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50465  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50466  ,p_actual_flag => l_actual_flag
50467  ,p_balance_type_code => l_balance_type_code
50468  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50469  
50470  , p_source_3 => l_array_source_3(Idx)
50471  , p_source_4 => l_array_source_4(Idx)
50472  , p_source_5 => l_array_source_5(Idx)
50473  , p_source_6 => l_array_source_6(Idx)
50474  , p_source_9 => l_array_source_9(Idx)
50475  , p_source_11 => l_array_source_11(Idx)
50476  , p_source_13 => l_array_source_13(Idx)
50477  , p_source_14 => l_array_source_14(Idx)
50478  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50479  , p_source_15 => l_array_source_15(Idx)
50480  , p_source_16 => l_array_source_16(Idx)
50481  , p_source_17 => l_array_source_17(Idx)
50482  , p_source_18 => l_array_source_18(Idx)
50483  , p_source_19 => l_array_source_19(Idx)
50484  , p_source_20 => l_array_source_20(Idx)
50485  , p_source_21 => l_array_source_21(Idx)
50486  , p_source_23 => l_array_source_23(Idx)
50487  , p_source_24 => l_array_source_24(Idx)
50488  , p_source_25 => l_array_source_25(Idx)
50489  , p_source_26 => l_array_source_26(Idx)
50490  , p_source_27 => l_array_source_27(Idx)
50491  , p_source_28 => l_array_source_28(Idx)
50492  , p_source_29 => l_array_source_29(Idx)
50493  , p_source_30 => l_array_source_30(Idx)
50494  , p_source_31 => l_array_source_31(Idx)
50495  , p_source_32 => l_array_source_32(Idx)
50496  , p_source_33 => l_array_source_33(Idx)
50497  , p_source_34 => l_array_source_34(Idx)
50498  , p_source_35 => l_array_source_35(Idx)
50499  , p_source_36 => l_array_source_36(Idx)
50500  , p_source_37 => l_array_source_37(Idx)
50501  , p_source_38 => l_array_source_38(Idx)
50502  , p_source_39 => l_array_source_39(Idx)
50503  , p_source_40 => l_array_source_40(Idx)
50504  );
50505 If(l_balance_type_code = 'A') THEN
50506   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50507 END IF;
50508 
50509 --
50510 
50511 
50512 --
50513 AcctLineType_60 (
50514  p_application_id  => p_application_id
50515  ,p_event_id     => l_event_id
50516  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50517  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50518  ,p_actual_flag => l_actual_flag
50519  ,p_balance_type_code => l_balance_type_code
50520  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50521  
50522  , p_source_3 => l_array_source_3(Idx)
50523  , p_source_4 => l_array_source_4(Idx)
50524  , p_source_5 => l_array_source_5(Idx)
50525  , p_source_6 => l_array_source_6(Idx)
50526  , p_source_9 => l_array_source_9(Idx)
50527  , p_source_11 => l_array_source_11(Idx)
50528  , p_source_13 => l_array_source_13(Idx)
50529  , p_source_14 => l_array_source_14(Idx)
50530  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50531  , p_source_15 => l_array_source_15(Idx)
50532  , p_source_16 => l_array_source_16(Idx)
50533  , p_source_17 => l_array_source_17(Idx)
50534  , p_source_18 => l_array_source_18(Idx)
50535  , p_source_19 => l_array_source_19(Idx)
50536  , p_source_20 => l_array_source_20(Idx)
50537  , p_source_21 => l_array_source_21(Idx)
50538  , p_source_23 => l_array_source_23(Idx)
50539  , p_source_24 => l_array_source_24(Idx)
50540  , p_source_25 => l_array_source_25(Idx)
50541  , p_source_26 => l_array_source_26(Idx)
50542  , p_source_27 => l_array_source_27(Idx)
50543  , p_source_28 => l_array_source_28(Idx)
50544  , p_source_29 => l_array_source_29(Idx)
50545  , p_source_30 => l_array_source_30(Idx)
50546  , p_source_31 => l_array_source_31(Idx)
50547  , p_source_32 => l_array_source_32(Idx)
50548  , p_source_33 => l_array_source_33(Idx)
50549  , p_source_34 => l_array_source_34(Idx)
50550  , p_source_35 => l_array_source_35(Idx)
50551  , p_source_36 => l_array_source_36(Idx)
50552  , p_source_37 => l_array_source_37(Idx)
50553  , p_source_38 => l_array_source_38(Idx)
50554  , p_source_39 => l_array_source_39(Idx)
50555  , p_source_40 => l_array_source_40(Idx)
50556  );
50557 If(l_balance_type_code = 'A') THEN
50558   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50559 END IF;
50560 
50561 --
50562 
50563 
50564 --
50565 AcctLineType_63 (
50566  p_application_id  => p_application_id
50567  ,p_event_id     => l_event_id
50568  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50569  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50570  ,p_actual_flag => l_actual_flag
50571  ,p_balance_type_code => l_balance_type_code
50572  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50573  
50574  , p_source_3 => l_array_source_3(Idx)
50575  , p_source_4 => l_array_source_4(Idx)
50576  , p_source_5 => l_array_source_5(Idx)
50577  , p_source_6 => l_array_source_6(Idx)
50578  , p_source_9 => l_array_source_9(Idx)
50579  , p_source_11 => l_array_source_11(Idx)
50580  , p_source_13 => l_array_source_13(Idx)
50581  , p_source_14 => l_array_source_14(Idx)
50582  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50583  , p_source_15 => l_array_source_15(Idx)
50584  , p_source_16 => l_array_source_16(Idx)
50585  , p_source_17 => l_array_source_17(Idx)
50586  , p_source_18 => l_array_source_18(Idx)
50587  , p_source_19 => l_array_source_19(Idx)
50588  , p_source_20 => l_array_source_20(Idx)
50589  , p_source_21 => l_array_source_21(Idx)
50590  , p_source_23 => l_array_source_23(Idx)
50591  , p_source_24 => l_array_source_24(Idx)
50592  , p_source_25 => l_array_source_25(Idx)
50593  , p_source_26 => l_array_source_26(Idx)
50594  , p_source_27 => l_array_source_27(Idx)
50595  , p_source_28 => l_array_source_28(Idx)
50596  , p_source_29 => l_array_source_29(Idx)
50597  , p_source_30 => l_array_source_30(Idx)
50598  , p_source_31 => l_array_source_31(Idx)
50599  , p_source_32 => l_array_source_32(Idx)
50600  , p_source_33 => l_array_source_33(Idx)
50601  , p_source_34 => l_array_source_34(Idx)
50602  , p_source_35 => l_array_source_35(Idx)
50603  , p_source_36 => l_array_source_36(Idx)
50604  , p_source_37 => l_array_source_37(Idx)
50605  , p_source_38 => l_array_source_38(Idx)
50606  , p_source_39 => l_array_source_39(Idx)
50607  , p_source_40 => l_array_source_40(Idx)
50608  );
50609 If(l_balance_type_code = 'A') THEN
50610   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50611 END IF;
50612 
50613 --
50614 
50615 
50616 --
50617 AcctLineType_69 (
50618  p_application_id  => p_application_id
50619  ,p_event_id     => l_event_id
50620  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50621  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50622  ,p_actual_flag => l_actual_flag
50623  ,p_balance_type_code => l_balance_type_code
50624  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50625  
50626  , p_source_3 => l_array_source_3(Idx)
50627  , p_source_4 => l_array_source_4(Idx)
50628  , p_source_5 => l_array_source_5(Idx)
50629  , p_source_6 => l_array_source_6(Idx)
50630  , p_source_13 => l_array_source_13(Idx)
50631  , p_source_16 => l_array_source_16(Idx)
50632  , p_source_17 => l_array_source_17(Idx)
50633  , p_source_18 => l_array_source_18(Idx)
50634  , p_source_19 => l_array_source_19(Idx)
50635  , p_source_20 => l_array_source_20(Idx)
50636  , p_source_21 => l_array_source_21(Idx)
50637  , p_source_29 => l_array_source_29(Idx)
50638  , p_source_30 => l_array_source_30(Idx)
50639  , p_source_31 => l_array_source_31(Idx)
50640  , p_source_32 => l_array_source_32(Idx)
50641  , p_source_33 => l_array_source_33(Idx)
50642  , p_source_34 => l_array_source_34(Idx)
50643  , p_source_35 => l_array_source_35(Idx)
50644  , p_source_36 => l_array_source_36(Idx)
50645  , p_source_37 => l_array_source_37(Idx)
50646  , p_source_38 => l_array_source_38(Idx)
50647  , p_source_39 => l_array_source_39(Idx)
50648  , p_source_40 => l_array_source_40(Idx)
50649  , p_source_68 => l_array_source_68(Idx)
50650  , p_source_69 => l_array_source_69(Idx)
50651  , p_source_70 => l_array_source_70(Idx)
50652  , p_source_71 => l_array_source_71(Idx)
50653  , p_source_72 => l_array_source_72(Idx)
50654  , p_source_73 => l_array_source_73(Idx)
50655  );
50656 If(l_balance_type_code = 'A') THEN
50657   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50658 END IF;
50659 
50660 --
50661 
50662 
50663 --
50664 AcctLineType_79 (
50665  p_application_id  => p_application_id
50666  ,p_event_id     => l_event_id
50667  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50668  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50669  ,p_actual_flag => l_actual_flag
50670  ,p_balance_type_code => l_balance_type_code
50671  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50672  
50673  , p_source_3 => l_array_source_3(Idx)
50674  , p_source_4 => l_array_source_4(Idx)
50675  , p_source_5 => l_array_source_5(Idx)
50676  , p_source_6 => l_array_source_6(Idx)
50677  , p_source_9 => l_array_source_9(Idx)
50678  , p_source_13 => l_array_source_13(Idx)
50679  , p_source_14 => l_array_source_14(Idx)
50680  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50681  , p_source_15 => l_array_source_15(Idx)
50682  , p_source_16 => l_array_source_16(Idx)
50683  , p_source_17 => l_array_source_17(Idx)
50684  , p_source_18 => l_array_source_18(Idx)
50685  , p_source_19 => l_array_source_19(Idx)
50686  , p_source_20 => l_array_source_20(Idx)
50687  , p_source_21 => l_array_source_21(Idx)
50688  , p_source_23 => l_array_source_23(Idx)
50689  , p_source_24 => l_array_source_24(Idx)
50690  , p_source_25 => l_array_source_25(Idx)
50691  , p_source_26 => l_array_source_26(Idx)
50692  , p_source_27 => l_array_source_27(Idx)
50693  , p_source_28 => l_array_source_28(Idx)
50694  , p_source_29 => l_array_source_29(Idx)
50695  , p_source_30 => l_array_source_30(Idx)
50696  , p_source_31 => l_array_source_31(Idx)
50697  , p_source_32 => l_array_source_32(Idx)
50698  , p_source_33 => l_array_source_33(Idx)
50699  , p_source_34 => l_array_source_34(Idx)
50700  , p_source_35 => l_array_source_35(Idx)
50701  , p_source_36 => l_array_source_36(Idx)
50702  , p_source_37 => l_array_source_37(Idx)
50703  , p_source_38 => l_array_source_38(Idx)
50704  , p_source_39 => l_array_source_39(Idx)
50705  , p_source_40 => l_array_source_40(Idx)
50706  );
50707 If(l_balance_type_code = 'A') THEN
50708   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50709 END IF;
50710 
50711 --
50712 
50713 
50714 --
50715 AcctLineType_82 (
50716  p_application_id  => p_application_id
50717  ,p_event_id     => l_event_id
50718  ,p_calculate_acctd_flag => l_calculate_acctd_flag
50719  ,p_calculate_g_l_flag => l_calculate_g_l_flag
50720  ,p_actual_flag => l_actual_flag
50721  ,p_balance_type_code => l_balance_type_code
50722  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
50723  
50724  , p_source_3 => l_array_source_3(Idx)
50725  , p_source_4 => l_array_source_4(Idx)
50726  , p_source_5 => l_array_source_5(Idx)
50727  , p_source_6 => l_array_source_6(Idx)
50728  , p_source_9 => l_array_source_9(Idx)
50729  , p_source_13 => l_array_source_13(Idx)
50730  , p_source_14 => l_array_source_14(Idx)
50731  , p_source_14_meaning => l_array_source_14_meaning(Idx)
50732  , p_source_15 => l_array_source_15(Idx)
50733  , p_source_16 => l_array_source_16(Idx)
50734  , p_source_17 => l_array_source_17(Idx)
50735  , p_source_18 => l_array_source_18(Idx)
50736  , p_source_19 => l_array_source_19(Idx)
50737  , p_source_20 => l_array_source_20(Idx)
50738  , p_source_21 => l_array_source_21(Idx)
50739  , p_source_23 => l_array_source_23(Idx)
50740  , p_source_24 => l_array_source_24(Idx)
50741  , p_source_25 => l_array_source_25(Idx)
50742  , p_source_26 => l_array_source_26(Idx)
50743  , p_source_27 => l_array_source_27(Idx)
50744  , p_source_28 => l_array_source_28(Idx)
50745  , p_source_29 => l_array_source_29(Idx)
50746  , p_source_30 => l_array_source_30(Idx)
50747  , p_source_31 => l_array_source_31(Idx)
50748  , p_source_32 => l_array_source_32(Idx)
50749  , p_source_33 => l_array_source_33(Idx)
50750  , p_source_34 => l_array_source_34(Idx)
50751  , p_source_35 => l_array_source_35(Idx)
50752  , p_source_36 => l_array_source_36(Idx)
50753  , p_source_37 => l_array_source_37(Idx)
50754  , p_source_38 => l_array_source_38(Idx)
50755  , p_source_39 => l_array_source_39(Idx)
50756  , p_source_40 => l_array_source_40(Idx)
50757  );
50758 If(l_balance_type_code = 'A') THEN
50759   l_actual_gain_loss_ref := l_gain_or_loss_ref;
50760 END IF;
50761 
50762 --
50763 
50764       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
50765       -- or secondary ledger that has different currency with primary
50766       -- or alc that is calculated by sla
50767       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
50768             (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'))
50769 
50770 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
50771 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
50772           AND (l_actual_flag = 'A')) THEN
50773         XLA_AE_LINES_PKG.CreateGainOrLossLines(
50774           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
50775          ,p_application_id   => p_application_id
50776          ,p_amb_context_code => 'DEFAULT'
50777          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
50778          ,p_event_class_code => C_EVENT_CLASS_CODE
50779          ,p_event_type_code  => C_EVENT_TYPE_CODE
50780          
50781          ,p_gain_ccid        => -1
50782          ,p_loss_ccid        => -1
50783 
50784          ,p_actual_flag      => l_actual_flag
50785          ,p_enc_flag         => null
50786          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
50787          ,p_enc_g_l_ref      => null
50788          );
50789       END IF;
50790    END IF;
50791 END IF;
50792 
50793    ELSE
50794       --
50795       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
50796       --
50797       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50798          trace
50799             (p_msg      => 'Trancaction revesal option is Y'
50800             ,p_level    => C_LEVEL_STATEMENT
50801             ,p_module   => l_log_module);
50802       END IF;
50803    END IF;
50804 
50805 END LOOP;
50806 l_result := XLA_AE_LINES_PKG.InsertLines ;
50807 end loop;
50808 close line_cur;
50809 
50810 
50811 --
50812 -- insert headers into xla_ae_headers_gt table
50813 --
50814 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
50815 
50816 -- insert into errors table here.
50817 
50818 END LOOP;
50819 
50820 --
50821 -- 4865292
50822 --
50823 -- Compare g_hdr_extract_count with event count in
50824 -- CreateHeadersAndLines.
50825 --
50826 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
50827 
50828 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50829    trace (p_msg     => '# rows extracted from header extract objects '
50830                     || ' (running total): '
50831                     || g_hdr_extract_count
50832          ,p_level   => C_LEVEL_STATEMENT
50833          ,p_module  => l_log_module);
50834 END IF;
50835 
50836 CLOSE header_cur;
50837 --
50838 
50839 --
50840 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50841    trace
50842       (p_msg      => 'END of EventClass_85'
50843       ,p_level    => C_LEVEL_PROCEDURE
50844       ,p_module   => l_log_module);
50845 END IF;
50846 --
50847 RETURN l_result;
50848 EXCEPTION
50849 WHEN xla_exceptions_pkg.application_exception THEN
50850    
50851 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
50852 
50853    
50854 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
50855 
50856    RAISE;
50857 WHEN OTHERS THEN
50858    xla_exceptions_pkg.raise_message
50859       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.EventClass_85');
50860 END EventClass_85;
50861 --
50862 
50863 ---------------------------------------
50864 --
50865 -- PRIVATE PROCEDURE
50866 --         insert_sources_86
50867 --
50868 ----------------------------------------
50869 --
50870 PROCEDURE insert_sources_86(
50871                                 p_target_ledger_id       IN NUMBER
50872                               , p_language               IN VARCHAR2
50873                               , p_sla_ledger_id          IN NUMBER
50874                               , p_pad_start_date         IN DATE
50875                               , p_pad_end_date           IN DATE
50876                          )
50877 IS
50878 
50879 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_PA_ALL';
50880 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PO_PA';
50881 p_apps_owner                   VARCHAR2(30);
50882 l_log_module                   VARCHAR2(240);
50883 BEGIN
50884 IF g_log_enabled THEN
50885       l_log_module := C_DEFAULT_MODULE||'.insert_sources_86';
50886 END IF;
50887 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50888 
50889       trace
50890          (p_msg      => 'BEGIN of insert_sources_86'
50891          ,p_level    => C_LEVEL_PROCEDURE
50892          ,p_module   => l_log_module);
50893 
50894 END IF;
50895 
50896 -- select APPS owner
50897 SELECT oracle_username
50898   INTO p_apps_owner
50899   FROM fnd_oracle_userid
50900  WHERE read_only_flag = 'U'
50901 ;
50902 
50903 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50904       trace
50905          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
50906                         ' - p_language = '||p_language||
50907                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
50908                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
50909                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
50910                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
50911          ,p_level    => C_LEVEL_STATEMENT
50912          ,p_module   => l_log_module);
50913 END IF;
50914 
50915 
50916 --
50917 INSERT INTO xla_diag_sources --hdr2
50918 (
50919         event_id
50920       , ledger_id
50921       , sla_ledger_id
50922       , description_language
50923       , object_name
50924       , object_type_code
50925       , line_number
50926       , source_application_id
50927       , source_type_code
50928       , source_code
50929       , source_value
50930       , source_meaning
50931       , created_by
50932       , creation_date
50933       , last_update_date
50934       , last_updated_by
50935       , last_update_login
50936       , program_update_date
50937       , program_application_id
50938       , program_id
50939       , request_id
50940 )
50941 SELECT
50942         event_id
50943       , p_target_ledger_id
50944       , p_sla_ledger_id
50945       , p_language
50946       , object_name
50947       , object_type_code
50948       , line_number
50949       , source_application_id
50950       , source_type_code
50951       , source_code
50952       , SUBSTR(source_value ,1,1996)
50953       , SUBSTR(source_meaning ,1,200)
50954       , xla_environment_pkg.g_Usr_Id
50955       , TRUNC(SYSDATE)
50956       , TRUNC(SYSDATE)
50957       , xla_environment_pkg.g_Usr_Id
50958       , xla_environment_pkg.g_Login_Id
50959       , TRUNC(SYSDATE)
50960       , xla_environment_pkg.g_Prog_Appl_Id
50961       , xla_environment_pkg.g_Prog_Id
50962       , xla_environment_pkg.g_Req_Id
50963   FROM (
50964        SELECT xet.event_id                  event_id
50965             , 0                          line_number
50966             , CASE r
50967                WHEN 1 THEN 'PO_EXTRACT_HEADER_V' 
50968                 WHEN 2 THEN 'PO_EXTRACT_HEADER_V' 
50969                 WHEN 3 THEN 'PO_EXTRACT_HEADER_V' 
50970                 WHEN 4 THEN 'PO_EXTRACT_HEADER_V' 
50971                 WHEN 5 THEN 'PO_EXTRACT_HEADER_V' 
50972                 
50973                ELSE null
50974               END                           object_name
50975             , CASE r
50976                 WHEN 1 THEN 'HEADER' 
50977                 WHEN 2 THEN 'HEADER' 
50978                 WHEN 3 THEN 'HEADER' 
50979                 WHEN 4 THEN 'HEADER' 
50980                 WHEN 5 THEN 'HEADER' 
50981                 
50982                 ELSE null
50983               END                           object_type_code
50984             , CASE r
50985                 WHEN 1 THEN '201' 
50986                 WHEN 2 THEN '201' 
50987                 WHEN 3 THEN '201' 
50988                 WHEN 4 THEN '201' 
50989                 WHEN 5 THEN '201' 
50990                 
50991                 ELSE null
50992               END                           source_application_id
50993             , 'S'             source_type_code
50994             , CASE r
50995                 WHEN 1 THEN 'PO_TYPE' 
50996                 WHEN 2 THEN 'PO_NUMBER' 
50997                 WHEN 3 THEN 'PO_HEADER_ID' 
50998                 WHEN 4 THEN 'GL_DATE' 
50999                 WHEN 5 THEN 'ENCUMBRANCE_TYPE_ID' 
51000                 
51001                 ELSE null
51002               END                           source_code
51003             , CASE r
51004                 WHEN 1 THEN TO_CHAR(h3.PO_TYPE)
51005                 WHEN 2 THEN TO_CHAR(h3.PO_NUMBER)
51006                 WHEN 3 THEN TO_CHAR(h3.PO_HEADER_ID)
51007                 WHEN 4 THEN TO_CHAR(h3.GL_DATE)
51008                 WHEN 5 THEN TO_CHAR(h3.ENCUMBRANCE_TYPE_ID)
51009                 
51010                 ELSE null
51011               END                           source_value
51012             , null              source_meaning
51013          FROM xla_events_gt     xet  
51014       , PO_EXTRACT_HEADER_V  h3
51015              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
51016          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
51017            AND xet.event_class_code = C_EVENT_CLASS_CODE
51018               AND h3.event_id = xet.event_id
51019 
51020 )
51021 ;
51022 --
51023 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
51024 
51025       trace
51026          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
51027          ,p_level    => C_LEVEL_STATEMENT
51028          ,p_module   => l_log_module);
51029 
51030 END IF;
51031 --
51032 
51033 
51034 
51035 --
51036 INSERT INTO xla_diag_sources  --line2
51037 (
51038         event_id
51039       , ledger_id
51040       , sla_ledger_id
51041       , description_language
51042       , object_name
51043       , object_type_code
51044       , line_number
51045       , source_application_id
51046       , source_type_code
51047       , source_code
51048       , source_value
51049       , source_meaning
51050       , created_by
51051       , creation_date
51052       , last_update_date
51053       , last_updated_by
51054       , last_update_login
51055       , program_update_date
51056       , program_application_id
51057       , program_id
51058       , request_id
51059 )
51060 SELECT  event_id
51061       , p_target_ledger_id
51062       , p_sla_ledger_id
51063       , p_language
51064       , object_name
51065       , object_type_code
51066       , line_number
51067       , source_application_id
51068       , source_type_code
51069       , source_code
51070       , SUBSTR(source_value,1,1996)
51071       , SUBSTR(source_meaning ,1,200)
51072       , xla_environment_pkg.g_Usr_Id
51073       , TRUNC(SYSDATE)
51074       , TRUNC(SYSDATE)
51075       , xla_environment_pkg.g_Usr_Id
51076       , xla_environment_pkg.g_Login_Id
51077       , TRUNC(SYSDATE)
51078       , xla_environment_pkg.g_Prog_Appl_Id
51079       , xla_environment_pkg.g_Prog_Id
51080       , xla_environment_pkg.g_Req_Id
51081   FROM (
51082        SELECT xet.event_id                  event_id
51083             , l2.line_number                 line_number
51084             , CASE r
51085                WHEN 1 THEN 'PO_EXTRACT_DETAIL_V' 
51086                 WHEN 2 THEN 'PO_EXTRACT_DETAIL_V' 
51087                 WHEN 3 THEN 'PO_EXTRACT_DETAIL_V' 
51088                 WHEN 4 THEN 'PO_EXTRACT_DETAIL_V' 
51089                 WHEN 5 THEN 'PO_EXTRACT_DETAIL_V' 
51090                 WHEN 6 THEN 'PO_EXTRACT_DETAIL_V' 
51091                 WHEN 7 THEN 'PO_EXTRACT_DETAIL_V' 
51092                 WHEN 8 THEN 'PO_EXTRACT_DETAIL_V' 
51093                 WHEN 9 THEN 'PO_EXTRACT_DETAIL_V' 
51094                 WHEN 10 THEN 'PO_EXTRACT_DETAIL_V' 
51095                 WHEN 11 THEN 'PO_EXTRACT_DETAIL_V' 
51096                 WHEN 12 THEN 'PO_EXTRACT_DETAIL_V' 
51097                 WHEN 13 THEN 'PO_EXTRACT_DETAIL_V' 
51098                 WHEN 14 THEN 'PO_EXTRACT_DETAIL_V' 
51099                 WHEN 15 THEN 'PO_EXTRACT_DETAIL_V' 
51100                 WHEN 16 THEN 'PO_EXTRACT_DETAIL_V' 
51101                 WHEN 17 THEN 'PO_EXTRACT_DETAIL_V' 
51102                 WHEN 18 THEN 'PO_EXTRACT_DETAIL_V' 
51103                 WHEN 19 THEN 'PO_EXTRACT_DETAIL_V' 
51104                 WHEN 20 THEN 'PO_EXTRACT_DETAIL_V' 
51105                 WHEN 21 THEN 'PO_DISTS_REF_V' 
51106                 WHEN 22 THEN 'PO_DISTS_REF_V' 
51107                 WHEN 23 THEN 'PO_DISTS_REF_V' 
51108                 WHEN 24 THEN 'PO_EXTRACT_DETAIL_V' 
51109                 WHEN 25 THEN 'PO_EXTRACT_DETAIL_V' 
51110                 
51111                ELSE null
51112               END                           object_name
51113             , CASE r
51114                 WHEN 1 THEN 'LINE' 
51115                 WHEN 2 THEN 'LINE' 
51116                 WHEN 3 THEN 'LINE' 
51117                 WHEN 4 THEN 'LINE' 
51118                 WHEN 5 THEN 'LINE' 
51119                 WHEN 6 THEN 'LINE' 
51120                 WHEN 7 THEN 'LINE' 
51121                 WHEN 8 THEN 'LINE' 
51122                 WHEN 9 THEN 'LINE' 
51123                 WHEN 10 THEN 'LINE' 
51124                 WHEN 11 THEN 'LINE' 
51125                 WHEN 12 THEN 'LINE' 
51126                 WHEN 13 THEN 'LINE' 
51127                 WHEN 14 THEN 'LINE' 
51128                 WHEN 15 THEN 'LINE' 
51129                 WHEN 16 THEN 'LINE' 
51130                 WHEN 17 THEN 'LINE' 
51131                 WHEN 18 THEN 'LINE' 
51132                 WHEN 19 THEN 'LINE' 
51133                 WHEN 20 THEN 'LINE' 
51134                 WHEN 21 THEN 'LINE' 
51135                 WHEN 22 THEN 'LINE' 
51136                 WHEN 23 THEN 'LINE' 
51137                 WHEN 24 THEN 'LINE' 
51138                 WHEN 25 THEN 'LINE' 
51139                 
51140                 ELSE null
51141               END                           object_type_code
51142             , CASE r
51143                 WHEN 1 THEN '201' 
51144                 WHEN 2 THEN '201' 
51145                 WHEN 3 THEN '201' 
51146                 WHEN 4 THEN '201' 
51147                 WHEN 5 THEN '201' 
51148                 WHEN 6 THEN '201' 
51149                 WHEN 7 THEN '201' 
51150                 WHEN 8 THEN '201' 
51151                 WHEN 9 THEN '201' 
51152                 WHEN 10 THEN '201' 
51153                 WHEN 11 THEN '201' 
51154                 WHEN 12 THEN '201' 
51155                 WHEN 13 THEN '201' 
51156                 WHEN 14 THEN '201' 
51157                 WHEN 15 THEN '201' 
51158                 WHEN 16 THEN '201' 
51159                 WHEN 17 THEN '201' 
51160                 WHEN 18 THEN '201' 
51161                 WHEN 19 THEN '201' 
51162                 WHEN 20 THEN '201' 
51163                 WHEN 21 THEN '201' 
51164                 WHEN 22 THEN '201' 
51165                 WHEN 23 THEN '201' 
51166                 WHEN 24 THEN '201' 
51167                 WHEN 25 THEN '201' 
51168                 
51169                 ELSE null
51170               END                           source_application_id
51171             , 'S'             source_type_code
51172             , CASE r
51173                 WHEN 1 THEN 'JE_LINE_DESCRIPTION' 
51174                 WHEN 2 THEN 'BUDGET_ACCOUNT' 
51175                 WHEN 3 THEN 'MAIN_OR_BACKING_CODE' 
51176                 WHEN 4 THEN 'ACCOUNTING_REVERSAL_FLAG' 
51177                 WHEN 5 THEN 'PO_DISTRIBUTION_TYPE' 
51178                 WHEN 6 THEN 'PO_DISTRIBUTION_ID' 
51179                 WHEN 7 THEN 'ENTERED_AMT' 
51180                 WHEN 8 THEN 'CURRENCY_CODE' 
51181                 WHEN 9 THEN 'ACCOUNTED_AMT' 
51182                 WHEN 10 THEN 'ALLOC_TO_DISTRIBUTION_TYPE' 
51183                 WHEN 11 THEN 'ALLOC_TO_DIST_ID_1' 
51184                 WHEN 12 THEN 'APPLIED_TO_APPL_ID' 
51185                 WHEN 13 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
51186                 WHEN 14 THEN 'APPLIED_TO_ENTITY_CODE' 
51187                 WHEN 15 THEN 'APPLIED_TO_DIST_ID_1' 
51188                 WHEN 16 THEN 'APPLIED_TO_HEADER_ID_1' 
51189                 WHEN 17 THEN 'DISTRIBUTION_LINK_TYPE' 
51190                 WHEN 18 THEN 'PO_ENCUM_UPG_OPTION' 
51191                 WHEN 19 THEN 'JFMIP_REFERENCE' 
51192                 WHEN 20 THEN 'PO_UPG_ENC_TYPE_ID' 
51193                 WHEN 21 THEN 'CURRENCY_CONVERSION_DATE' 
51194                 WHEN 22 THEN 'CURRENCY_CONVERSION_RATE' 
51195                 WHEN 23 THEN 'CURRENCY_CONVERSION_TYPE' 
51196                 WHEN 24 THEN 'BACKING_REQ_ENC_CHANGED' 
51197                 WHEN 25 THEN 'ADJUSTMENT_STATUS' 
51198                 
51199                 ELSE null
51200               END                           source_code
51201             , CASE r
51202                 WHEN 1 THEN TO_CHAR(l2.JE_LINE_DESCRIPTION)
51203                 WHEN 2 THEN TO_CHAR(l2.BUDGET_ACCOUNT)
51204                 WHEN 3 THEN TO_CHAR(l2.MAIN_OR_BACKING_CODE)
51205                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTING_REVERSAL_FLAG)
51206                 WHEN 5 THEN TO_CHAR(l2.PO_DISTRIBUTION_TYPE)
51207                 WHEN 6 THEN TO_CHAR(l2.PO_DISTRIBUTION_ID)
51208                 WHEN 7 THEN TO_CHAR(l2.ENTERED_AMT)
51209                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CODE)
51210                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMT)
51211                 WHEN 10 THEN TO_CHAR(l2.ALLOC_TO_DISTRIBUTION_TYPE)
51212                 WHEN 11 THEN TO_CHAR(l2.ALLOC_TO_DIST_ID_1)
51213                 WHEN 12 THEN TO_CHAR(l2.APPLIED_TO_APPL_ID)
51214                 WHEN 13 THEN TO_CHAR(l2.APPLIED_TO_DIST_LINK_TYPE)
51215                 WHEN 14 THEN TO_CHAR(l2.APPLIED_TO_ENTITY_CODE)
51216                 WHEN 15 THEN TO_CHAR(l2.APPLIED_TO_DIST_ID_1)
51217                 WHEN 16 THEN TO_CHAR(l2.APPLIED_TO_HEADER_ID_1)
51218                 WHEN 17 THEN TO_CHAR(l2.DISTRIBUTION_LINK_TYPE)
51219                 WHEN 18 THEN TO_CHAR(l2.PO_ENCUM_UPG_OPTION)
51220                 WHEN 19 THEN TO_CHAR(l2.JFMIP_REFERENCE)
51221                 WHEN 20 THEN TO_CHAR(l2.PO_UPG_ENC_TYPE_ID)
51222                 WHEN 21 THEN TO_CHAR(l1.CURRENCY_CONVERSION_DATE)
51223                 WHEN 22 THEN TO_CHAR(l1.CURRENCY_CONVERSION_RATE)
51224                 WHEN 23 THEN TO_CHAR(l1.CURRENCY_CONVERSION_TYPE)
51225                 WHEN 24 THEN TO_CHAR(l2.BACKING_REQ_ENC_CHANGED)
51226                 WHEN 25 THEN TO_CHAR(l2.ADJUSTMENT_STATUS)
51227                 
51228                 ELSE null
51229               END                           source_value
51230             , null              source_meaning
51231          FROM  xla_events_gt     xet  
51232         , PO_DISTS_REF_V  l1
51233         , PO_EXTRACT_DETAIL_V  l2
51234             , (select rownum r from all_objects where rownum <= 25 and owner = p_apps_owner)
51235         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
51236           AND xet.event_class_code = C_EVENT_CLASS_CODE
51237             AND l2.event_id          = xet.event_id
51238  AND l2.po_distribution_id = l1.po_distribution_id  (+)  and l2.po_distribution_type = l1.po_distribution_type (+) 
51239 )
51240 ;
51241 --
51242 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
51243 
51244       trace
51245          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
51246          ,p_level    => C_LEVEL_STATEMENT
51247          ,p_module   => l_log_module);
51248 
51249 END IF;
51250 
51251 
51252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51253       trace
51254          (p_msg      => 'END of insert_sources_86'
51255          ,p_level    => C_LEVEL_PROCEDURE
51256          ,p_module   => l_log_module);
51257 END IF;
51258 EXCEPTION
51259   WHEN xla_exceptions_pkg.application_exception THEN
51260       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
51261             trace
51262                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
51263                ,p_level    => C_LEVEL_EXCEPTION
51264                ,p_module   => l_log_module);
51265       END IF;
51266       RAISE;
51267   WHEN OTHERS THEN
51268       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
51269             trace
51270                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
51271                ,p_level    => C_LEVEL_EXCEPTION
51272                ,p_module   => l_log_module);
51273        END IF;
51274        xla_exceptions_pkg.raise_message
51275            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.insert_sources_86');
51276 END insert_sources_86;
51277 --
51278 
51279 ---------------------------------------
51280 --
51281 -- PRIVATE FUNCTION
51282 --         EventClass_86
51283 --
51284 ----------------------------------------
51285 --
51286 FUNCTION EventClass_86
51287        (p_application_id         IN NUMBER
51288        ,p_base_ledger_id         IN NUMBER
51289        ,p_target_ledger_id       IN NUMBER
51290        ,p_language               IN VARCHAR2
51291        ,p_currency_code          IN VARCHAR2
51292        ,p_sla_ledger_id          IN NUMBER
51293        ,p_pad_start_date         IN DATE
51294        ,p_pad_end_date           IN DATE
51295        ,p_primary_ledger_id      IN NUMBER)
51296 RETURN BOOLEAN IS
51297 --
51298 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_PA_ALL';
51299 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PO_PA';
51300 
51301 l_calculate_acctd_flag   VARCHAR2(1) :='N';
51302 l_calculate_g_l_flag     VARCHAR2(1) :='N';
51303 --
51304 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51305 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51306 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
51307 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
51308 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51309 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
51310 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
51311 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51312 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
51313 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
51314 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51315 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51316 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51317 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
51318 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
51319 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
51320 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
51321 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
51322 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
51323 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
51324 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
51325 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
51326 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
51327 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
51328 
51329 l_event_id                             NUMBER;
51330 l_previous_event_id                    NUMBER;
51331 l_first_event_id                       NUMBER;
51332 l_last_event_id                        NUMBER;
51333 
51334 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
51335 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
51336 --
51337 --
51338 l_result                    BOOLEAN := TRUE;
51339 l_rows                      NUMBER  := 1000;
51340 l_event_type_name           VARCHAR2(80) := 'All';
51341 l_event_class_name          VARCHAR2(80) := 'Purchase Order and Agreement';
51342 l_description               VARCHAR2(4000);
51343 l_transaction_reversal      NUMBER;
51344 l_ae_header_id              NUMBER;
51345 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
51346 l_log_module                VARCHAR2(240);
51347 --
51348 l_acct_reversal_source      VARCHAR2(30);
51349 l_trx_reversal_source       VARCHAR2(30);
51350 
51351 l_continue_with_lines       BOOLEAN := TRUE;
51352 --
51353 l_acc_rev_gl_date_source    DATE;                      -- 4262811
51354 --
51355 type t_array_event_id is table of number index by binary_integer;
51356 
51357 l_rec_array_event                    t_rec_array_event;
51358 l_null_rec_array_event               t_rec_array_event;
51359 l_array_ae_header_id                 xla_number_array_type;
51360 l_actual_flag                        VARCHAR2(1) := NULL;
51361 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
51362 l_balance_type_code                  VARCHAR2(1) :=NULL;
51363 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
51364 
51365 --
51366 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
51367 --
51368 
51369 TYPE t_array_source_1 IS TABLE OF PO_EXTRACT_HEADER_V.PO_TYPE%TYPE INDEX BY BINARY_INTEGER;
51370 TYPE t_array_source_2 IS TABLE OF PO_EXTRACT_HEADER_V.PO_NUMBER%TYPE INDEX BY BINARY_INTEGER;
51371 TYPE t_array_source_52 IS TABLE OF PO_EXTRACT_HEADER_V.PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
51372 TYPE t_array_source_79 IS TABLE OF PO_EXTRACT_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
51373 TYPE t_array_source_80 IS TABLE OF PO_EXTRACT_HEADER_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
51374 
51375 TYPE t_array_source_7 IS TABLE OF PO_EXTRACT_DETAIL_V.JE_LINE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
51376 TYPE t_array_source_11 IS TABLE OF PO_EXTRACT_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
51377 TYPE t_array_source_13 IS TABLE OF PO_EXTRACT_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
51378 TYPE t_array_source_16 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
51379 TYPE t_array_source_24 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
51380 TYPE t_array_source_29 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
51381 TYPE t_array_source_33 IS TABLE OF PO_EXTRACT_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
51382 TYPE t_array_source_34 IS TABLE OF PO_EXTRACT_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
51383 TYPE t_array_source_35 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
51384 TYPE t_array_source_49 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
51385 TYPE t_array_source_51 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
51386 TYPE t_array_source_53 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
51387 TYPE t_array_source_54 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
51388 TYPE t_array_source_55 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
51389 TYPE t_array_source_56 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
51390 TYPE t_array_source_57 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_HEADER_ID_1%TYPE INDEX BY BINARY_INTEGER;
51391 TYPE t_array_source_58 IS TABLE OF PO_EXTRACT_DETAIL_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
51392 TYPE t_array_source_59 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
51393 TYPE t_array_source_60 IS TABLE OF PO_EXTRACT_DETAIL_V.JFMIP_REFERENCE%TYPE INDEX BY BINARY_INTEGER;
51394 TYPE t_array_source_61 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
51395 TYPE t_array_source_62 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
51396 TYPE t_array_source_63 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
51397 TYPE t_array_source_64 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
51398 TYPE t_array_source_65 IS TABLE OF PO_EXTRACT_DETAIL_V.BACKING_REQ_ENC_CHANGED%TYPE INDEX BY BINARY_INTEGER;
51399 TYPE t_array_source_75 IS TABLE OF PO_EXTRACT_DETAIL_V.ADJUSTMENT_STATUS%TYPE INDEX BY BINARY_INTEGER;
51400 
51401 l_array_source_1              t_array_source_1;
51402 l_array_source_2              t_array_source_2;
51403 l_array_source_52              t_array_source_52;
51404 l_array_source_79              t_array_source_79;
51405 l_array_source_80              t_array_source_80;
51406 
51407 l_array_source_7      t_array_source_7;
51408 l_array_source_11      t_array_source_11;
51409 l_array_source_13      t_array_source_13;
51410 l_array_source_16      t_array_source_16;
51411 l_array_source_24      t_array_source_24;
51412 l_array_source_29      t_array_source_29;
51413 l_array_source_33      t_array_source_33;
51414 l_array_source_34      t_array_source_34;
51415 l_array_source_35      t_array_source_35;
51416 l_array_source_49      t_array_source_49;
51417 l_array_source_51      t_array_source_51;
51418 l_array_source_53      t_array_source_53;
51419 l_array_source_54      t_array_source_54;
51420 l_array_source_55      t_array_source_55;
51421 l_array_source_56      t_array_source_56;
51422 l_array_source_57      t_array_source_57;
51423 l_array_source_58      t_array_source_58;
51424 l_array_source_59      t_array_source_59;
51425 l_array_source_60      t_array_source_60;
51426 l_array_source_61      t_array_source_61;
51427 l_array_source_62      t_array_source_62;
51428 l_array_source_63      t_array_source_63;
51429 l_array_source_64      t_array_source_64;
51430 l_array_source_65      t_array_source_65;
51431 l_array_source_75      t_array_source_75;
51432 
51433 --
51434 CURSOR header_cur
51435 IS
51436 SELECT /*+ leading(xet) cardinality(xet,1) */
51437 -- Event Class Code: PO_PA
51438     xet.entity_id
51439    ,xet.legal_entity_id
51440    ,xet.entity_code
51441    ,xet.transaction_number
51442    ,xet.event_id
51443    ,xet.event_class_code
51444    ,xet.event_type_code
51445    ,xet.event_number
51446    ,xet.event_date
51447    ,xet.transaction_date
51448    ,xet.reference_num_1
51449    ,xet.reference_num_2
51450    ,xet.reference_num_3
51451    ,xet.reference_num_4
51452    ,xet.reference_char_1
51453    ,xet.reference_char_2
51454    ,xet.reference_char_3
51455    ,xet.reference_char_4
51456    ,xet.reference_date_1
51457    ,xet.reference_date_2
51458    ,xet.reference_date_3
51459    ,xet.reference_date_4
51460    ,xet.event_created_by
51461    ,xet.budgetary_control_flag 
51462   , h3.PO_TYPE    source_1
51463   , h3.PO_NUMBER    source_2
51464   , h3.PO_HEADER_ID    source_52
51465   , h3.GL_DATE    source_79
51466   , h3.ENCUMBRANCE_TYPE_ID    source_80
51467   FROM xla_events_gt     xet 
51468   , PO_EXTRACT_HEADER_V  h3
51469  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
51470    and xet.event_class_code = C_EVENT_CLASS_CODE
51471    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
51472 
51473  ORDER BY event_id
51474 ;
51475 
51476 
51477 --
51478 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
51479 IS
51480 SELECT  /*+ leading(xet) cardinality(xet,1) */
51481 -- Event Class Code: PO_PA
51482     xet.entity_id
51483    ,xet.legal_entity_id
51484    ,xet.entity_code
51485    ,xet.transaction_number
51486    ,xet.event_id
51487    ,xet.event_class_code
51488    ,xet.event_type_code
51489    ,xet.event_number
51490    ,xet.event_date
51491    ,xet.transaction_date
51492    ,xet.reference_num_1
51493    ,xet.reference_num_2
51494    ,xet.reference_num_3
51495    ,xet.reference_num_4
51496    ,xet.reference_char_1
51497    ,xet.reference_char_2
51498    ,xet.reference_char_3
51499    ,xet.reference_char_4
51500    ,xet.reference_date_1
51501    ,xet.reference_date_2
51502    ,xet.reference_date_3
51503    ,xet.reference_date_4
51504    ,xet.event_created_by
51505    ,xet.budgetary_control_flag
51506  , l2.LINE_NUMBER  
51507   , l2.JE_LINE_DESCRIPTION    source_7
51508   , l2.BUDGET_ACCOUNT    source_11
51509   , l2.MAIN_OR_BACKING_CODE    source_13
51510   , l2.ACCOUNTING_REVERSAL_FLAG    source_16
51511   , l2.PO_DISTRIBUTION_TYPE    source_24
51512   , l2.PO_DISTRIBUTION_ID    source_29
51513   , l2.ENTERED_AMT    source_33
51514   , l2.CURRENCY_CODE    source_34
51515   , l2.ACCOUNTED_AMT    source_35
51516   , l2.ALLOC_TO_DISTRIBUTION_TYPE    source_49
51517   , l2.ALLOC_TO_DIST_ID_1    source_51
51518   , l2.APPLIED_TO_APPL_ID    source_53
51519   , l2.APPLIED_TO_DIST_LINK_TYPE    source_54
51520   , l2.APPLIED_TO_ENTITY_CODE    source_55
51521   , l2.APPLIED_TO_DIST_ID_1    source_56
51522   , l2.APPLIED_TO_HEADER_ID_1    source_57
51523   , l2.DISTRIBUTION_LINK_TYPE    source_58
51524   , l2.PO_ENCUM_UPG_OPTION    source_59
51525   , l2.JFMIP_REFERENCE    source_60
51526   , l2.PO_UPG_ENC_TYPE_ID    source_61
51527   , l1.CURRENCY_CONVERSION_DATE    source_62
51528   , l1.CURRENCY_CONVERSION_RATE    source_63
51529   , l1.CURRENCY_CONVERSION_TYPE    source_64
51530   , l2.BACKING_REQ_ENC_CHANGED    source_65
51531   , l2.ADJUSTMENT_STATUS    source_75
51532   FROM xla_events_gt     xet 
51533   , PO_DISTS_REF_V  l1
51534   , PO_EXTRACT_DETAIL_V  l2
51535  WHERE xet.event_id between x_first_event_id and x_last_event_id
51536    and xet.event_date between p_pad_start_date and p_pad_end_date
51537    and xet.event_class_code = C_EVENT_CLASS_CODE
51538    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
51539  AND l2.po_distribution_id = l1.po_distribution_id  (+)  AND l2.po_distribution_type = l1.po_distribution_type (+) ;
51540 
51541 --
51542 BEGIN
51543 IF g_log_enabled THEN
51544    l_log_module := C_DEFAULT_MODULE||'.EventClass_86';
51545 END IF;
51546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51547    trace
51548       (p_msg      => 'BEGIN of EventClass_86'
51549       ,p_level    => C_LEVEL_PROCEDURE
51550       ,p_module   => l_log_module);
51551 END IF;
51552 
51553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
51554    trace
51555       (p_msg      => 'p_application_id = '||p_application_id||
51556                      ' - p_base_ledger_id = '||p_base_ledger_id||
51557                      ' - p_target_ledger_id  = '||p_target_ledger_id||
51558                      ' - p_language = '||p_language||
51559                      ' - p_currency_code = '||p_currency_code||
51560                      ' - p_sla_ledger_id = '||p_sla_ledger_id
51561       ,p_level    => C_LEVEL_STATEMENT
51562       ,p_module   => l_log_module);
51563 END IF;
51564 --
51565 -- initialze arrays
51566 --
51567 g_array_event.DELETE;
51568 l_rec_array_event := l_null_rec_array_event;
51569 --
51570 --------------------------------------
51571 -- 4262811 Initialze MPA Line Number
51572 --------------------------------------
51573 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
51574 
51575 --
51576 
51577 --
51578 OPEN header_cur;
51579 --
51580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
51581    trace
51582    (p_msg      => 'SQL - FETCH header_cur'
51583    ,p_level    => C_LEVEL_STATEMENT
51584    ,p_module   => l_log_module);
51585 END IF;
51586 --
51587 LOOP
51588 FETCH header_cur BULK COLLECT INTO
51589         l_array_entity_id
51590       , l_array_legal_entity_id
51591       , l_array_entity_code
51592       , l_array_transaction_num
51593       , l_array_event_id
51594       , l_array_class_code
51595       , l_array_event_type
51596       , l_array_event_number
51597       , l_array_event_date
51598       , l_array_transaction_date
51599       , l_array_reference_num_1
51600       , l_array_reference_num_2
51601       , l_array_reference_num_3
51602       , l_array_reference_num_4
51603       , l_array_reference_char_1
51604       , l_array_reference_char_2
51605       , l_array_reference_char_3
51606       , l_array_reference_char_4
51607       , l_array_reference_date_1
51608       , l_array_reference_date_2
51609       , l_array_reference_date_3
51610       , l_array_reference_date_4
51611       , l_array_event_created_by
51612       , l_array_budgetary_control_flag 
51613       , l_array_source_1
51614       , l_array_source_2
51615       , l_array_source_52
51616       , l_array_source_79
51617       , l_array_source_80
51618       LIMIT l_rows;
51619 --
51620 IF (C_LEVEL_EVENT >= g_log_level) THEN
51621    trace
51622    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
51623    ,p_level    => C_LEVEL_EVENT
51624    ,p_module   => l_log_module);
51625 END IF;
51626 --
51627 EXIT WHEN l_array_entity_id.COUNT = 0;
51628 
51629 -- initialize arrays
51630 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
51631 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
51632 
51633 --
51634 -- Bug 4458708
51635 --
51636 XLA_AE_LINES_PKG.g_LineNumber := 0;
51637 
51638 
51639 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
51640 g_last_hdr_idx := l_array_event_id.LAST;
51641 --
51642 -- loop for the headers. Each iteration is for each header extract row
51643 -- fetched in header cursor
51644 --
51645 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
51646 
51647 --
51648 -- set event info as cache for other routines to refer event attributes
51649 --
51650 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
51651    (p_application_id           => p_application_id
51652    ,p_primary_ledger_id        => p_primary_ledger_id
51653    ,p_base_ledger_id           => p_base_ledger_id
51654    ,p_target_ledger_id         => p_target_ledger_id
51655    ,p_entity_id                => l_array_entity_id(hdr_idx)
51656    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
51657    ,p_entity_code              => l_array_entity_code(hdr_idx)
51658    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
51659    ,p_event_id                 => l_array_event_id(hdr_idx)
51660    ,p_event_class_code         => l_array_class_code(hdr_idx)
51661    ,p_event_type_code          => l_array_event_type(hdr_idx)
51662    ,p_event_number             => l_array_event_number(hdr_idx)
51663    ,p_event_date               => l_array_event_date(hdr_idx)
51664    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
51665    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
51666    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
51667    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
51668    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
51669    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
51670    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
51671    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
51672    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
51673    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
51674    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
51675    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
51676    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
51677    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
51678    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
51679 
51680 --
51681 -- set the status of entry to C_VALID (0)
51682 --
51683 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
51684 
51685 --
51686 -- initialize a row for ae header
51687 --
51688 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
51689 
51690 l_event_id := l_array_event_id(hdr_idx);
51691 
51692 --
51693 -- storing the hdr_idx for event. May be used by line cursor.
51694 --
51695 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
51696 
51697 --
51698 -- store sources from header extract. This can be improved to
51699 -- store only those sources from header extract that may be used in lines
51700 --
51701 
51702 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
51703 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
51704 g_array_event(l_event_id).array_value_num('source_52') := l_array_source_52(hdr_idx);
51705 g_array_event(l_event_id).array_value_date('source_79') := l_array_source_79(hdr_idx);
51706 g_array_event(l_event_id).array_value_num('source_80') := l_array_source_80(hdr_idx);
51707 
51708 --
51709 -- initilaize the status of ae headers for diffrent balance types
51710 -- the status is initialised to C_NOT_CREATED (2)
51711 --
51712 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
51713 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
51714 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
51715 
51716 --
51717 -- call api to validate and store accounting attributes for header
51718 --
51719 
51720 ------------------------------------------------------------
51721 -- Accrual Reversal : to get date for Standard Source (NONE)
51722 ------------------------------------------------------------
51723 l_acc_rev_gl_date_source := NULL;
51724 
51725      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
51726       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_80');
51727      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
51728       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_79');
51729 
51730 
51731 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
51732 
51733 XLA_AE_HEADER_PKG.SetJeCategoryName;
51734 
51735 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
51736 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
51737 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
51738 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
51739 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
51740 
51741 
51742 --
51743 xla_ae_header_pkg.SetHdrDescription(
51744    p_description => Description_1 (
51745    p_application_id => p_application_id 
51746  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
51747  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
51748    )
51749 );
51750 --
51751 
51752 -- No header level analytical criteria
51753 
51754 --
51755 --accounting attribute enhancement, bug 3612931
51756 --
51757 l_trx_reversal_source := SUBSTR(NULL, 1,30);
51758 
51759 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
51760    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
51761 
51762    xla_accounting_err_pkg.build_message
51763       (p_appli_s_name            => 'XLA'
51764       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
51765       ,p_token_1                 => 'ACCT_ATTR_NAME'
51766       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
51767       ,p_token_2                 => 'PRODUCT_NAME'
51768       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
51769       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
51770       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
51771       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
51772 
51773 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
51774    --
51775    -- following sets the accounting attributes needed to reverse
51776    -- accounting for a distributeion
51777    --
51778    xla_ae_lines_pkg.SetTrxReversalAttrs
51779       (p_event_id              => l_event_id
51780       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
51781       ,p_trx_reversal_source   => l_trx_reversal_source);
51782 
51783 END IF;
51784 
51785 
51786 ----------------------------------------------------------------
51787 -- 4262811 -  update the header statuses to invalid in need be
51788 ----------------------------------------------------------------
51789 --
51790 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
51791 
51792 
51793   -----------------------------------------------
51794   -- No accrual reversal for the event class/type
51795   -----------------------------------------------
51796 ----------------------------------------------------------------
51797 
51798 --
51799 -- this ends the header loop iteration for one bulk fetch
51800 --
51801 END LOOP;
51802 
51803 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
51804 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
51805 
51806 --
51807 -- insert dummy rows into lines gt table that were created due to
51808 -- transaction reversals
51809 --
51810 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
51811    l_result := XLA_AE_LINES_PKG.InsertLines;
51812 END IF;
51813 
51814 --
51815 -- reset the temp_line_num for each set of events fetched from header
51816 -- cursor rather than doing it for each new event in line cursor
51817 -- Bug 3939231
51818 --
51819 xla_ae_lines_pkg.g_temp_line_num := 0;
51820 
51821 
51822 
51823 --
51824 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
51825 --
51826 --
51827 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
51828 
51829       trace
51830          (p_msg      => 'SQL - FETCH line_cur'
51831          ,p_level    => C_LEVEL_STATEMENT
51832          ,p_module   => l_log_module);
51833 
51834 END IF;
51835 --
51836 --
51837 LOOP
51838   --
51839   FETCH line_cur BULK COLLECT INTO
51840         l_array_entity_id
51841       , l_array_legal_entity_id
51842       , l_array_entity_code
51843       , l_array_transaction_num
51844       , l_array_event_id
51845       , l_array_class_code
51846       , l_array_event_type
51847       , l_array_event_number
51848       , l_array_event_date
51849       , l_array_transaction_date
51850       , l_array_reference_num_1
51851       , l_array_reference_num_2
51852       , l_array_reference_num_3
51853       , l_array_reference_num_4
51854       , l_array_reference_char_1
51855       , l_array_reference_char_2
51856       , l_array_reference_char_3
51857       , l_array_reference_char_4
51858       , l_array_reference_date_1
51859       , l_array_reference_date_2
51860       , l_array_reference_date_3
51861       , l_array_reference_date_4
51862       , l_array_event_created_by
51863       , l_array_budgetary_control_flag
51864       , l_array_extract_line_num 
51865       , l_array_source_7
51866       , l_array_source_11
51867       , l_array_source_13
51868       , l_array_source_16
51869       , l_array_source_24
51870       , l_array_source_29
51871       , l_array_source_33
51872       , l_array_source_34
51873       , l_array_source_35
51874       , l_array_source_49
51875       , l_array_source_51
51876       , l_array_source_53
51877       , l_array_source_54
51878       , l_array_source_55
51879       , l_array_source_56
51880       , l_array_source_57
51881       , l_array_source_58
51882       , l_array_source_59
51883       , l_array_source_60
51884       , l_array_source_61
51885       , l_array_source_62
51886       , l_array_source_63
51887       , l_array_source_64
51888       , l_array_source_65
51889       , l_array_source_75
51890       LIMIT l_rows;
51891 
51892   --
51893   IF (C_LEVEL_EVENT >= g_log_level) THEN
51894             trace
51895                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
51896                ,p_level    => C_LEVEL_EVENT
51897                ,p_module   => l_log_module);
51898   END IF;
51899   --
51900   EXIT WHEN l_array_entity_id.count = 0;
51901 
51902   XLA_AE_LINES_PKG.g_rec_lines := null;
51903 
51904 --
51905 -- Bug 4458708
51906 --
51907 XLA_AE_LINES_PKG.g_LineNumber := 0;
51908 --
51909 --
51910 
51911 FOR Idx IN 1..l_array_event_id.count LOOP
51912    --
51913    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
51914    --
51915    l_event_id := l_array_event_id(idx);  -- 5648433
51916 
51917    --
51918    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
51919    --
51920 
51921    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
51922              (g_array_event(l_event_id).array_value_num('header_index'))
51923          ,'N'
51924          ) <> 'Y'
51925    THEN
51926       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
51927          trace
51928             (p_msg      => 'Trancaction revesal option is not Y '
51929             ,p_level    => C_LEVEL_STATEMENT
51930             ,p_module   => l_log_module);
51931       END IF;
51932 
51933 --
51934 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
51935 --
51936 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
51937 --
51938 -- set event info as cache for other routines to refer event attributes
51939 --
51940 
51941 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
51942    l_previous_event_id := l_event_id;
51943 
51944    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
51945       (p_application_id           => p_application_id
51946       ,p_primary_ledger_id        => p_primary_ledger_id
51947       ,p_base_ledger_id           => p_base_ledger_id
51948       ,p_target_ledger_id         => p_target_ledger_id
51949       ,p_entity_id                => l_array_entity_id(Idx)
51950       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
51951       ,p_entity_code              => l_array_entity_code(Idx)
51952       ,p_transaction_num          => l_array_transaction_num(Idx)
51953       ,p_event_id                 => l_array_event_id(Idx)
51954       ,p_event_class_code         => l_array_class_code(Idx)
51955       ,p_event_type_code          => l_array_event_type(Idx)
51956       ,p_event_number             => l_array_event_number(Idx)
51957       ,p_event_date               => l_array_event_date(Idx)
51958       ,p_transaction_date         => l_array_transaction_date(Idx)
51959       ,p_reference_num_1          => l_array_reference_num_1(Idx)
51960       ,p_reference_num_2          => l_array_reference_num_2(Idx)
51961       ,p_reference_num_3          => l_array_reference_num_3(Idx)
51962       ,p_reference_num_4          => l_array_reference_num_4(Idx)
51963       ,p_reference_char_1         => l_array_reference_char_1(Idx)
51964       ,p_reference_char_2         => l_array_reference_char_2(Idx)
51965       ,p_reference_char_3         => l_array_reference_char_3(Idx)
51966       ,p_reference_char_4         => l_array_reference_char_4(Idx)
51967       ,p_reference_date_1         => l_array_reference_date_1(Idx)
51968       ,p_reference_date_2         => l_array_reference_date_2(Idx)
51969       ,p_reference_date_3         => l_array_reference_date_3(Idx)
51970       ,p_reference_date_4         => l_array_reference_date_4(Idx)
51971       ,p_event_created_by         => l_array_event_created_by(Idx)
51972       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
51973        --
51974 END IF;
51975 
51976 
51977 
51978 --
51979 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
51980 
51981 l_acct_reversal_source := SUBSTR(l_array_source_16(Idx), 1,30);
51982 
51983 IF l_continue_with_lines THEN
51984    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
51985       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
51986 
51987       xla_accounting_err_pkg.build_message
51988          (p_appli_s_name            => 'XLA'
51989          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
51990          ,p_token_1                 => 'LINE_NUMBER'
51991          ,p_value_1                 => l_array_extract_line_num(Idx)
51992          ,p_token_2                 => 'PRODUCT_NAME'
51993          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
51994          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
51995          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
51996          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
51997 
51998    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
51999       --
52000       -- following sets the accounting attributes needed to reverse
52001       -- accounting for a distributeion
52002       --
52003 
52004       --
52005       -- 5217187
52006       --
52007       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
52008       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
52009                                        g_array_event(l_event_id).array_value_num('header_index'));
52010       --
52011       --
52012 
52013       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
52014       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_16(Idx);
52015       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
52016       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_29(Idx);
52017       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
52018       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_58(Idx);
52019       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
52020       l_rec_rev_acct_attrs.array_num_value(5)  := TO_NUMBER(l_array_source_11(Idx));
52021       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
52022       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_33(Idx);
52023       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
52024       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_34(Idx);
52025       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
52026       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_35(Idx);
52027       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
52028       l_rec_rev_acct_attrs.array_num_value(9)  := TO_NUMBER(l_array_source_11(Idx));
52029       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
52030       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_33(Idx);
52031       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
52032       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_34(Idx);
52033       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
52034       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_35(Idx);
52035       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
52036       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_59(Idx);
52037       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'REVERSED_DISTRIBUTION_ID1';
52038       l_rec_rev_acct_attrs.array_num_value(14)  := l_array_source_56(Idx);
52039       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_TYPE';
52040       l_rec_rev_acct_attrs.array_char_value(15)  := l_array_source_54(Idx);
52041       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'UPG_CR_ENC_TYPE_ID';
52042       l_rec_rev_acct_attrs.array_num_value(16)  := l_array_source_61(Idx);
52043       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'UPG_DR_ENC_TYPE_ID';
52044       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_61(Idx);
52045 
52046 
52047       xla_ae_lines_pkg.SetAcctReversalAttrs
52048          (p_event_id             => l_event_id
52049          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
52050          ,p_calculate_acctd_flag => l_calculate_acctd_flag
52051          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
52052    END IF;
52053 
52054    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
52055        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
52056 
52057 --
52058 AcctLineType_15 (
52059  p_application_id  => p_application_id
52060  ,p_event_id     => l_event_id
52061  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52062  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52063  ,p_actual_flag => l_actual_flag
52064  ,p_balance_type_code => l_balance_type_code
52065  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52066  
52067  , p_source_11 => l_array_source_11(Idx)
52068  , p_source_13 => l_array_source_13(Idx)
52069  , p_source_16 => l_array_source_16(Idx)
52070  , p_source_29 => l_array_source_29(Idx)
52071  , p_source_33 => l_array_source_33(Idx)
52072  , p_source_34 => l_array_source_34(Idx)
52073  , p_source_35 => l_array_source_35(Idx)
52074  , p_source_49 => l_array_source_49(Idx)
52075  , p_source_51 => l_array_source_51(Idx)
52076  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52077  , p_source_53 => l_array_source_53(Idx)
52078  , p_source_54 => l_array_source_54(Idx)
52079  , p_source_55 => l_array_source_55(Idx)
52080  , p_source_56 => l_array_source_56(Idx)
52081  , p_source_57 => l_array_source_57(Idx)
52082  , p_source_58 => l_array_source_58(Idx)
52083  , p_source_59 => l_array_source_59(Idx)
52084  , p_source_60 => l_array_source_60(Idx)
52085  , p_source_61 => l_array_source_61(Idx)
52086  );
52087 If(l_balance_type_code = 'A') THEN
52088   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52089 END IF;
52090 
52091 --
52092 
52093 
52094 --
52095 AcctLineType_16 (
52096  p_application_id  => p_application_id
52097  ,p_event_id     => l_event_id
52098  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52099  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52100  ,p_actual_flag => l_actual_flag
52101  ,p_balance_type_code => l_balance_type_code
52102  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52103  
52104  , p_source_11 => l_array_source_11(Idx)
52105  , p_source_13 => l_array_source_13(Idx)
52106  , p_source_16 => l_array_source_16(Idx)
52107  , p_source_29 => l_array_source_29(Idx)
52108  , p_source_33 => l_array_source_33(Idx)
52109  , p_source_34 => l_array_source_34(Idx)
52110  , p_source_35 => l_array_source_35(Idx)
52111  , p_source_49 => l_array_source_49(Idx)
52112  , p_source_51 => l_array_source_51(Idx)
52113  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52114  , p_source_53 => l_array_source_53(Idx)
52115  , p_source_54 => l_array_source_54(Idx)
52116  , p_source_55 => l_array_source_55(Idx)
52117  , p_source_56 => l_array_source_56(Idx)
52118  , p_source_57 => l_array_source_57(Idx)
52119  , p_source_58 => l_array_source_58(Idx)
52120  , p_source_59 => l_array_source_59(Idx)
52121  , p_source_60 => l_array_source_60(Idx)
52122  , p_source_61 => l_array_source_61(Idx)
52123  );
52124 If(l_balance_type_code = 'A') THEN
52125   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52126 END IF;
52127 
52128 --
52129 
52130 
52131 --
52132 AcctLineType_17 (
52133  p_application_id  => p_application_id
52134  ,p_event_id     => l_event_id
52135  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52136  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52137  ,p_actual_flag => l_actual_flag
52138  ,p_balance_type_code => l_balance_type_code
52139  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52140  
52141  , p_source_7 => l_array_source_7(Idx)
52142  , p_source_11 => l_array_source_11(Idx)
52143  , p_source_13 => l_array_source_13(Idx)
52144  , p_source_16 => l_array_source_16(Idx)
52145  , p_source_29 => l_array_source_29(Idx)
52146  , p_source_33 => l_array_source_33(Idx)
52147  , p_source_34 => l_array_source_34(Idx)
52148  , p_source_35 => l_array_source_35(Idx)
52149  , p_source_49 => l_array_source_49(Idx)
52150  , p_source_51 => l_array_source_51(Idx)
52151  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52152  , p_source_53 => l_array_source_53(Idx)
52153  , p_source_54 => l_array_source_54(Idx)
52154  , p_source_55 => l_array_source_55(Idx)
52155  , p_source_56 => l_array_source_56(Idx)
52156  , p_source_57 => l_array_source_57(Idx)
52157  , p_source_58 => l_array_source_58(Idx)
52158  , p_source_59 => l_array_source_59(Idx)
52159  , p_source_60 => l_array_source_60(Idx)
52160  , p_source_61 => l_array_source_61(Idx)
52161  , p_source_62 => l_array_source_62(Idx)
52162  , p_source_63 => l_array_source_63(Idx)
52163  , p_source_64 => l_array_source_64(Idx)
52164  );
52165 If(l_balance_type_code = 'A') THEN
52166   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52167 END IF;
52168 
52169 --
52170 
52171 
52172 --
52173 AcctLineType_18 (
52174  p_application_id  => p_application_id
52175  ,p_event_id     => l_event_id
52176  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52177  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52178  ,p_actual_flag => l_actual_flag
52179  ,p_balance_type_code => l_balance_type_code
52180  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52181  
52182  , p_source_11 => l_array_source_11(Idx)
52183  , p_source_13 => l_array_source_13(Idx)
52184  , p_source_16 => l_array_source_16(Idx)
52185  , p_source_29 => l_array_source_29(Idx)
52186  , p_source_33 => l_array_source_33(Idx)
52187  , p_source_34 => l_array_source_34(Idx)
52188  , p_source_35 => l_array_source_35(Idx)
52189  , p_source_49 => l_array_source_49(Idx)
52190  , p_source_51 => l_array_source_51(Idx)
52191  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52192  , p_source_53 => l_array_source_53(Idx)
52193  , p_source_54 => l_array_source_54(Idx)
52194  , p_source_55 => l_array_source_55(Idx)
52195  , p_source_56 => l_array_source_56(Idx)
52196  , p_source_57 => l_array_source_57(Idx)
52197  , p_source_58 => l_array_source_58(Idx)
52198  , p_source_59 => l_array_source_59(Idx)
52199  , p_source_60 => l_array_source_60(Idx)
52200  , p_source_61 => l_array_source_61(Idx)
52201  , p_source_65 => l_array_source_65(Idx)
52202  );
52203 If(l_balance_type_code = 'A') THEN
52204   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52205 END IF;
52206 
52207 --
52208 
52209 
52210 --
52211 AcctLineType_21 (
52212  p_application_id  => p_application_id
52213  ,p_event_id     => l_event_id
52214  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52215  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52216  ,p_actual_flag => l_actual_flag
52217  ,p_balance_type_code => l_balance_type_code
52218  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52219  
52220  , p_source_7 => l_array_source_7(Idx)
52221  , p_source_11 => l_array_source_11(Idx)
52222  , p_source_13 => l_array_source_13(Idx)
52223  , p_source_16 => l_array_source_16(Idx)
52224  , p_source_29 => l_array_source_29(Idx)
52225  , p_source_33 => l_array_source_33(Idx)
52226  , p_source_34 => l_array_source_34(Idx)
52227  , p_source_35 => l_array_source_35(Idx)
52228  , p_source_51 => l_array_source_51(Idx)
52229  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52230  , p_source_53 => l_array_source_53(Idx)
52231  , p_source_54 => l_array_source_54(Idx)
52232  , p_source_55 => l_array_source_55(Idx)
52233  , p_source_56 => l_array_source_56(Idx)
52234  , p_source_57 => l_array_source_57(Idx)
52235  , p_source_58 => l_array_source_58(Idx)
52236  , p_source_59 => l_array_source_59(Idx)
52237  , p_source_60 => l_array_source_60(Idx)
52238  , p_source_61 => l_array_source_61(Idx)
52239  , p_source_62 => l_array_source_62(Idx)
52240  , p_source_63 => l_array_source_63(Idx)
52241  , p_source_64 => l_array_source_64(Idx)
52242  , p_source_65 => l_array_source_65(Idx)
52243  );
52244 If(l_balance_type_code = 'A') THEN
52245   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52246 END IF;
52247 
52248 --
52249 
52250 
52251 --
52252 AcctLineType_38 (
52253  p_application_id  => p_application_id
52254  ,p_event_id     => l_event_id
52255  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52256  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52257  ,p_actual_flag => l_actual_flag
52258  ,p_balance_type_code => l_balance_type_code
52259  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52260  
52261  , p_source_11 => l_array_source_11(Idx)
52262  , p_source_13 => l_array_source_13(Idx)
52263  , p_source_16 => l_array_source_16(Idx)
52264  , p_source_29 => l_array_source_29(Idx)
52265  , p_source_33 => l_array_source_33(Idx)
52266  , p_source_34 => l_array_source_34(Idx)
52267  , p_source_35 => l_array_source_35(Idx)
52268  , p_source_49 => l_array_source_49(Idx)
52269  , p_source_51 => l_array_source_51(Idx)
52270  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52271  , p_source_53 => l_array_source_53(Idx)
52272  , p_source_54 => l_array_source_54(Idx)
52273  , p_source_55 => l_array_source_55(Idx)
52274  , p_source_56 => l_array_source_56(Idx)
52275  , p_source_57 => l_array_source_57(Idx)
52276  , p_source_58 => l_array_source_58(Idx)
52277  , p_source_59 => l_array_source_59(Idx)
52278  , p_source_60 => l_array_source_60(Idx)
52279  , p_source_61 => l_array_source_61(Idx)
52280  );
52281 If(l_balance_type_code = 'A') THEN
52282   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52283 END IF;
52284 
52285 --
52286 
52287 
52288 --
52289 AcctLineType_49 (
52290  p_application_id  => p_application_id
52291  ,p_event_id     => l_event_id
52292  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52293  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52294  ,p_actual_flag => l_actual_flag
52295  ,p_balance_type_code => l_balance_type_code
52296  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52297  
52298  , p_source_11 => l_array_source_11(Idx)
52299  , p_source_13 => l_array_source_13(Idx)
52300  , p_source_16 => l_array_source_16(Idx)
52301  , p_source_29 => l_array_source_29(Idx)
52302  , p_source_33 => l_array_source_33(Idx)
52303  , p_source_34 => l_array_source_34(Idx)
52304  , p_source_35 => l_array_source_35(Idx)
52305  , p_source_49 => l_array_source_49(Idx)
52306  , p_source_51 => l_array_source_51(Idx)
52307  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52308  , p_source_53 => l_array_source_53(Idx)
52309  , p_source_54 => l_array_source_54(Idx)
52310  , p_source_55 => l_array_source_55(Idx)
52311  , p_source_56 => l_array_source_56(Idx)
52312  , p_source_57 => l_array_source_57(Idx)
52313  , p_source_58 => l_array_source_58(Idx)
52314  , p_source_59 => l_array_source_59(Idx)
52315  , p_source_60 => l_array_source_60(Idx)
52316  , p_source_61 => l_array_source_61(Idx)
52317  , p_source_65 => l_array_source_65(Idx)
52318  );
52319 If(l_balance_type_code = 'A') THEN
52320   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52321 END IF;
52322 
52323 --
52324 
52325 
52326 --
52327 AcctLineType_53 (
52328  p_application_id  => p_application_id
52329  ,p_event_id     => l_event_id
52330  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52331  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52332  ,p_actual_flag => l_actual_flag
52333  ,p_balance_type_code => l_balance_type_code
52334  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52335  
52336  , p_source_7 => l_array_source_7(Idx)
52337  , p_source_11 => l_array_source_11(Idx)
52338  , p_source_13 => l_array_source_13(Idx)
52339  , p_source_16 => l_array_source_16(Idx)
52340  , p_source_29 => l_array_source_29(Idx)
52341  , p_source_33 => l_array_source_33(Idx)
52342  , p_source_34 => l_array_source_34(Idx)
52343  , p_source_35 => l_array_source_35(Idx)
52344  , p_source_51 => l_array_source_51(Idx)
52345  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52346  , p_source_53 => l_array_source_53(Idx)
52347  , p_source_54 => l_array_source_54(Idx)
52348  , p_source_55 => l_array_source_55(Idx)
52349  , p_source_56 => l_array_source_56(Idx)
52350  , p_source_57 => l_array_source_57(Idx)
52351  , p_source_58 => l_array_source_58(Idx)
52352  , p_source_59 => l_array_source_59(Idx)
52353  , p_source_60 => l_array_source_60(Idx)
52354  , p_source_61 => l_array_source_61(Idx)
52355  , p_source_62 => l_array_source_62(Idx)
52356  , p_source_63 => l_array_source_63(Idx)
52357  , p_source_64 => l_array_source_64(Idx)
52358  , p_source_65 => l_array_source_65(Idx)
52359  );
52360 If(l_balance_type_code = 'A') THEN
52361   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52362 END IF;
52363 
52364 --
52365 
52366 
52367 --
52368 AcctLineType_59 (
52369  p_application_id  => p_application_id
52370  ,p_event_id     => l_event_id
52371  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52372  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52373  ,p_actual_flag => l_actual_flag
52374  ,p_balance_type_code => l_balance_type_code
52375  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52376  
52377  , p_source_7 => l_array_source_7(Idx)
52378  , p_source_11 => l_array_source_11(Idx)
52379  , p_source_13 => l_array_source_13(Idx)
52380  , p_source_16 => l_array_source_16(Idx)
52381  , p_source_29 => l_array_source_29(Idx)
52382  , p_source_33 => l_array_source_33(Idx)
52383  , p_source_34 => l_array_source_34(Idx)
52384  , p_source_35 => l_array_source_35(Idx)
52385  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52386  , p_source_53 => l_array_source_53(Idx)
52387  , p_source_54 => l_array_source_54(Idx)
52388  , p_source_55 => l_array_source_55(Idx)
52389  , p_source_56 => l_array_source_56(Idx)
52390  , p_source_57 => l_array_source_57(Idx)
52391  , p_source_58 => l_array_source_58(Idx)
52392  , p_source_59 => l_array_source_59(Idx)
52393  , p_source_60 => l_array_source_60(Idx)
52394  , p_source_61 => l_array_source_61(Idx)
52395  , p_source_62 => l_array_source_62(Idx)
52396  , p_source_63 => l_array_source_63(Idx)
52397  , p_source_64 => l_array_source_64(Idx)
52398  );
52399 If(l_balance_type_code = 'A') THEN
52400   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52401 END IF;
52402 
52403 --
52404 
52405 
52406 --
52407 AcctLineType_66 (
52408  p_application_id  => p_application_id
52409  ,p_event_id     => l_event_id
52410  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52411  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52412  ,p_actual_flag => l_actual_flag
52413  ,p_balance_type_code => l_balance_type_code
52414  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52415  
52416  , p_source_7 => l_array_source_7(Idx)
52417  , p_source_11 => l_array_source_11(Idx)
52418  , p_source_13 => l_array_source_13(Idx)
52419  , p_source_16 => l_array_source_16(Idx)
52420  , p_source_24 => l_array_source_24(Idx)
52421  , p_source_29 => l_array_source_29(Idx)
52422  , p_source_33 => l_array_source_33(Idx)
52423  , p_source_34 => l_array_source_34(Idx)
52424  , p_source_35 => l_array_source_35(Idx)
52425  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52426  , p_source_53 => l_array_source_53(Idx)
52427  , p_source_54 => l_array_source_54(Idx)
52428  , p_source_55 => l_array_source_55(Idx)
52429  , p_source_56 => l_array_source_56(Idx)
52430  , p_source_57 => l_array_source_57(Idx)
52431  , p_source_58 => l_array_source_58(Idx)
52432  , p_source_59 => l_array_source_59(Idx)
52433  , p_source_60 => l_array_source_60(Idx)
52434  , p_source_61 => l_array_source_61(Idx)
52435  , p_source_62 => l_array_source_62(Idx)
52436  , p_source_63 => l_array_source_63(Idx)
52437  , p_source_64 => l_array_source_64(Idx)
52438  );
52439 If(l_balance_type_code = 'A') THEN
52440   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52441 END IF;
52442 
52443 --
52444 
52445 
52446 --
52447 AcctLineType_67 (
52448  p_application_id  => p_application_id
52449  ,p_event_id     => l_event_id
52450  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52451  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52452  ,p_actual_flag => l_actual_flag
52453  ,p_balance_type_code => l_balance_type_code
52454  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52455  
52456  , p_source_7 => l_array_source_7(Idx)
52457  , p_source_11 => l_array_source_11(Idx)
52458  , p_source_13 => l_array_source_13(Idx)
52459  , p_source_16 => l_array_source_16(Idx)
52460  , p_source_24 => l_array_source_24(Idx)
52461  , p_source_29 => l_array_source_29(Idx)
52462  , p_source_33 => l_array_source_33(Idx)
52463  , p_source_34 => l_array_source_34(Idx)
52464  , p_source_35 => l_array_source_35(Idx)
52465  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52466  , p_source_53 => l_array_source_53(Idx)
52467  , p_source_54 => l_array_source_54(Idx)
52468  , p_source_55 => l_array_source_55(Idx)
52469  , p_source_56 => l_array_source_56(Idx)
52470  , p_source_57 => l_array_source_57(Idx)
52471  , p_source_58 => l_array_source_58(Idx)
52472  , p_source_59 => l_array_source_59(Idx)
52473  , p_source_60 => l_array_source_60(Idx)
52474  , p_source_61 => l_array_source_61(Idx)
52475  , p_source_62 => l_array_source_62(Idx)
52476  , p_source_63 => l_array_source_63(Idx)
52477  , p_source_64 => l_array_source_64(Idx)
52478  , p_source_75 => l_array_source_75(Idx)
52479  );
52480 If(l_balance_type_code = 'A') THEN
52481   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52482 END IF;
52483 
52484 --
52485 
52486 
52487 --
52488 AcctLineType_73 (
52489  p_application_id  => p_application_id
52490  ,p_event_id     => l_event_id
52491  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52492  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52493  ,p_actual_flag => l_actual_flag
52494  ,p_balance_type_code => l_balance_type_code
52495  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52496  
52497  , p_source_11 => l_array_source_11(Idx)
52498  , p_source_13 => l_array_source_13(Idx)
52499  , p_source_16 => l_array_source_16(Idx)
52500  , p_source_29 => l_array_source_29(Idx)
52501  , p_source_33 => l_array_source_33(Idx)
52502  , p_source_34 => l_array_source_34(Idx)
52503  , p_source_35 => l_array_source_35(Idx)
52504  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52505  , p_source_53 => l_array_source_53(Idx)
52506  , p_source_54 => l_array_source_54(Idx)
52507  , p_source_55 => l_array_source_55(Idx)
52508  , p_source_56 => l_array_source_56(Idx)
52509  , p_source_57 => l_array_source_57(Idx)
52510  , p_source_58 => l_array_source_58(Idx)
52511  , p_source_59 => l_array_source_59(Idx)
52512  , p_source_60 => l_array_source_60(Idx)
52513  , p_source_61 => l_array_source_61(Idx)
52514  , p_source_75 => l_array_source_75(Idx)
52515  );
52516 If(l_balance_type_code = 'A') THEN
52517   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52518 END IF;
52519 
52520 --
52521 
52522 
52523 --
52524 AcctLineType_74 (
52525  p_application_id  => p_application_id
52526  ,p_event_id     => l_event_id
52527  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52528  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52529  ,p_actual_flag => l_actual_flag
52530  ,p_balance_type_code => l_balance_type_code
52531  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52532  
52533  , p_source_11 => l_array_source_11(Idx)
52534  , p_source_13 => l_array_source_13(Idx)
52535  , p_source_16 => l_array_source_16(Idx)
52536  , p_source_29 => l_array_source_29(Idx)
52537  , p_source_33 => l_array_source_33(Idx)
52538  , p_source_34 => l_array_source_34(Idx)
52539  , p_source_35 => l_array_source_35(Idx)
52540  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
52541  , p_source_53 => l_array_source_53(Idx)
52542  , p_source_54 => l_array_source_54(Idx)
52543  , p_source_55 => l_array_source_55(Idx)
52544  , p_source_56 => l_array_source_56(Idx)
52545  , p_source_57 => l_array_source_57(Idx)
52546  , p_source_58 => l_array_source_58(Idx)
52547  , p_source_59 => l_array_source_59(Idx)
52548  , p_source_60 => l_array_source_60(Idx)
52549  , p_source_61 => l_array_source_61(Idx)
52550  );
52551 If(l_balance_type_code = 'A') THEN
52552   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52553 END IF;
52554 
52555 --
52556 
52557       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
52558       -- or secondary ledger that has different currency with primary
52559       -- or alc that is calculated by sla
52560       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
52561             (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'))
52562 
52563 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
52564 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
52565           AND (l_actual_flag = 'A')) THEN
52566         XLA_AE_LINES_PKG.CreateGainOrLossLines(
52567           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
52568          ,p_application_id   => p_application_id
52569          ,p_amb_context_code => 'DEFAULT'
52570          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
52571          ,p_event_class_code => C_EVENT_CLASS_CODE
52572          ,p_event_type_code  => C_EVENT_TYPE_CODE
52573          
52574          ,p_gain_ccid        => -1
52575          ,p_loss_ccid        => -1
52576 
52577          ,p_actual_flag      => l_actual_flag
52578          ,p_enc_flag         => null
52579          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
52580          ,p_enc_g_l_ref      => null
52581          );
52582       END IF;
52583    END IF;
52584 END IF;
52585 
52586    ELSE
52587       --
52588       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
52589       --
52590       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52591          trace
52592             (p_msg      => 'Trancaction revesal option is Y'
52593             ,p_level    => C_LEVEL_STATEMENT
52594             ,p_module   => l_log_module);
52595       END IF;
52596    END IF;
52597 
52598 END LOOP;
52599 l_result := XLA_AE_LINES_PKG.InsertLines ;
52600 end loop;
52601 close line_cur;
52602 
52603 
52604 --
52605 -- insert headers into xla_ae_headers_gt table
52606 --
52607 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
52608 
52609 -- insert into errors table here.
52610 
52611 END LOOP;
52612 
52613 --
52614 -- 4865292
52615 --
52616 -- Compare g_hdr_extract_count with event count in
52617 -- CreateHeadersAndLines.
52618 --
52619 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
52620 
52621 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52622    trace (p_msg     => '# rows extracted from header extract objects '
52623                     || ' (running total): '
52624                     || g_hdr_extract_count
52625          ,p_level   => C_LEVEL_STATEMENT
52626          ,p_module  => l_log_module);
52627 END IF;
52628 
52629 CLOSE header_cur;
52630 --
52631 
52632 --
52633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52634    trace
52635       (p_msg      => 'END of EventClass_86'
52636       ,p_level    => C_LEVEL_PROCEDURE
52637       ,p_module   => l_log_module);
52638 END IF;
52639 --
52640 RETURN l_result;
52641 EXCEPTION
52642 WHEN xla_exceptions_pkg.application_exception THEN
52643    
52644 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
52645 
52646    
52647 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
52648 
52649    RAISE;
52650 WHEN OTHERS THEN
52651    xla_exceptions_pkg.raise_message
52652       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.EventClass_86');
52653 END EventClass_86;
52654 --
52655 
52656 ---------------------------------------
52657 --
52658 -- PRIVATE PROCEDURE
52659 --         insert_sources_87
52660 --
52661 ----------------------------------------
52662 --
52663 PROCEDURE insert_sources_87(
52664                                 p_target_ledger_id       IN NUMBER
52665                               , p_language               IN VARCHAR2
52666                               , p_sla_ledger_id          IN NUMBER
52667                               , p_pad_start_date         IN DATE
52668                               , p_pad_end_date           IN DATE
52669                          )
52670 IS
52671 
52672 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELEASE_ALL';
52673 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RELEASE';
52674 p_apps_owner                   VARCHAR2(30);
52675 l_log_module                   VARCHAR2(240);
52676 BEGIN
52677 IF g_log_enabled THEN
52678       l_log_module := C_DEFAULT_MODULE||'.insert_sources_87';
52679 END IF;
52680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52681 
52682       trace
52683          (p_msg      => 'BEGIN of insert_sources_87'
52684          ,p_level    => C_LEVEL_PROCEDURE
52685          ,p_module   => l_log_module);
52686 
52687 END IF;
52688 
52689 -- select APPS owner
52690 SELECT oracle_username
52691   INTO p_apps_owner
52692   FROM fnd_oracle_userid
52693  WHERE read_only_flag = 'U'
52694 ;
52695 
52696 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52697       trace
52698          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
52699                         ' - p_language = '||p_language||
52700                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
52701                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
52702                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
52703                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
52704          ,p_level    => C_LEVEL_STATEMENT
52705          ,p_module   => l_log_module);
52706 END IF;
52707 
52708 
52709 --
52710 INSERT INTO xla_diag_sources --hdr2
52711 (
52712         event_id
52713       , ledger_id
52714       , sla_ledger_id
52715       , description_language
52716       , object_name
52717       , object_type_code
52718       , line_number
52719       , source_application_id
52720       , source_type_code
52721       , source_code
52722       , source_value
52723       , source_meaning
52724       , created_by
52725       , creation_date
52726       , last_update_date
52727       , last_updated_by
52728       , last_update_login
52729       , program_update_date
52730       , program_application_id
52731       , program_id
52732       , request_id
52733 )
52734 SELECT
52735         event_id
52736       , p_target_ledger_id
52737       , p_sla_ledger_id
52738       , p_language
52739       , object_name
52740       , object_type_code
52741       , line_number
52742       , source_application_id
52743       , source_type_code
52744       , source_code
52745       , SUBSTR(source_value ,1,1996)
52746       , SUBSTR(source_meaning ,1,200)
52747       , xla_environment_pkg.g_Usr_Id
52748       , TRUNC(SYSDATE)
52749       , TRUNC(SYSDATE)
52750       , xla_environment_pkg.g_Usr_Id
52751       , xla_environment_pkg.g_Login_Id
52752       , TRUNC(SYSDATE)
52753       , xla_environment_pkg.g_Prog_Appl_Id
52754       , xla_environment_pkg.g_Prog_Id
52755       , xla_environment_pkg.g_Req_Id
52756   FROM (
52757        SELECT xet.event_id                  event_id
52758             , 0                          line_number
52759             , CASE r
52760                WHEN 1 THEN 'PO_EXTRACT_HEADER_V' 
52761                 WHEN 2 THEN 'PO_EXTRACT_HEADER_V' 
52762                 WHEN 3 THEN 'PO_RELEASES_REF_V' 
52763                 WHEN 4 THEN 'PO_EXTRACT_HEADER_V' 
52764                 WHEN 5 THEN 'PO_EXTRACT_HEADER_V' 
52765                 WHEN 6 THEN 'PO_EXTRACT_HEADER_V' 
52766                 
52767                ELSE null
52768               END                           object_name
52769             , CASE r
52770                 WHEN 1 THEN 'HEADER' 
52771                 WHEN 2 THEN 'HEADER' 
52772                 WHEN 3 THEN 'HEADER' 
52773                 WHEN 4 THEN 'HEADER' 
52774                 WHEN 5 THEN 'HEADER' 
52775                 WHEN 6 THEN 'HEADER' 
52776                 
52777                 ELSE null
52778               END                           object_type_code
52779             , CASE r
52780                 WHEN 1 THEN '201' 
52781                 WHEN 2 THEN '201' 
52782                 WHEN 3 THEN '201' 
52783                 WHEN 4 THEN '201' 
52784                 WHEN 5 THEN '201' 
52785                 WHEN 6 THEN '201' 
52786                 
52787                 ELSE null
52788               END                           source_application_id
52789             , 'S'             source_type_code
52790             , CASE r
52791                 WHEN 1 THEN 'PO_TYPE' 
52792                 WHEN 2 THEN 'PO_NUMBER' 
52793                 WHEN 3 THEN 'PO_RELEASE_NUMBER' 
52794                 WHEN 4 THEN 'PO_RELEASE_ID' 
52795                 WHEN 5 THEN 'GL_DATE' 
52796                 WHEN 6 THEN 'ENCUMBRANCE_TYPE_ID' 
52797                 
52798                 ELSE null
52799               END                           source_code
52800             , CASE r
52801                 WHEN 1 THEN TO_CHAR(h3.PO_TYPE)
52802                 WHEN 2 THEN TO_CHAR(h3.PO_NUMBER)
52803                 WHEN 3 THEN TO_CHAR(h4.PO_RELEASE_NUMBER)
52804                 WHEN 4 THEN TO_CHAR(h3.PO_RELEASE_ID)
52805                 WHEN 5 THEN TO_CHAR(h3.GL_DATE)
52806                 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_TYPE_ID)
52807                 
52808                 ELSE null
52809               END                           source_value
52810             , null              source_meaning
52811          FROM xla_events_gt     xet  
52812       , PO_EXTRACT_HEADER_V  h3
52813       , PO_RELEASES_REF_V  h4
52814              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
52815          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
52816            AND xet.event_class_code = C_EVENT_CLASS_CODE
52817               AND h3.event_id = xet.event_id
52818  AND h3.po_release_id = h4.po_release_id
52819 )
52820 ;
52821 --
52822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52823 
52824       trace
52825          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
52826          ,p_level    => C_LEVEL_STATEMENT
52827          ,p_module   => l_log_module);
52828 
52829 END IF;
52830 --
52831 
52832 
52833 
52834 --
52835 INSERT INTO xla_diag_sources  --line2
52836 (
52837         event_id
52838       , ledger_id
52839       , sla_ledger_id
52840       , description_language
52841       , object_name
52842       , object_type_code
52843       , line_number
52844       , source_application_id
52845       , source_type_code
52846       , source_code
52847       , source_value
52848       , source_meaning
52849       , created_by
52850       , creation_date
52851       , last_update_date
52852       , last_updated_by
52853       , last_update_login
52854       , program_update_date
52855       , program_application_id
52856       , program_id
52857       , request_id
52858 )
52859 SELECT  event_id
52860       , p_target_ledger_id
52861       , p_sla_ledger_id
52862       , p_language
52863       , object_name
52864       , object_type_code
52865       , line_number
52866       , source_application_id
52867       , source_type_code
52868       , source_code
52869       , SUBSTR(source_value,1,1996)
52870       , SUBSTR(source_meaning ,1,200)
52871       , xla_environment_pkg.g_Usr_Id
52872       , TRUNC(SYSDATE)
52873       , TRUNC(SYSDATE)
52874       , xla_environment_pkg.g_Usr_Id
52875       , xla_environment_pkg.g_Login_Id
52876       , TRUNC(SYSDATE)
52877       , xla_environment_pkg.g_Prog_Appl_Id
52878       , xla_environment_pkg.g_Prog_Id
52879       , xla_environment_pkg.g_Req_Id
52880   FROM (
52881        SELECT xet.event_id                  event_id
52882             , l2.line_number                 line_number
52883             , CASE r
52884                WHEN 1 THEN 'PO_EXTRACT_DETAIL_V' 
52885                 WHEN 2 THEN 'PO_EXTRACT_DETAIL_V' 
52886                 WHEN 3 THEN 'PO_EXTRACT_DETAIL_V' 
52887                 WHEN 4 THEN 'PO_EXTRACT_DETAIL_V' 
52888                 WHEN 5 THEN 'PO_EXTRACT_DETAIL_V' 
52889                 WHEN 6 THEN 'PO_EXTRACT_DETAIL_V' 
52890                 WHEN 7 THEN 'PO_EXTRACT_DETAIL_V' 
52891                 WHEN 8 THEN 'PO_EXTRACT_DETAIL_V' 
52892                 WHEN 9 THEN 'PO_EXTRACT_DETAIL_V' 
52893                 WHEN 10 THEN 'PO_EXTRACT_DETAIL_V' 
52894                 WHEN 11 THEN 'PO_EXTRACT_DETAIL_V' 
52895                 WHEN 12 THEN 'PO_EXTRACT_DETAIL_V' 
52896                 WHEN 13 THEN 'PO_EXTRACT_DETAIL_V' 
52897                 WHEN 14 THEN 'PO_EXTRACT_DETAIL_V' 
52898                 WHEN 15 THEN 'PO_EXTRACT_DETAIL_V' 
52899                 WHEN 16 THEN 'PO_EXTRACT_DETAIL_V' 
52900                 WHEN 17 THEN 'PO_EXTRACT_DETAIL_V' 
52901                 WHEN 18 THEN 'PO_EXTRACT_DETAIL_V' 
52902                 WHEN 19 THEN 'PO_EXTRACT_DETAIL_V' 
52903                 WHEN 20 THEN 'PO_DISTS_REF_V' 
52904                 WHEN 21 THEN 'PO_DISTS_REF_V' 
52905                 WHEN 22 THEN 'PO_DISTS_REF_V' 
52906                 WHEN 23 THEN 'PO_EXTRACT_DETAIL_V' 
52907                 
52908                ELSE null
52909               END                           object_name
52910             , CASE r
52911                 WHEN 1 THEN 'LINE' 
52912                 WHEN 2 THEN 'LINE' 
52913                 WHEN 3 THEN 'LINE' 
52914                 WHEN 4 THEN 'LINE' 
52915                 WHEN 5 THEN 'LINE' 
52916                 WHEN 6 THEN 'LINE' 
52917                 WHEN 7 THEN 'LINE' 
52918                 WHEN 8 THEN 'LINE' 
52919                 WHEN 9 THEN 'LINE' 
52920                 WHEN 10 THEN 'LINE' 
52921                 WHEN 11 THEN 'LINE' 
52922                 WHEN 12 THEN 'LINE' 
52923                 WHEN 13 THEN 'LINE' 
52924                 WHEN 14 THEN 'LINE' 
52925                 WHEN 15 THEN 'LINE' 
52926                 WHEN 16 THEN 'LINE' 
52927                 WHEN 17 THEN 'LINE' 
52928                 WHEN 18 THEN 'LINE' 
52929                 WHEN 19 THEN 'LINE' 
52930                 WHEN 20 THEN 'LINE' 
52931                 WHEN 21 THEN 'LINE' 
52932                 WHEN 22 THEN 'LINE' 
52933                 WHEN 23 THEN 'LINE' 
52934                 
52935                 ELSE null
52936               END                           object_type_code
52937             , CASE r
52938                 WHEN 1 THEN '201' 
52939                 WHEN 2 THEN '201' 
52940                 WHEN 3 THEN '201' 
52941                 WHEN 4 THEN '201' 
52942                 WHEN 5 THEN '201' 
52943                 WHEN 6 THEN '201' 
52944                 WHEN 7 THEN '201' 
52945                 WHEN 8 THEN '201' 
52946                 WHEN 9 THEN '201' 
52947                 WHEN 10 THEN '201' 
52948                 WHEN 11 THEN '201' 
52949                 WHEN 12 THEN '201' 
52950                 WHEN 13 THEN '201' 
52951                 WHEN 14 THEN '201' 
52952                 WHEN 15 THEN '201' 
52953                 WHEN 16 THEN '201' 
52954                 WHEN 17 THEN '201' 
52955                 WHEN 18 THEN '201' 
52956                 WHEN 19 THEN '201' 
52957                 WHEN 20 THEN '201' 
52958                 WHEN 21 THEN '201' 
52959                 WHEN 22 THEN '201' 
52960                 WHEN 23 THEN '201' 
52961                 
52962                 ELSE null
52963               END                           source_application_id
52964             , 'S'             source_type_code
52965             , CASE r
52966                 WHEN 1 THEN 'JE_LINE_DESCRIPTION' 
52967                 WHEN 2 THEN 'BUDGET_ACCOUNT' 
52968                 WHEN 3 THEN 'MAIN_OR_BACKING_CODE' 
52969                 WHEN 4 THEN 'ACCOUNTING_REVERSAL_FLAG' 
52970                 WHEN 5 THEN 'PO_DISTRIBUTION_ID' 
52971                 WHEN 6 THEN 'ENTERED_AMT' 
52972                 WHEN 7 THEN 'CURRENCY_CODE' 
52973                 WHEN 8 THEN 'ACCOUNTED_AMT' 
52974                 WHEN 9 THEN 'ALLOC_TO_DISTRIBUTION_TYPE' 
52975                 WHEN 10 THEN 'ALLOC_TO_DIST_ID_1' 
52976                 WHEN 11 THEN 'APPLIED_TO_APPL_ID' 
52977                 WHEN 12 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
52978                 WHEN 13 THEN 'APPLIED_TO_ENTITY_CODE' 
52979                 WHEN 14 THEN 'APPLIED_TO_DIST_ID_1' 
52980                 WHEN 15 THEN 'APPLIED_TO_HEADER_ID_1' 
52981                 WHEN 16 THEN 'DISTRIBUTION_LINK_TYPE' 
52982                 WHEN 17 THEN 'PO_ENCUM_UPG_OPTION' 
52983                 WHEN 18 THEN 'JFMIP_REFERENCE' 
52984                 WHEN 19 THEN 'PO_UPG_ENC_TYPE_ID' 
52985                 WHEN 20 THEN 'CURRENCY_CONVERSION_DATE' 
52986                 WHEN 21 THEN 'CURRENCY_CONVERSION_RATE' 
52987                 WHEN 22 THEN 'CURRENCY_CONVERSION_TYPE' 
52988                 WHEN 23 THEN 'ADJUSTMENT_STATUS' 
52989                 
52990                 ELSE null
52991               END                           source_code
52992             , CASE r
52993                 WHEN 1 THEN TO_CHAR(l2.JE_LINE_DESCRIPTION)
52994                 WHEN 2 THEN TO_CHAR(l2.BUDGET_ACCOUNT)
52995                 WHEN 3 THEN TO_CHAR(l2.MAIN_OR_BACKING_CODE)
52996                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTING_REVERSAL_FLAG)
52997                 WHEN 5 THEN TO_CHAR(l2.PO_DISTRIBUTION_ID)
52998                 WHEN 6 THEN TO_CHAR(l2.ENTERED_AMT)
52999                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CODE)
53000                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMT)
53001                 WHEN 9 THEN TO_CHAR(l2.ALLOC_TO_DISTRIBUTION_TYPE)
53002                 WHEN 10 THEN TO_CHAR(l2.ALLOC_TO_DIST_ID_1)
53003                 WHEN 11 THEN TO_CHAR(l2.APPLIED_TO_APPL_ID)
53004                 WHEN 12 THEN TO_CHAR(l2.APPLIED_TO_DIST_LINK_TYPE)
53005                 WHEN 13 THEN TO_CHAR(l2.APPLIED_TO_ENTITY_CODE)
53006                 WHEN 14 THEN TO_CHAR(l2.APPLIED_TO_DIST_ID_1)
53007                 WHEN 15 THEN TO_CHAR(l2.APPLIED_TO_HEADER_ID_1)
53008                 WHEN 16 THEN TO_CHAR(l2.DISTRIBUTION_LINK_TYPE)
53009                 WHEN 17 THEN TO_CHAR(l2.PO_ENCUM_UPG_OPTION)
53010                 WHEN 18 THEN TO_CHAR(l2.JFMIP_REFERENCE)
53011                 WHEN 19 THEN TO_CHAR(l2.PO_UPG_ENC_TYPE_ID)
53012                 WHEN 20 THEN TO_CHAR(l1.CURRENCY_CONVERSION_DATE)
53013                 WHEN 21 THEN TO_CHAR(l1.CURRENCY_CONVERSION_RATE)
53014                 WHEN 22 THEN TO_CHAR(l1.CURRENCY_CONVERSION_TYPE)
53015                 WHEN 23 THEN TO_CHAR(l2.ADJUSTMENT_STATUS)
53016                 
53017                 ELSE null
53018               END                           source_value
53019             , null              source_meaning
53020          FROM  xla_events_gt     xet  
53021         , PO_DISTS_REF_V  l1
53022         , PO_EXTRACT_DETAIL_V  l2
53023             , (select rownum r from all_objects where rownum <= 23 and owner = p_apps_owner)
53024         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
53025           AND xet.event_class_code = C_EVENT_CLASS_CODE
53026             AND l2.event_id          = xet.event_id
53027  AND l2.po_distribution_id = l1.po_distribution_id  (+)  and l2.po_distribution_type = l1.po_distribution_type (+) 
53028 )
53029 ;
53030 --
53031 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53032 
53033       trace
53034          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
53035          ,p_level    => C_LEVEL_STATEMENT
53036          ,p_module   => l_log_module);
53037 
53038 END IF;
53039 
53040 
53041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53042       trace
53043          (p_msg      => 'END of insert_sources_87'
53044          ,p_level    => C_LEVEL_PROCEDURE
53045          ,p_module   => l_log_module);
53046 END IF;
53047 EXCEPTION
53048   WHEN xla_exceptions_pkg.application_exception THEN
53049       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
53050             trace
53051                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
53052                ,p_level    => C_LEVEL_EXCEPTION
53053                ,p_module   => l_log_module);
53054       END IF;
53055       RAISE;
53056   WHEN OTHERS THEN
53057       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
53058             trace
53059                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
53060                ,p_level    => C_LEVEL_EXCEPTION
53061                ,p_module   => l_log_module);
53062        END IF;
53063        xla_exceptions_pkg.raise_message
53064            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.insert_sources_87');
53065 END insert_sources_87;
53066 --
53067 
53068 ---------------------------------------
53069 --
53070 -- PRIVATE FUNCTION
53071 --         EventClass_87
53072 --
53073 ----------------------------------------
53074 --
53075 FUNCTION EventClass_87
53076        (p_application_id         IN NUMBER
53077        ,p_base_ledger_id         IN NUMBER
53078        ,p_target_ledger_id       IN NUMBER
53079        ,p_language               IN VARCHAR2
53080        ,p_currency_code          IN VARCHAR2
53081        ,p_sla_ledger_id          IN NUMBER
53082        ,p_pad_start_date         IN DATE
53083        ,p_pad_end_date           IN DATE
53084        ,p_primary_ledger_id      IN NUMBER)
53085 RETURN BOOLEAN IS
53086 --
53087 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELEASE_ALL';
53088 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RELEASE';
53089 
53090 l_calculate_acctd_flag   VARCHAR2(1) :='N';
53091 l_calculate_g_l_flag     VARCHAR2(1) :='N';
53092 --
53093 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53094 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53095 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
53096 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
53097 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53098 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
53099 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
53100 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53101 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
53102 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
53103 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53104 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53105 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53106 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
53107 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
53108 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
53109 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
53110 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
53111 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
53112 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
53113 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
53114 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
53115 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
53116 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
53117 
53118 l_event_id                             NUMBER;
53119 l_previous_event_id                    NUMBER;
53120 l_first_event_id                       NUMBER;
53121 l_last_event_id                        NUMBER;
53122 
53123 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
53124 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
53125 --
53126 --
53127 l_result                    BOOLEAN := TRUE;
53128 l_rows                      NUMBER  := 1000;
53129 l_event_type_name           VARCHAR2(80) := 'All';
53130 l_event_class_name          VARCHAR2(80) := 'Release';
53131 l_description               VARCHAR2(4000);
53132 l_transaction_reversal      NUMBER;
53133 l_ae_header_id              NUMBER;
53134 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
53135 l_log_module                VARCHAR2(240);
53136 --
53137 l_acct_reversal_source      VARCHAR2(30);
53138 l_trx_reversal_source       VARCHAR2(30);
53139 
53140 l_continue_with_lines       BOOLEAN := TRUE;
53141 --
53142 l_acc_rev_gl_date_source    DATE;                      -- 4262811
53143 --
53144 type t_array_event_id is table of number index by binary_integer;
53145 
53146 l_rec_array_event                    t_rec_array_event;
53147 l_null_rec_array_event               t_rec_array_event;
53148 l_array_ae_header_id                 xla_number_array_type;
53149 l_actual_flag                        VARCHAR2(1) := NULL;
53150 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
53151 l_balance_type_code                  VARCHAR2(1) :=NULL;
53152 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
53153 
53154 --
53155 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
53156 --
53157 
53158 TYPE t_array_source_1 IS TABLE OF PO_EXTRACT_HEADER_V.PO_TYPE%TYPE INDEX BY BINARY_INTEGER;
53159 TYPE t_array_source_2 IS TABLE OF PO_EXTRACT_HEADER_V.PO_NUMBER%TYPE INDEX BY BINARY_INTEGER;
53160 TYPE t_array_source_8 IS TABLE OF PO_RELEASES_REF_V.PO_RELEASE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
53161 TYPE t_array_source_66 IS TABLE OF PO_EXTRACT_HEADER_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
53162 TYPE t_array_source_79 IS TABLE OF PO_EXTRACT_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
53163 TYPE t_array_source_80 IS TABLE OF PO_EXTRACT_HEADER_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
53164 
53165 TYPE t_array_source_7 IS TABLE OF PO_EXTRACT_DETAIL_V.JE_LINE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
53166 TYPE t_array_source_11 IS TABLE OF PO_EXTRACT_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
53167 TYPE t_array_source_13 IS TABLE OF PO_EXTRACT_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
53168 TYPE t_array_source_16 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
53169 TYPE t_array_source_29 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
53170 TYPE t_array_source_33 IS TABLE OF PO_EXTRACT_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
53171 TYPE t_array_source_34 IS TABLE OF PO_EXTRACT_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
53172 TYPE t_array_source_35 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
53173 TYPE t_array_source_49 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
53174 TYPE t_array_source_51 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
53175 TYPE t_array_source_53 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
53176 TYPE t_array_source_54 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
53177 TYPE t_array_source_55 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
53178 TYPE t_array_source_56 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
53179 TYPE t_array_source_57 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_HEADER_ID_1%TYPE INDEX BY BINARY_INTEGER;
53180 TYPE t_array_source_58 IS TABLE OF PO_EXTRACT_DETAIL_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
53181 TYPE t_array_source_59 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
53182 TYPE t_array_source_60 IS TABLE OF PO_EXTRACT_DETAIL_V.JFMIP_REFERENCE%TYPE INDEX BY BINARY_INTEGER;
53183 TYPE t_array_source_61 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
53184 TYPE t_array_source_62 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
53185 TYPE t_array_source_63 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
53186 TYPE t_array_source_64 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
53187 TYPE t_array_source_75 IS TABLE OF PO_EXTRACT_DETAIL_V.ADJUSTMENT_STATUS%TYPE INDEX BY BINARY_INTEGER;
53188 
53189 l_array_source_1              t_array_source_1;
53190 l_array_source_2              t_array_source_2;
53191 l_array_source_8              t_array_source_8;
53192 l_array_source_66              t_array_source_66;
53193 l_array_source_79              t_array_source_79;
53194 l_array_source_80              t_array_source_80;
53195 
53196 l_array_source_7      t_array_source_7;
53197 l_array_source_11      t_array_source_11;
53198 l_array_source_13      t_array_source_13;
53199 l_array_source_16      t_array_source_16;
53200 l_array_source_29      t_array_source_29;
53201 l_array_source_33      t_array_source_33;
53202 l_array_source_34      t_array_source_34;
53203 l_array_source_35      t_array_source_35;
53204 l_array_source_49      t_array_source_49;
53205 l_array_source_51      t_array_source_51;
53206 l_array_source_53      t_array_source_53;
53207 l_array_source_54      t_array_source_54;
53208 l_array_source_55      t_array_source_55;
53209 l_array_source_56      t_array_source_56;
53210 l_array_source_57      t_array_source_57;
53211 l_array_source_58      t_array_source_58;
53212 l_array_source_59      t_array_source_59;
53213 l_array_source_60      t_array_source_60;
53214 l_array_source_61      t_array_source_61;
53215 l_array_source_62      t_array_source_62;
53216 l_array_source_63      t_array_source_63;
53217 l_array_source_64      t_array_source_64;
53218 l_array_source_75      t_array_source_75;
53219 
53220 --
53221 CURSOR header_cur
53222 IS
53223 SELECT /*+ leading(xet) cardinality(xet,1) */
53224 -- Event Class Code: RELEASE
53225     xet.entity_id
53226    ,xet.legal_entity_id
53227    ,xet.entity_code
53228    ,xet.transaction_number
53229    ,xet.event_id
53230    ,xet.event_class_code
53231    ,xet.event_type_code
53232    ,xet.event_number
53233    ,xet.event_date
53234    ,xet.transaction_date
53235    ,xet.reference_num_1
53236    ,xet.reference_num_2
53237    ,xet.reference_num_3
53238    ,xet.reference_num_4
53239    ,xet.reference_char_1
53240    ,xet.reference_char_2
53241    ,xet.reference_char_3
53242    ,xet.reference_char_4
53243    ,xet.reference_date_1
53244    ,xet.reference_date_2
53245    ,xet.reference_date_3
53246    ,xet.reference_date_4
53247    ,xet.event_created_by
53248    ,xet.budgetary_control_flag 
53249   , h3.PO_TYPE    source_1
53250   , h3.PO_NUMBER    source_2
53251   , h4.PO_RELEASE_NUMBER    source_8
53252   , h3.PO_RELEASE_ID    source_66
53253   , h3.GL_DATE    source_79
53254   , h3.ENCUMBRANCE_TYPE_ID    source_80
53255   FROM xla_events_gt     xet 
53256   , PO_EXTRACT_HEADER_V  h3
53257   , PO_RELEASES_REF_V  h4
53258  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
53259    and xet.event_class_code = C_EVENT_CLASS_CODE
53260    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
53261  AND h3.po_release_id = h4.po_release_id
53262  ORDER BY event_id
53263 ;
53264 
53265 
53266 --
53267 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
53268 IS
53269 SELECT  /*+ leading(xet) cardinality(xet,1) */
53270 -- Event Class Code: RELEASE
53271     xet.entity_id
53272    ,xet.legal_entity_id
53273    ,xet.entity_code
53274    ,xet.transaction_number
53275    ,xet.event_id
53276    ,xet.event_class_code
53277    ,xet.event_type_code
53278    ,xet.event_number
53279    ,xet.event_date
53280    ,xet.transaction_date
53281    ,xet.reference_num_1
53282    ,xet.reference_num_2
53283    ,xet.reference_num_3
53284    ,xet.reference_num_4
53285    ,xet.reference_char_1
53286    ,xet.reference_char_2
53287    ,xet.reference_char_3
53288    ,xet.reference_char_4
53289    ,xet.reference_date_1
53290    ,xet.reference_date_2
53291    ,xet.reference_date_3
53292    ,xet.reference_date_4
53293    ,xet.event_created_by
53294    ,xet.budgetary_control_flag
53295  , l2.LINE_NUMBER  
53296   , l2.JE_LINE_DESCRIPTION    source_7
53297   , l2.BUDGET_ACCOUNT    source_11
53298   , l2.MAIN_OR_BACKING_CODE    source_13
53299   , l2.ACCOUNTING_REVERSAL_FLAG    source_16
53300   , l2.PO_DISTRIBUTION_ID    source_29
53301   , l2.ENTERED_AMT    source_33
53302   , l2.CURRENCY_CODE    source_34
53303   , l2.ACCOUNTED_AMT    source_35
53304   , l2.ALLOC_TO_DISTRIBUTION_TYPE    source_49
53305   , l2.ALLOC_TO_DIST_ID_1    source_51
53306   , l2.APPLIED_TO_APPL_ID    source_53
53307   , l2.APPLIED_TO_DIST_LINK_TYPE    source_54
53308   , l2.APPLIED_TO_ENTITY_CODE    source_55
53309   , l2.APPLIED_TO_DIST_ID_1    source_56
53310   , l2.APPLIED_TO_HEADER_ID_1    source_57
53311   , l2.DISTRIBUTION_LINK_TYPE    source_58
53312   , l2.PO_ENCUM_UPG_OPTION    source_59
53313   , l2.JFMIP_REFERENCE    source_60
53314   , l2.PO_UPG_ENC_TYPE_ID    source_61
53315   , l1.CURRENCY_CONVERSION_DATE    source_62
53316   , l1.CURRENCY_CONVERSION_RATE    source_63
53317   , l1.CURRENCY_CONVERSION_TYPE    source_64
53318   , l2.ADJUSTMENT_STATUS    source_75
53319   FROM xla_events_gt     xet 
53320   , PO_DISTS_REF_V  l1
53321   , PO_EXTRACT_DETAIL_V  l2
53322  WHERE xet.event_id between x_first_event_id and x_last_event_id
53323    and xet.event_date between p_pad_start_date and p_pad_end_date
53324    and xet.event_class_code = C_EVENT_CLASS_CODE
53325    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
53326  AND l2.po_distribution_id = l1.po_distribution_id  (+)  AND l2.po_distribution_type = l1.po_distribution_type (+) ;
53327 
53328 --
53329 BEGIN
53330 IF g_log_enabled THEN
53331    l_log_module := C_DEFAULT_MODULE||'.EventClass_87';
53332 END IF;
53333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53334    trace
53335       (p_msg      => 'BEGIN of EventClass_87'
53336       ,p_level    => C_LEVEL_PROCEDURE
53337       ,p_module   => l_log_module);
53338 END IF;
53339 
53340 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53341    trace
53342       (p_msg      => 'p_application_id = '||p_application_id||
53343                      ' - p_base_ledger_id = '||p_base_ledger_id||
53344                      ' - p_target_ledger_id  = '||p_target_ledger_id||
53345                      ' - p_language = '||p_language||
53346                      ' - p_currency_code = '||p_currency_code||
53347                      ' - p_sla_ledger_id = '||p_sla_ledger_id
53348       ,p_level    => C_LEVEL_STATEMENT
53349       ,p_module   => l_log_module);
53350 END IF;
53351 --
53352 -- initialze arrays
53353 --
53354 g_array_event.DELETE;
53355 l_rec_array_event := l_null_rec_array_event;
53356 --
53357 --------------------------------------
53358 -- 4262811 Initialze MPA Line Number
53359 --------------------------------------
53360 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
53361 
53362 --
53363 
53364 --
53365 OPEN header_cur;
53366 --
53367 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53368    trace
53369    (p_msg      => 'SQL - FETCH header_cur'
53370    ,p_level    => C_LEVEL_STATEMENT
53371    ,p_module   => l_log_module);
53372 END IF;
53373 --
53374 LOOP
53375 FETCH header_cur BULK COLLECT INTO
53376         l_array_entity_id
53377       , l_array_legal_entity_id
53378       , l_array_entity_code
53379       , l_array_transaction_num
53380       , l_array_event_id
53381       , l_array_class_code
53382       , l_array_event_type
53383       , l_array_event_number
53384       , l_array_event_date
53385       , l_array_transaction_date
53386       , l_array_reference_num_1
53387       , l_array_reference_num_2
53388       , l_array_reference_num_3
53389       , l_array_reference_num_4
53390       , l_array_reference_char_1
53391       , l_array_reference_char_2
53392       , l_array_reference_char_3
53393       , l_array_reference_char_4
53394       , l_array_reference_date_1
53395       , l_array_reference_date_2
53396       , l_array_reference_date_3
53397       , l_array_reference_date_4
53398       , l_array_event_created_by
53399       , l_array_budgetary_control_flag 
53400       , l_array_source_1
53401       , l_array_source_2
53402       , l_array_source_8
53403       , l_array_source_66
53404       , l_array_source_79
53405       , l_array_source_80
53406       LIMIT l_rows;
53407 --
53408 IF (C_LEVEL_EVENT >= g_log_level) THEN
53409    trace
53410    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
53411    ,p_level    => C_LEVEL_EVENT
53412    ,p_module   => l_log_module);
53413 END IF;
53414 --
53415 EXIT WHEN l_array_entity_id.COUNT = 0;
53416 
53417 -- initialize arrays
53418 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
53419 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
53420 
53421 --
53422 -- Bug 4458708
53423 --
53424 XLA_AE_LINES_PKG.g_LineNumber := 0;
53425 
53426 
53427 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
53428 g_last_hdr_idx := l_array_event_id.LAST;
53429 --
53430 -- loop for the headers. Each iteration is for each header extract row
53431 -- fetched in header cursor
53432 --
53433 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
53434 
53435 --
53436 -- set event info as cache for other routines to refer event attributes
53437 --
53438 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
53439    (p_application_id           => p_application_id
53440    ,p_primary_ledger_id        => p_primary_ledger_id
53441    ,p_base_ledger_id           => p_base_ledger_id
53442    ,p_target_ledger_id         => p_target_ledger_id
53443    ,p_entity_id                => l_array_entity_id(hdr_idx)
53444    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
53445    ,p_entity_code              => l_array_entity_code(hdr_idx)
53446    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
53447    ,p_event_id                 => l_array_event_id(hdr_idx)
53448    ,p_event_class_code         => l_array_class_code(hdr_idx)
53449    ,p_event_type_code          => l_array_event_type(hdr_idx)
53450    ,p_event_number             => l_array_event_number(hdr_idx)
53451    ,p_event_date               => l_array_event_date(hdr_idx)
53452    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
53453    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
53454    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
53455    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
53456    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
53457    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
53458    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
53459    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
53460    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
53461    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
53462    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
53463    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
53464    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
53465    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
53466    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
53467 
53468 --
53469 -- set the status of entry to C_VALID (0)
53470 --
53471 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
53472 
53473 --
53474 -- initialize a row for ae header
53475 --
53476 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
53477 
53478 l_event_id := l_array_event_id(hdr_idx);
53479 
53480 --
53481 -- storing the hdr_idx for event. May be used by line cursor.
53482 --
53483 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
53484 
53485 --
53486 -- store sources from header extract. This can be improved to
53487 -- store only those sources from header extract that may be used in lines
53488 --
53489 
53490 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
53491 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
53492 g_array_event(l_event_id).array_value_num('source_8') := l_array_source_8(hdr_idx);
53493 g_array_event(l_event_id).array_value_num('source_66') := l_array_source_66(hdr_idx);
53494 g_array_event(l_event_id).array_value_date('source_79') := l_array_source_79(hdr_idx);
53495 g_array_event(l_event_id).array_value_num('source_80') := l_array_source_80(hdr_idx);
53496 
53497 --
53498 -- initilaize the status of ae headers for diffrent balance types
53499 -- the status is initialised to C_NOT_CREATED (2)
53500 --
53501 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
53502 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
53503 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
53504 
53505 --
53506 -- call api to validate and store accounting attributes for header
53507 --
53508 
53509 ------------------------------------------------------------
53510 -- Accrual Reversal : to get date for Standard Source (NONE)
53511 ------------------------------------------------------------
53512 l_acc_rev_gl_date_source := NULL;
53513 
53514      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
53515       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_80');
53516      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
53517       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_79');
53518 
53519 
53520 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
53521 
53522 XLA_AE_HEADER_PKG.SetJeCategoryName;
53523 
53524 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
53525 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
53526 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
53527 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
53528 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
53529 
53530 
53531 --
53532 xla_ae_header_pkg.SetHdrDescription(
53533    p_description => Description_4 (
53534    p_application_id => p_application_id 
53535  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
53536  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
53537  , p_source_8 => g_array_event(l_event_id).array_value_num('source_8')
53538    )
53539 );
53540 --
53541 
53542 -- No header level analytical criteria
53543 
53544 --
53545 --accounting attribute enhancement, bug 3612931
53546 --
53547 l_trx_reversal_source := SUBSTR(NULL, 1,30);
53548 
53549 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
53550    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
53551 
53552    xla_accounting_err_pkg.build_message
53553       (p_appli_s_name            => 'XLA'
53554       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
53555       ,p_token_1                 => 'ACCT_ATTR_NAME'
53556       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
53557       ,p_token_2                 => 'PRODUCT_NAME'
53558       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
53559       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
53560       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
53561       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
53562 
53563 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
53564    --
53565    -- following sets the accounting attributes needed to reverse
53566    -- accounting for a distributeion
53567    --
53568    xla_ae_lines_pkg.SetTrxReversalAttrs
53569       (p_event_id              => l_event_id
53570       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
53571       ,p_trx_reversal_source   => l_trx_reversal_source);
53572 
53573 END IF;
53574 
53575 
53576 ----------------------------------------------------------------
53577 -- 4262811 -  update the header statuses to invalid in need be
53578 ----------------------------------------------------------------
53579 --
53580 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
53581 
53582 
53583   -----------------------------------------------
53584   -- No accrual reversal for the event class/type
53585   -----------------------------------------------
53586 ----------------------------------------------------------------
53587 
53588 --
53589 -- this ends the header loop iteration for one bulk fetch
53590 --
53591 END LOOP;
53592 
53593 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
53594 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
53595 
53596 --
53597 -- insert dummy rows into lines gt table that were created due to
53598 -- transaction reversals
53599 --
53600 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
53601    l_result := XLA_AE_LINES_PKG.InsertLines;
53602 END IF;
53603 
53604 --
53605 -- reset the temp_line_num for each set of events fetched from header
53606 -- cursor rather than doing it for each new event in line cursor
53607 -- Bug 3939231
53608 --
53609 xla_ae_lines_pkg.g_temp_line_num := 0;
53610 
53611 
53612 
53613 --
53614 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
53615 --
53616 --
53617 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53618 
53619       trace
53620          (p_msg      => 'SQL - FETCH line_cur'
53621          ,p_level    => C_LEVEL_STATEMENT
53622          ,p_module   => l_log_module);
53623 
53624 END IF;
53625 --
53626 --
53627 LOOP
53628   --
53629   FETCH line_cur BULK COLLECT INTO
53630         l_array_entity_id
53631       , l_array_legal_entity_id
53632       , l_array_entity_code
53633       , l_array_transaction_num
53634       , l_array_event_id
53635       , l_array_class_code
53636       , l_array_event_type
53637       , l_array_event_number
53638       , l_array_event_date
53639       , l_array_transaction_date
53640       , l_array_reference_num_1
53641       , l_array_reference_num_2
53642       , l_array_reference_num_3
53643       , l_array_reference_num_4
53644       , l_array_reference_char_1
53645       , l_array_reference_char_2
53646       , l_array_reference_char_3
53647       , l_array_reference_char_4
53648       , l_array_reference_date_1
53649       , l_array_reference_date_2
53650       , l_array_reference_date_3
53651       , l_array_reference_date_4
53652       , l_array_event_created_by
53653       , l_array_budgetary_control_flag
53654       , l_array_extract_line_num 
53655       , l_array_source_7
53656       , l_array_source_11
53657       , l_array_source_13
53658       , l_array_source_16
53659       , l_array_source_29
53660       , l_array_source_33
53661       , l_array_source_34
53662       , l_array_source_35
53663       , l_array_source_49
53664       , l_array_source_51
53665       , l_array_source_53
53666       , l_array_source_54
53667       , l_array_source_55
53668       , l_array_source_56
53669       , l_array_source_57
53670       , l_array_source_58
53671       , l_array_source_59
53672       , l_array_source_60
53673       , l_array_source_61
53674       , l_array_source_62
53675       , l_array_source_63
53676       , l_array_source_64
53677       , l_array_source_75
53678       LIMIT l_rows;
53679 
53680   --
53681   IF (C_LEVEL_EVENT >= g_log_level) THEN
53682             trace
53683                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
53684                ,p_level    => C_LEVEL_EVENT
53685                ,p_module   => l_log_module);
53686   END IF;
53687   --
53688   EXIT WHEN l_array_entity_id.count = 0;
53689 
53690   XLA_AE_LINES_PKG.g_rec_lines := null;
53691 
53692 --
53693 -- Bug 4458708
53694 --
53695 XLA_AE_LINES_PKG.g_LineNumber := 0;
53696 --
53697 --
53698 
53699 FOR Idx IN 1..l_array_event_id.count LOOP
53700    --
53701    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
53702    --
53703    l_event_id := l_array_event_id(idx);  -- 5648433
53704 
53705    --
53706    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
53707    --
53708 
53709    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
53710              (g_array_event(l_event_id).array_value_num('header_index'))
53711          ,'N'
53712          ) <> 'Y'
53713    THEN
53714       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53715          trace
53716             (p_msg      => 'Trancaction revesal option is not Y '
53717             ,p_level    => C_LEVEL_STATEMENT
53718             ,p_module   => l_log_module);
53719       END IF;
53720 
53721 --
53722 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
53723 --
53724 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
53725 --
53726 -- set event info as cache for other routines to refer event attributes
53727 --
53728 
53729 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
53730    l_previous_event_id := l_event_id;
53731 
53732    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
53733       (p_application_id           => p_application_id
53734       ,p_primary_ledger_id        => p_primary_ledger_id
53735       ,p_base_ledger_id           => p_base_ledger_id
53736       ,p_target_ledger_id         => p_target_ledger_id
53737       ,p_entity_id                => l_array_entity_id(Idx)
53738       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
53739       ,p_entity_code              => l_array_entity_code(Idx)
53740       ,p_transaction_num          => l_array_transaction_num(Idx)
53741       ,p_event_id                 => l_array_event_id(Idx)
53742       ,p_event_class_code         => l_array_class_code(Idx)
53743       ,p_event_type_code          => l_array_event_type(Idx)
53744       ,p_event_number             => l_array_event_number(Idx)
53745       ,p_event_date               => l_array_event_date(Idx)
53746       ,p_transaction_date         => l_array_transaction_date(Idx)
53747       ,p_reference_num_1          => l_array_reference_num_1(Idx)
53748       ,p_reference_num_2          => l_array_reference_num_2(Idx)
53749       ,p_reference_num_3          => l_array_reference_num_3(Idx)
53750       ,p_reference_num_4          => l_array_reference_num_4(Idx)
53751       ,p_reference_char_1         => l_array_reference_char_1(Idx)
53752       ,p_reference_char_2         => l_array_reference_char_2(Idx)
53753       ,p_reference_char_3         => l_array_reference_char_3(Idx)
53754       ,p_reference_char_4         => l_array_reference_char_4(Idx)
53755       ,p_reference_date_1         => l_array_reference_date_1(Idx)
53756       ,p_reference_date_2         => l_array_reference_date_2(Idx)
53757       ,p_reference_date_3         => l_array_reference_date_3(Idx)
53758       ,p_reference_date_4         => l_array_reference_date_4(Idx)
53759       ,p_event_created_by         => l_array_event_created_by(Idx)
53760       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
53761        --
53762 END IF;
53763 
53764 
53765 
53766 --
53767 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
53768 
53769 l_acct_reversal_source := SUBSTR(l_array_source_16(Idx), 1,30);
53770 
53771 IF l_continue_with_lines THEN
53772    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
53773       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
53774 
53775       xla_accounting_err_pkg.build_message
53776          (p_appli_s_name            => 'XLA'
53777          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
53778          ,p_token_1                 => 'LINE_NUMBER'
53779          ,p_value_1                 => l_array_extract_line_num(Idx)
53780          ,p_token_2                 => 'PRODUCT_NAME'
53781          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
53782          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
53783          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
53784          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
53785 
53786    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
53787       --
53788       -- following sets the accounting attributes needed to reverse
53789       -- accounting for a distributeion
53790       --
53791 
53792       --
53793       -- 5217187
53794       --
53795       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
53796       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
53797                                        g_array_event(l_event_id).array_value_num('header_index'));
53798       --
53799       --
53800 
53801       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
53802       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_16(Idx);
53803       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
53804       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_29(Idx);
53805       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
53806       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_58(Idx);
53807       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
53808       l_rec_rev_acct_attrs.array_num_value(5)  := TO_NUMBER(l_array_source_11(Idx));
53809       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
53810       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_33(Idx);
53811       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
53812       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_34(Idx);
53813       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
53814       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_35(Idx);
53815       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
53816       l_rec_rev_acct_attrs.array_num_value(9)  := TO_NUMBER(l_array_source_11(Idx));
53817       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
53818       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_33(Idx);
53819       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
53820       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_34(Idx);
53821       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
53822       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_35(Idx);
53823       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
53824       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_59(Idx);
53825       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'REVERSED_DISTRIBUTION_ID1';
53826       l_rec_rev_acct_attrs.array_num_value(14)  := l_array_source_56(Idx);
53827       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_TYPE';
53828       l_rec_rev_acct_attrs.array_char_value(15)  := l_array_source_54(Idx);
53829       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'UPG_CR_ENC_TYPE_ID';
53830       l_rec_rev_acct_attrs.array_num_value(16)  := l_array_source_61(Idx);
53831       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'UPG_DR_ENC_TYPE_ID';
53832       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_61(Idx);
53833 
53834 
53835       xla_ae_lines_pkg.SetAcctReversalAttrs
53836          (p_event_id             => l_event_id
53837          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
53838          ,p_calculate_acctd_flag => l_calculate_acctd_flag
53839          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
53840    END IF;
53841 
53842    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
53843        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
53844 
53845 --
53846 AcctLineType_19 (
53847  p_application_id  => p_application_id
53848  ,p_event_id     => l_event_id
53849  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53850  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53851  ,p_actual_flag => l_actual_flag
53852  ,p_balance_type_code => l_balance_type_code
53853  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53854  
53855  , p_source_11 => l_array_source_11(Idx)
53856  , p_source_13 => l_array_source_13(Idx)
53857  , p_source_16 => l_array_source_16(Idx)
53858  , p_source_29 => l_array_source_29(Idx)
53859  , p_source_33 => l_array_source_33(Idx)
53860  , p_source_34 => l_array_source_34(Idx)
53861  , p_source_35 => l_array_source_35(Idx)
53862  , p_source_49 => l_array_source_49(Idx)
53863  , p_source_51 => l_array_source_51(Idx)
53864  , p_source_53 => l_array_source_53(Idx)
53865  , p_source_54 => l_array_source_54(Idx)
53866  , p_source_55 => l_array_source_55(Idx)
53867  , p_source_56 => l_array_source_56(Idx)
53868  , p_source_57 => l_array_source_57(Idx)
53869  , p_source_58 => l_array_source_58(Idx)
53870  , p_source_59 => l_array_source_59(Idx)
53871  , p_source_60 => l_array_source_60(Idx)
53872  , p_source_61 => l_array_source_61(Idx)
53873  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
53874  );
53875 If(l_balance_type_code = 'A') THEN
53876   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53877 END IF;
53878 
53879 --
53880 
53881 
53882 --
53883 AcctLineType_20 (
53884  p_application_id  => p_application_id
53885  ,p_event_id     => l_event_id
53886  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53887  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53888  ,p_actual_flag => l_actual_flag
53889  ,p_balance_type_code => l_balance_type_code
53890  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53891  
53892  , p_source_11 => l_array_source_11(Idx)
53893  , p_source_13 => l_array_source_13(Idx)
53894  , p_source_16 => l_array_source_16(Idx)
53895  , p_source_29 => l_array_source_29(Idx)
53896  , p_source_33 => l_array_source_33(Idx)
53897  , p_source_34 => l_array_source_34(Idx)
53898  , p_source_35 => l_array_source_35(Idx)
53899  , p_source_49 => l_array_source_49(Idx)
53900  , p_source_51 => l_array_source_51(Idx)
53901  , p_source_53 => l_array_source_53(Idx)
53902  , p_source_54 => l_array_source_54(Idx)
53903  , p_source_55 => l_array_source_55(Idx)
53904  , p_source_56 => l_array_source_56(Idx)
53905  , p_source_57 => l_array_source_57(Idx)
53906  , p_source_58 => l_array_source_58(Idx)
53907  , p_source_59 => l_array_source_59(Idx)
53908  , p_source_60 => l_array_source_60(Idx)
53909  , p_source_61 => l_array_source_61(Idx)
53910  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
53911  );
53912 If(l_balance_type_code = 'A') THEN
53913   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53914 END IF;
53915 
53916 --
53917 
53918 
53919 --
53920 AcctLineType_26 (
53921  p_application_id  => p_application_id
53922  ,p_event_id     => l_event_id
53923  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53924  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53925  ,p_actual_flag => l_actual_flag
53926  ,p_balance_type_code => l_balance_type_code
53927  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53928  
53929  , p_source_11 => l_array_source_11(Idx)
53930  , p_source_13 => l_array_source_13(Idx)
53931  , p_source_16 => l_array_source_16(Idx)
53932  , p_source_29 => l_array_source_29(Idx)
53933  , p_source_33 => l_array_source_33(Idx)
53934  , p_source_34 => l_array_source_34(Idx)
53935  , p_source_35 => l_array_source_35(Idx)
53936  , p_source_49 => l_array_source_49(Idx)
53937  , p_source_51 => l_array_source_51(Idx)
53938  , p_source_53 => l_array_source_53(Idx)
53939  , p_source_54 => l_array_source_54(Idx)
53940  , p_source_55 => l_array_source_55(Idx)
53941  , p_source_56 => l_array_source_56(Idx)
53942  , p_source_57 => l_array_source_57(Idx)
53943  , p_source_58 => l_array_source_58(Idx)
53944  , p_source_59 => l_array_source_59(Idx)
53945  , p_source_60 => l_array_source_60(Idx)
53946  , p_source_61 => l_array_source_61(Idx)
53947  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
53948  );
53949 If(l_balance_type_code = 'A') THEN
53950   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53951 END IF;
53952 
53953 --
53954 
53955 
53956 --
53957 AcctLineType_27 (
53958  p_application_id  => p_application_id
53959  ,p_event_id     => l_event_id
53960  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53961  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53962  ,p_actual_flag => l_actual_flag
53963  ,p_balance_type_code => l_balance_type_code
53964  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53965  
53966  , p_source_11 => l_array_source_11(Idx)
53967  , p_source_13 => l_array_source_13(Idx)
53968  , p_source_16 => l_array_source_16(Idx)
53969  , p_source_29 => l_array_source_29(Idx)
53970  , p_source_33 => l_array_source_33(Idx)
53971  , p_source_34 => l_array_source_34(Idx)
53972  , p_source_35 => l_array_source_35(Idx)
53973  , p_source_49 => l_array_source_49(Idx)
53974  , p_source_51 => l_array_source_51(Idx)
53975  , p_source_53 => l_array_source_53(Idx)
53976  , p_source_54 => l_array_source_54(Idx)
53977  , p_source_55 => l_array_source_55(Idx)
53978  , p_source_56 => l_array_source_56(Idx)
53979  , p_source_57 => l_array_source_57(Idx)
53980  , p_source_58 => l_array_source_58(Idx)
53981  , p_source_59 => l_array_source_59(Idx)
53982  , p_source_60 => l_array_source_60(Idx)
53983  , p_source_61 => l_array_source_61(Idx)
53984  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
53985  );
53986 If(l_balance_type_code = 'A') THEN
53987   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53988 END IF;
53989 
53990 --
53991 
53992 
53993 --
53994 AcctLineType_45 (
53995  p_application_id  => p_application_id
53996  ,p_event_id     => l_event_id
53997  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53998  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53999  ,p_actual_flag => l_actual_flag
54000  ,p_balance_type_code => l_balance_type_code
54001  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
54002  
54003  , p_source_11 => l_array_source_11(Idx)
54004  , p_source_13 => l_array_source_13(Idx)
54005  , p_source_16 => l_array_source_16(Idx)
54006  , p_source_29 => l_array_source_29(Idx)
54007  , p_source_33 => l_array_source_33(Idx)
54008  , p_source_34 => l_array_source_34(Idx)
54009  , p_source_35 => l_array_source_35(Idx)
54010  , p_source_49 => l_array_source_49(Idx)
54011  , p_source_51 => l_array_source_51(Idx)
54012  , p_source_53 => l_array_source_53(Idx)
54013  , p_source_54 => l_array_source_54(Idx)
54014  , p_source_55 => l_array_source_55(Idx)
54015  , p_source_56 => l_array_source_56(Idx)
54016  , p_source_57 => l_array_source_57(Idx)
54017  , p_source_58 => l_array_source_58(Idx)
54018  , p_source_59 => l_array_source_59(Idx)
54019  , p_source_60 => l_array_source_60(Idx)
54020  , p_source_61 => l_array_source_61(Idx)
54021  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
54022  );
54023 If(l_balance_type_code = 'A') THEN
54024   l_actual_gain_loss_ref := l_gain_or_loss_ref;
54025 END IF;
54026 
54027 --
54028 
54029 
54030 --
54031 AcctLineType_50 (
54032  p_application_id  => p_application_id
54033  ,p_event_id     => l_event_id
54034  ,p_calculate_acctd_flag => l_calculate_acctd_flag
54035  ,p_calculate_g_l_flag => l_calculate_g_l_flag
54036  ,p_actual_flag => l_actual_flag
54037  ,p_balance_type_code => l_balance_type_code
54038  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
54039  
54040  , p_source_11 => l_array_source_11(Idx)
54041  , p_source_13 => l_array_source_13(Idx)
54042  , p_source_16 => l_array_source_16(Idx)
54043  , p_source_29 => l_array_source_29(Idx)
54044  , p_source_33 => l_array_source_33(Idx)
54045  , p_source_34 => l_array_source_34(Idx)
54046  , p_source_35 => l_array_source_35(Idx)
54047  , p_source_49 => l_array_source_49(Idx)
54048  , p_source_51 => l_array_source_51(Idx)
54049  , p_source_53 => l_array_source_53(Idx)
54050  , p_source_54 => l_array_source_54(Idx)
54051  , p_source_55 => l_array_source_55(Idx)
54052  , p_source_56 => l_array_source_56(Idx)
54053  , p_source_57 => l_array_source_57(Idx)
54054  , p_source_58 => l_array_source_58(Idx)
54055  , p_source_59 => l_array_source_59(Idx)
54056  , p_source_60 => l_array_source_60(Idx)
54057  , p_source_61 => l_array_source_61(Idx)
54058  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
54059  );
54060 If(l_balance_type_code = 'A') THEN
54061   l_actual_gain_loss_ref := l_gain_or_loss_ref;
54062 END IF;
54063 
54064 --
54065 
54066 
54067 --
54068 AcctLineType_58 (
54069  p_application_id  => p_application_id
54070  ,p_event_id     => l_event_id
54071  ,p_calculate_acctd_flag => l_calculate_acctd_flag
54072  ,p_calculate_g_l_flag => l_calculate_g_l_flag
54073  ,p_actual_flag => l_actual_flag
54074  ,p_balance_type_code => l_balance_type_code
54075  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
54076  
54077  , p_source_7 => l_array_source_7(Idx)
54078  , p_source_11 => l_array_source_11(Idx)
54079  , p_source_13 => l_array_source_13(Idx)
54080  , p_source_16 => l_array_source_16(Idx)
54081  , p_source_29 => l_array_source_29(Idx)
54082  , p_source_33 => l_array_source_33(Idx)
54083  , p_source_34 => l_array_source_34(Idx)
54084  , p_source_35 => l_array_source_35(Idx)
54085  , p_source_53 => l_array_source_53(Idx)
54086  , p_source_54 => l_array_source_54(Idx)
54087  , p_source_55 => l_array_source_55(Idx)
54088  , p_source_56 => l_array_source_56(Idx)
54089  , p_source_57 => l_array_source_57(Idx)
54090  , p_source_58 => l_array_source_58(Idx)
54091  , p_source_59 => l_array_source_59(Idx)
54092  , p_source_60 => l_array_source_60(Idx)
54093  , p_source_61 => l_array_source_61(Idx)
54094  , p_source_62 => l_array_source_62(Idx)
54095  , p_source_63 => l_array_source_63(Idx)
54096  , p_source_64 => l_array_source_64(Idx)
54097  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
54098  );
54099 If(l_balance_type_code = 'A') THEN
54100   l_actual_gain_loss_ref := l_gain_or_loss_ref;
54101 END IF;
54102 
54103 --
54104 
54105 
54106 --
54107 AcctLineType_71 (
54108  p_application_id  => p_application_id
54109  ,p_event_id     => l_event_id
54110  ,p_calculate_acctd_flag => l_calculate_acctd_flag
54111  ,p_calculate_g_l_flag => l_calculate_g_l_flag
54112  ,p_actual_flag => l_actual_flag
54113  ,p_balance_type_code => l_balance_type_code
54114  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
54115  
54116  , p_source_7 => l_array_source_7(Idx)
54117  , p_source_11 => l_array_source_11(Idx)
54118  , p_source_13 => l_array_source_13(Idx)
54119  , p_source_16 => l_array_source_16(Idx)
54120  , p_source_29 => l_array_source_29(Idx)
54121  , p_source_33 => l_array_source_33(Idx)
54122  , p_source_34 => l_array_source_34(Idx)
54123  , p_source_35 => l_array_source_35(Idx)
54124  , p_source_53 => l_array_source_53(Idx)
54125  , p_source_54 => l_array_source_54(Idx)
54126  , p_source_55 => l_array_source_55(Idx)
54127  , p_source_56 => l_array_source_56(Idx)
54128  , p_source_57 => l_array_source_57(Idx)
54129  , p_source_58 => l_array_source_58(Idx)
54130  , p_source_59 => l_array_source_59(Idx)
54131  , p_source_60 => l_array_source_60(Idx)
54132  , p_source_61 => l_array_source_61(Idx)
54133  , p_source_62 => l_array_source_62(Idx)
54134  , p_source_63 => l_array_source_63(Idx)
54135  , p_source_64 => l_array_source_64(Idx)
54136  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
54137  , p_source_75 => l_array_source_75(Idx)
54138  );
54139 If(l_balance_type_code = 'A') THEN
54140   l_actual_gain_loss_ref := l_gain_or_loss_ref;
54141 END IF;
54142 
54143 --
54144 
54145 
54146 --
54147 AcctLineType_75 (
54148  p_application_id  => p_application_id
54149  ,p_event_id     => l_event_id
54150  ,p_calculate_acctd_flag => l_calculate_acctd_flag
54151  ,p_calculate_g_l_flag => l_calculate_g_l_flag
54152  ,p_actual_flag => l_actual_flag
54153  ,p_balance_type_code => l_balance_type_code
54154  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
54155  
54156  , p_source_11 => l_array_source_11(Idx)
54157  , p_source_13 => l_array_source_13(Idx)
54158  , p_source_16 => l_array_source_16(Idx)
54159  , p_source_29 => l_array_source_29(Idx)
54160  , p_source_33 => l_array_source_33(Idx)
54161  , p_source_34 => l_array_source_34(Idx)
54162  , p_source_35 => l_array_source_35(Idx)
54163  , p_source_53 => l_array_source_53(Idx)
54164  , p_source_54 => l_array_source_54(Idx)
54165  , p_source_55 => l_array_source_55(Idx)
54166  , p_source_56 => l_array_source_56(Idx)
54167  , p_source_57 => l_array_source_57(Idx)
54168  , p_source_58 => l_array_source_58(Idx)
54169  , p_source_59 => l_array_source_59(Idx)
54170  , p_source_60 => l_array_source_60(Idx)
54171  , p_source_61 => l_array_source_61(Idx)
54172  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
54173  , p_source_75 => l_array_source_75(Idx)
54174  );
54175 If(l_balance_type_code = 'A') THEN
54176   l_actual_gain_loss_ref := l_gain_or_loss_ref;
54177 END IF;
54178 
54179 --
54180 
54181 
54182 --
54183 AcctLineType_76 (
54184  p_application_id  => p_application_id
54185  ,p_event_id     => l_event_id
54186  ,p_calculate_acctd_flag => l_calculate_acctd_flag
54187  ,p_calculate_g_l_flag => l_calculate_g_l_flag
54188  ,p_actual_flag => l_actual_flag
54189  ,p_balance_type_code => l_balance_type_code
54190  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
54191  
54192  , p_source_11 => l_array_source_11(Idx)
54193  , p_source_13 => l_array_source_13(Idx)
54194  , p_source_16 => l_array_source_16(Idx)
54195  , p_source_29 => l_array_source_29(Idx)
54196  , p_source_33 => l_array_source_33(Idx)
54197  , p_source_34 => l_array_source_34(Idx)
54198  , p_source_35 => l_array_source_35(Idx)
54199  , p_source_53 => l_array_source_53(Idx)
54200  , p_source_54 => l_array_source_54(Idx)
54201  , p_source_55 => l_array_source_55(Idx)
54202  , p_source_56 => l_array_source_56(Idx)
54203  , p_source_57 => l_array_source_57(Idx)
54204  , p_source_58 => l_array_source_58(Idx)
54205  , p_source_59 => l_array_source_59(Idx)
54206  , p_source_60 => l_array_source_60(Idx)
54207  , p_source_61 => l_array_source_61(Idx)
54208  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
54209  );
54210 If(l_balance_type_code = 'A') THEN
54211   l_actual_gain_loss_ref := l_gain_or_loss_ref;
54212 END IF;
54213 
54214 --
54215 
54216       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
54217       -- or secondary ledger that has different currency with primary
54218       -- or alc that is calculated by sla
54219       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
54220             (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'))
54221 
54222 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
54223 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
54224           AND (l_actual_flag = 'A')) THEN
54225         XLA_AE_LINES_PKG.CreateGainOrLossLines(
54226           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
54227          ,p_application_id   => p_application_id
54228          ,p_amb_context_code => 'DEFAULT'
54229          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
54230          ,p_event_class_code => C_EVENT_CLASS_CODE
54231          ,p_event_type_code  => C_EVENT_TYPE_CODE
54232          
54233          ,p_gain_ccid        => -1
54234          ,p_loss_ccid        => -1
54235 
54236          ,p_actual_flag      => l_actual_flag
54237          ,p_enc_flag         => null
54238          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
54239          ,p_enc_g_l_ref      => null
54240          );
54241       END IF;
54242    END IF;
54243 END IF;
54244 
54245    ELSE
54246       --
54247       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
54248       --
54249       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54250          trace
54251             (p_msg      => 'Trancaction revesal option is Y'
54252             ,p_level    => C_LEVEL_STATEMENT
54253             ,p_module   => l_log_module);
54254       END IF;
54255    END IF;
54256 
54257 END LOOP;
54258 l_result := XLA_AE_LINES_PKG.InsertLines ;
54259 end loop;
54260 close line_cur;
54261 
54262 
54263 --
54264 -- insert headers into xla_ae_headers_gt table
54265 --
54266 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
54267 
54268 -- insert into errors table here.
54269 
54270 END LOOP;
54271 
54272 --
54273 -- 4865292
54274 --
54275 -- Compare g_hdr_extract_count with event count in
54276 -- CreateHeadersAndLines.
54277 --
54278 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
54279 
54280 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54281    trace (p_msg     => '# rows extracted from header extract objects '
54282                     || ' (running total): '
54283                     || g_hdr_extract_count
54284          ,p_level   => C_LEVEL_STATEMENT
54285          ,p_module  => l_log_module);
54286 END IF;
54287 
54288 CLOSE header_cur;
54289 --
54290 
54291 --
54292 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54293    trace
54294       (p_msg      => 'END of EventClass_87'
54295       ,p_level    => C_LEVEL_PROCEDURE
54296       ,p_module   => l_log_module);
54297 END IF;
54298 --
54299 RETURN l_result;
54300 EXCEPTION
54301 WHEN xla_exceptions_pkg.application_exception THEN
54302    
54303 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
54304 
54305    
54306 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
54307 
54308    RAISE;
54309 WHEN OTHERS THEN
54310    xla_exceptions_pkg.raise_message
54311       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.EventClass_87');
54312 END EventClass_87;
54313 --
54314 
54315 ---------------------------------------
54316 --
54317 -- PRIVATE PROCEDURE
54318 --         insert_sources_88
54319 --
54320 ----------------------------------------
54321 --
54322 PROCEDURE insert_sources_88(
54323                                 p_target_ledger_id       IN NUMBER
54324                               , p_language               IN VARCHAR2
54325                               , p_sla_ledger_id          IN NUMBER
54326                               , p_pad_start_date         IN DATE
54327                               , p_pad_end_date           IN DATE
54328                          )
54329 IS
54330 
54331 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELEASE_BURDEN_ALL';
54332 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RELEASE_BURDEN';
54333 p_apps_owner                   VARCHAR2(30);
54334 l_log_module                   VARCHAR2(240);
54335 BEGIN
54336 IF g_log_enabled THEN
54337       l_log_module := C_DEFAULT_MODULE||'.insert_sources_88';
54338 END IF;
54339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54340 
54341       trace
54342          (p_msg      => 'BEGIN of insert_sources_88'
54343          ,p_level    => C_LEVEL_PROCEDURE
54344          ,p_module   => l_log_module);
54345 
54346 END IF;
54347 
54348 -- select APPS owner
54349 SELECT oracle_username
54350   INTO p_apps_owner
54351   FROM fnd_oracle_userid
54352  WHERE read_only_flag = 'U'
54353 ;
54354 
54355 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54356       trace
54357          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
54358                         ' - p_language = '||p_language||
54359                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
54360                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
54361                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
54362                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
54363          ,p_level    => C_LEVEL_STATEMENT
54364          ,p_module   => l_log_module);
54365 END IF;
54366 
54367 
54368 --
54369 INSERT INTO xla_diag_sources --hdr2
54370 (
54371         event_id
54372       , ledger_id
54373       , sla_ledger_id
54374       , description_language
54375       , object_name
54376       , object_type_code
54377       , line_number
54378       , source_application_id
54379       , source_type_code
54380       , source_code
54381       , source_value
54382       , source_meaning
54383       , created_by
54384       , creation_date
54385       , last_update_date
54386       , last_updated_by
54387       , last_update_login
54388       , program_update_date
54389       , program_application_id
54390       , program_id
54391       , request_id
54392 )
54393 SELECT
54394         event_id
54395       , p_target_ledger_id
54396       , p_sla_ledger_id
54397       , p_language
54398       , object_name
54399       , object_type_code
54400       , line_number
54401       , source_application_id
54402       , source_type_code
54403       , source_code
54404       , SUBSTR(source_value ,1,1996)
54405       , SUBSTR(source_meaning ,1,200)
54406       , xla_environment_pkg.g_Usr_Id
54407       , TRUNC(SYSDATE)
54408       , TRUNC(SYSDATE)
54409       , xla_environment_pkg.g_Usr_Id
54410       , xla_environment_pkg.g_Login_Id
54411       , TRUNC(SYSDATE)
54412       , xla_environment_pkg.g_Prog_Appl_Id
54413       , xla_environment_pkg.g_Prog_Id
54414       , xla_environment_pkg.g_Req_Id
54415   FROM (
54416        SELECT xet.event_id                  event_id
54417             , 0                          line_number
54418             , CASE r
54419                WHEN 1 THEN 'PA_XLA_BC_PKT_PO_HEADER_V' 
54420                 
54421                ELSE null
54422               END                           object_name
54423             , CASE r
54424                 WHEN 1 THEN 'HEADER' 
54425                 
54426                 ELSE null
54427               END                           object_type_code
54428             , CASE r
54429                 WHEN 1 THEN '201' 
54430                 
54431                 ELSE null
54432               END                           source_application_id
54433             , 'S'             source_type_code
54434             , CASE r
54435                 WHEN 1 THEN 'GL_DATE' 
54436                 
54437                 ELSE null
54438               END                           source_code
54439             , CASE r
54440                 WHEN 1 THEN TO_CHAR(h2.GL_DATE)
54441                 
54442                 ELSE null
54443               END                           source_value
54444             , null              source_meaning
54445          FROM xla_events_gt     xet  
54446       , PA_XLA_BC_PKT_PO_HEADER_V  h2
54447              ,(select rownum r from all_objects where rownum <= 1 and owner = p_apps_owner)
54448          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
54449            AND xet.event_class_code = C_EVENT_CLASS_CODE
54450               AND h2.event_id = xet.event_id
54451 
54452 )
54453 ;
54454 --
54455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54456 
54457       trace
54458          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
54459          ,p_level    => C_LEVEL_STATEMENT
54460          ,p_module   => l_log_module);
54461 
54462 END IF;
54463 --
54464 
54465 
54466 
54467 --
54468 INSERT INTO xla_diag_sources  --line2
54469 (
54470         event_id
54471       , ledger_id
54472       , sla_ledger_id
54473       , description_language
54474       , object_name
54475       , object_type_code
54476       , line_number
54477       , source_application_id
54478       , source_type_code
54479       , source_code
54480       , source_value
54481       , source_meaning
54482       , created_by
54483       , creation_date
54484       , last_update_date
54485       , last_updated_by
54486       , last_update_login
54487       , program_update_date
54488       , program_application_id
54489       , program_id
54490       , request_id
54491 )
54492 SELECT  event_id
54493       , p_target_ledger_id
54494       , p_sla_ledger_id
54495       , p_language
54496       , object_name
54497       , object_type_code
54498       , line_number
54499       , source_application_id
54500       , source_type_code
54501       , source_code
54502       , SUBSTR(source_value,1,1996)
54503       , SUBSTR(source_meaning ,1,200)
54504       , xla_environment_pkg.g_Usr_Id
54505       , TRUNC(SYSDATE)
54506       , TRUNC(SYSDATE)
54507       , xla_environment_pkg.g_Usr_Id
54508       , xla_environment_pkg.g_Login_Id
54509       , TRUNC(SYSDATE)
54510       , xla_environment_pkg.g_Prog_Appl_Id
54511       , xla_environment_pkg.g_Prog_Id
54512       , xla_environment_pkg.g_Req_Id
54513   FROM (
54514        SELECT xet.event_id                  event_id
54515             , l1.line_number                 line_number
54516             , CASE r
54517                WHEN 1 THEN 'PA_XLA_PROJECT_REF_V' 
54518                 WHEN 2 THEN 'PA_XLA_TASK_REF_V' 
54519                 WHEN 3 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54520                 WHEN 4 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54521                 WHEN 5 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54522                 WHEN 6 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54523                 WHEN 7 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54524                 WHEN 8 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54525                 WHEN 9 THEN 'PA_XLA_PROJECT_REF_V' 
54526                 WHEN 10 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54527                 WHEN 11 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54528                 WHEN 12 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54529                 WHEN 13 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54530                 WHEN 14 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54531                 WHEN 15 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54532                 WHEN 16 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54533                 WHEN 17 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54534                 WHEN 18 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54535                 WHEN 19 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54536                 WHEN 20 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54537                 WHEN 21 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54538                 WHEN 22 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54539                 WHEN 23 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54540                 WHEN 24 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54541                 WHEN 25 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54542                 WHEN 26 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54543                 WHEN 27 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54544                 WHEN 28 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54545                 WHEN 29 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54546                 WHEN 30 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54547                 WHEN 31 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54548                 WHEN 32 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54549                 WHEN 33 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54550                 WHEN 34 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54551                 WHEN 35 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54552                 WHEN 36 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54553                 WHEN 37 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54554                 WHEN 38 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54555                 WHEN 39 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54556                 WHEN 40 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54557                 WHEN 41 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54558                 WHEN 42 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54559                 WHEN 43 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54560                 WHEN 44 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54561                 WHEN 45 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54562                 WHEN 46 THEN 'PA_XLA_BC_PKT_PO_DETAIL_V' 
54563                 
54564                ELSE null
54565               END                           object_name
54566             , CASE r
54567                 WHEN 1 THEN 'LINE' 
54568                 WHEN 2 THEN 'LINE' 
54569                 WHEN 3 THEN 'LINE' 
54570                 WHEN 4 THEN 'LINE' 
54571                 WHEN 5 THEN 'LINE' 
54572                 WHEN 6 THEN 'LINE' 
54573                 WHEN 7 THEN 'LINE' 
54574                 WHEN 8 THEN 'LINE' 
54575                 WHEN 9 THEN 'LINE' 
54576                 WHEN 10 THEN 'LINE' 
54577                 WHEN 11 THEN 'LINE' 
54578                 WHEN 12 THEN 'LINE' 
54579                 WHEN 13 THEN 'LINE' 
54580                 WHEN 14 THEN 'LINE' 
54581                 WHEN 15 THEN 'LINE' 
54582                 WHEN 16 THEN 'LINE' 
54583                 WHEN 17 THEN 'LINE' 
54584                 WHEN 18 THEN 'LINE' 
54585                 WHEN 19 THEN 'LINE' 
54586                 WHEN 20 THEN 'LINE' 
54587                 WHEN 21 THEN 'LINE' 
54588                 WHEN 22 THEN 'LINE' 
54589                 WHEN 23 THEN 'LINE' 
54590                 WHEN 24 THEN 'LINE' 
54591                 WHEN 25 THEN 'LINE' 
54592                 WHEN 26 THEN 'LINE' 
54593                 WHEN 27 THEN 'LINE' 
54594                 WHEN 28 THEN 'LINE' 
54595                 WHEN 29 THEN 'LINE' 
54596                 WHEN 30 THEN 'LINE' 
54597                 WHEN 31 THEN 'LINE' 
54598                 WHEN 32 THEN 'LINE' 
54599                 WHEN 33 THEN 'LINE' 
54600                 WHEN 34 THEN 'LINE' 
54601                 WHEN 35 THEN 'LINE' 
54602                 WHEN 36 THEN 'LINE' 
54603                 WHEN 37 THEN 'LINE' 
54604                 WHEN 38 THEN 'LINE' 
54605                 WHEN 39 THEN 'LINE' 
54606                 WHEN 40 THEN 'LINE' 
54607                 WHEN 41 THEN 'LINE' 
54608                 WHEN 42 THEN 'LINE' 
54609                 WHEN 43 THEN 'LINE' 
54610                 WHEN 44 THEN 'LINE' 
54611                 WHEN 45 THEN 'LINE' 
54612                 WHEN 46 THEN 'LINE' 
54613                 
54614                 ELSE null
54615               END                           object_type_code
54616             , CASE r
54617                 WHEN 1 THEN '275' 
54618                 WHEN 2 THEN '275' 
54619                 WHEN 3 THEN '201' 
54620                 WHEN 4 THEN '201' 
54621                 WHEN 5 THEN '201' 
54622                 WHEN 6 THEN '201' 
54623                 WHEN 7 THEN '201' 
54624                 WHEN 8 THEN '201' 
54625                 WHEN 9 THEN '275' 
54626                 WHEN 10 THEN '201' 
54627                 WHEN 11 THEN '201' 
54628                 WHEN 12 THEN '201' 
54629                 WHEN 13 THEN '201' 
54630                 WHEN 14 THEN '201' 
54631                 WHEN 15 THEN '201' 
54632                 WHEN 16 THEN '201' 
54633                 WHEN 17 THEN '201' 
54634                 WHEN 18 THEN '201' 
54635                 WHEN 19 THEN '201' 
54636                 WHEN 20 THEN '201' 
54637                 WHEN 21 THEN '201' 
54638                 WHEN 22 THEN '201' 
54639                 WHEN 23 THEN '201' 
54640                 WHEN 24 THEN '201' 
54641                 WHEN 25 THEN '201' 
54642                 WHEN 26 THEN '201' 
54643                 WHEN 27 THEN '201' 
54644                 WHEN 28 THEN '201' 
54645                 WHEN 29 THEN '201' 
54646                 WHEN 30 THEN '201' 
54647                 WHEN 31 THEN '201' 
54648                 WHEN 32 THEN '201' 
54649                 WHEN 33 THEN '201' 
54650                 WHEN 34 THEN '201' 
54651                 WHEN 35 THEN '201' 
54652                 WHEN 36 THEN '201' 
54653                 WHEN 37 THEN '201' 
54654                 WHEN 38 THEN '201' 
54655                 WHEN 39 THEN '201' 
54656                 WHEN 40 THEN '201' 
54657                 WHEN 41 THEN '201' 
54658                 WHEN 42 THEN '201' 
54659                 WHEN 43 THEN '201' 
54660                 WHEN 44 THEN '201' 
54661                 WHEN 45 THEN '201' 
54662                 WHEN 46 THEN '201' 
54663                 
54664                 ELSE null
54665               END                           source_application_id
54666             , 'S'             source_type_code
54667             , CASE r
54668                 WHEN 1 THEN 'PROJECT_NAME' 
54669                 WHEN 2 THEN 'TASK_NAME' 
54670                 WHEN 3 THEN 'EXPENDITURE_ORGANIZATION_ID' 
54671                 WHEN 4 THEN 'EXPENDITURE_TYPE' 
54672                 WHEN 5 THEN 'DOCUMENT_TYPE' 
54673                 WHEN 6 THEN 'BUDGET_ACCOUNT' 
54674                 WHEN 7 THEN 'MAIN_OR_BACKING_CODE' 
54675                 WHEN 8 THEN 'BURDEN_COST_FLAG' 
54676                 WHEN 9 THEN 'PROJ_BURDEN_DISPLAY_METHOD' 
54677                 WHEN 10 THEN 'ACCOUNTING_REVERSAL_FLAG' 
54678                 WHEN 11 THEN 'ALLOC_TO_APPLN_ID' 
54679                 WHEN 12 THEN 'ALLOC_TO_DIST_TYPE' 
54680                 WHEN 13 THEN 'ALLOC_TO_ENTITY_CODE' 
54681                 WHEN 14 THEN 'ALLOC_TO_FIRST_DIST_ID' 
54682                 WHEN 15 THEN 'ALLOC_TO_FIRST_SYS_TRANS_ID' 
54683                 WHEN 16 THEN 'ALLOC_TO_SECOND_DIST_ID' 
54684                 WHEN 17 THEN 'PO_APPLICATION_ID' 
54685                 WHEN 18 THEN 'PO_DISTRIBUTION_TYPE' 
54686                 WHEN 19 THEN 'PO_ENTITY_CODE' 
54687                 WHEN 20 THEN 'PO_FIRST_DIST_ID' 
54688                 WHEN 21 THEN 'PO_FIRST_SYS_TRANS_ID' 
54689                 WHEN 22 THEN 'PO_SECOND_DIST_ID' 
54690                 WHEN 23 THEN 'PO_DISTRIBUTION_ID' 
54691                 WHEN 24 THEN 'LINE_TYPE_NAME' 
54692                 WHEN 25 THEN 'ENC_UPG_CR_ACCT_CLASS' 
54693                 WHEN 26 THEN 'ENC_UPG_CR_ACCOUNT' 
54694                 WHEN 27 THEN 'ENTERED_AMT' 
54695                 WHEN 28 THEN 'CURRENCY_CODE' 
54696                 WHEN 29 THEN 'ACCOUNTED_AMT' 
54697                 WHEN 30 THEN 'ENC_UPG_DR_ACCT_CLASS' 
54698                 WHEN 31 THEN 'ENC_UPG_DR_ACCOUNT' 
54699                 WHEN 32 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
54700                 WHEN 33 THEN 'ENC_UPG_CR_ENC_TYPE_ID' 
54701                 WHEN 34 THEN 'ENC_UPG_DR_ENC_TYPE_ID' 
54702                 WHEN 35 THEN 'REQ_APPLICATION_ID' 
54703                 WHEN 36 THEN 'REQ_DISTRIBUTION_TYPE' 
54704                 WHEN 37 THEN 'REQ_ENTITY_CODE' 
54705                 WHEN 38 THEN 'REQ_FIRST_DIST_ID' 
54706                 WHEN 39 THEN 'REQ_FIRST_SYS_TRANS_ID' 
54707                 WHEN 40 THEN 'REQ_SECOND_DIST_ID' 
54708                 WHEN 41 THEN 'PA_APPLICATION_ID' 
54709                 WHEN 42 THEN 'PA_DISTRIBUTION_TYPE' 
54710                 WHEN 43 THEN 'PA_ENTITY_CODE' 
54711                 WHEN 44 THEN 'PA_FIRST_DIST_ID' 
54712                 WHEN 45 THEN 'PA_FIRST_SYS_TRANS_ID' 
54713                 WHEN 46 THEN 'PA_SECOND_DIST_ID' 
54714                 
54715                 ELSE null
54716               END                           source_code
54717             , CASE r
54718                 WHEN 1 THEN TO_CHAR(l3.PROJECT_NAME)
54719                 WHEN 2 THEN TO_CHAR(l4.TASK_NAME)
54720                 WHEN 3 THEN TO_CHAR(l1.EXPENDITURE_ORGANIZATION_ID)
54721                 WHEN 4 THEN TO_CHAR(l1.EXPENDITURE_TYPE)
54722                 WHEN 5 THEN TO_CHAR(l1.DOCUMENT_TYPE)
54723                 WHEN 6 THEN TO_CHAR(l1.BUDGET_ACCOUNT)
54724                 WHEN 7 THEN TO_CHAR(l1.MAIN_OR_BACKING_CODE)
54725                 WHEN 8 THEN TO_CHAR(l1.BURDEN_COST_FLAG)
54726                 WHEN 9 THEN TO_CHAR(l3.PROJ_BURDEN_DISPLAY_METHOD)
54727                 WHEN 10 THEN TO_CHAR(l1.ACCOUNTING_REVERSAL_FLAG)
54728                 WHEN 11 THEN TO_CHAR(l1.ALLOC_TO_APPLN_ID)
54729                 WHEN 12 THEN TO_CHAR(l1.ALLOC_TO_DIST_TYPE)
54730                 WHEN 13 THEN TO_CHAR(l1.ALLOC_TO_ENTITY_CODE)
54731                 WHEN 14 THEN TO_CHAR(l1.ALLOC_TO_FIRST_DIST_ID)
54732                 WHEN 15 THEN TO_CHAR(l1.ALLOC_TO_FIRST_SYS_TRANS_ID)
54733                 WHEN 16 THEN TO_CHAR(l1.ALLOC_TO_SECOND_DIST_ID)
54734                 WHEN 17 THEN TO_CHAR(l1.PO_APPLICATION_ID)
54735                 WHEN 18 THEN TO_CHAR(l1.PO_DISTRIBUTION_TYPE)
54736                 WHEN 19 THEN TO_CHAR(l1.PO_ENTITY_CODE)
54737                 WHEN 20 THEN TO_CHAR(l1.PO_FIRST_DIST_ID)
54738                 WHEN 21 THEN TO_CHAR(l1.PO_FIRST_SYS_TRANS_ID)
54739                 WHEN 22 THEN TO_CHAR(l1.PO_SECOND_DIST_ID)
54740                 WHEN 23 THEN TO_CHAR(l1.PO_DISTRIBUTION_ID)
54741                 WHEN 24 THEN TO_CHAR(l1.LINE_TYPE_NAME)
54742                 WHEN 25 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
54743                 WHEN 26 THEN TO_CHAR(l1.ENC_UPG_CR_ACCOUNT)
54744                 WHEN 27 THEN TO_CHAR(l1.ENTERED_AMT)
54745                 WHEN 28 THEN TO_CHAR(l1.CURRENCY_CODE)
54746                 WHEN 29 THEN TO_CHAR(l1.ACCOUNTED_AMT)
54747                 WHEN 30 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
54748                 WHEN 31 THEN TO_CHAR(l1.ENC_UPG_DR_ACCOUNT)
54749                 WHEN 32 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
54750                 WHEN 33 THEN TO_CHAR(l1.ENC_UPG_CR_ENC_TYPE_ID)
54751                 WHEN 34 THEN TO_CHAR(l1.ENC_UPG_DR_ENC_TYPE_ID)
54752                 WHEN 35 THEN TO_CHAR(l1.REQ_APPLICATION_ID)
54753                 WHEN 36 THEN TO_CHAR(l1.REQ_DISTRIBUTION_TYPE)
54754                 WHEN 37 THEN TO_CHAR(l1.REQ_ENTITY_CODE)
54755                 WHEN 38 THEN TO_CHAR(l1.REQ_FIRST_DIST_ID)
54756                 WHEN 39 THEN TO_CHAR(l1.REQ_FIRST_SYS_TRANS_ID)
54757                 WHEN 40 THEN TO_CHAR(l1.REQ_SECOND_DIST_ID)
54758                 WHEN 41 THEN TO_CHAR(l1.PA_APPLICATION_ID)
54759                 WHEN 42 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
54760                 WHEN 43 THEN TO_CHAR(l1.PA_ENTITY_CODE)
54761                 WHEN 44 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
54762                 WHEN 45 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
54763                 WHEN 46 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
54764                 
54765                 ELSE null
54766               END                           source_value
54767             , CASE r
54768                 WHEN 3 THEN XLA_00201_AAD_S_000005_BC_PKG.GetMeaning(
54769                           1011404
54770                          ,TO_CHAR(l1.EXPENDITURE_ORGANIZATION_ID)
54771                          ,'EXPENDITURE_ORGANIZATION_ID'
54772                          ,'S'
54773                          ,201)
54774                 WHEN 8 THEN fvl14.meaning
54775                 
54776                 ELSE null
54777               END               source_meaning
54778          FROM  xla_events_gt     xet  
54779         , PA_XLA_BC_PKT_PO_DETAIL_V  l1
54780         , PA_XLA_PROJECT_REF_V  l3
54781         , PA_XLA_TASK_REF_V  l4
54782   , fnd_lookup_values    fvl14
54783             , (select rownum r from all_objects where rownum <= 46 and owner = p_apps_owner)
54784         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
54785           AND xet.event_class_code = C_EVENT_CLASS_CODE
54786             AND l1.event_id          = xet.event_id
54787  AND l3.project_id=l1.project_id AND l4.task_id=l1.task_id   AND fvl14.lookup_type(+)         = 'BC_PKT_BURDEN_COST_FLAG'
54788   AND fvl14.lookup_code(+)         = l1.BURDEN_COST_FLAG
54789   AND fvl14.view_application_id(+) = 275
54790   AND fvl14.language(+)            = USERENV('LANG')
54791   
54792 )
54793 ;
54794 --
54795 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54796 
54797       trace
54798          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
54799          ,p_level    => C_LEVEL_STATEMENT
54800          ,p_module   => l_log_module);
54801 
54802 END IF;
54803 
54804 
54805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54806       trace
54807          (p_msg      => 'END of insert_sources_88'
54808          ,p_level    => C_LEVEL_PROCEDURE
54809          ,p_module   => l_log_module);
54810 END IF;
54811 EXCEPTION
54812   WHEN xla_exceptions_pkg.application_exception THEN
54813       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
54814             trace
54815                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
54816                ,p_level    => C_LEVEL_EXCEPTION
54817                ,p_module   => l_log_module);
54818       END IF;
54819       RAISE;
54820   WHEN OTHERS THEN
54821       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
54822             trace
54823                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
54824                ,p_level    => C_LEVEL_EXCEPTION
54825                ,p_module   => l_log_module);
54826        END IF;
54827        xla_exceptions_pkg.raise_message
54828            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.insert_sources_88');
54829 END insert_sources_88;
54830 --
54831 
54832 ---------------------------------------
54833 --
54834 -- PRIVATE FUNCTION
54835 --         EventClass_88
54836 --
54837 ----------------------------------------
54838 --
54839 FUNCTION EventClass_88
54840        (p_application_id         IN NUMBER
54841        ,p_base_ledger_id         IN NUMBER
54842        ,p_target_ledger_id       IN NUMBER
54843        ,p_language               IN VARCHAR2
54844        ,p_currency_code          IN VARCHAR2
54845        ,p_sla_ledger_id          IN NUMBER
54846        ,p_pad_start_date         IN DATE
54847        ,p_pad_end_date           IN DATE
54848        ,p_primary_ledger_id      IN NUMBER)
54849 RETURN BOOLEAN IS
54850 --
54851 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELEASE_BURDEN_ALL';
54852 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RELEASE_BURDEN';
54853 
54854 l_calculate_acctd_flag   VARCHAR2(1) :='N';
54855 l_calculate_g_l_flag     VARCHAR2(1) :='N';
54856 --
54857 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54858 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54859 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
54860 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
54861 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54862 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
54863 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
54864 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54865 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
54866 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
54867 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54868 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54869 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54870 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
54871 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
54872 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
54873 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
54874 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
54875 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
54876 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
54877 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
54878 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
54879 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
54880 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
54881 
54882 l_event_id                             NUMBER;
54883 l_previous_event_id                    NUMBER;
54884 l_first_event_id                       NUMBER;
54885 l_last_event_id                        NUMBER;
54886 
54887 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
54888 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
54889 --
54890 --
54891 l_result                    BOOLEAN := TRUE;
54892 l_rows                      NUMBER  := 1000;
54893 l_event_type_name           VARCHAR2(80) := 'All';
54894 l_event_class_name          VARCHAR2(80) := 'Burden for Release';
54895 l_description               VARCHAR2(4000);
54896 l_transaction_reversal      NUMBER;
54897 l_ae_header_id              NUMBER;
54898 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
54899 l_log_module                VARCHAR2(240);
54900 --
54901 l_acct_reversal_source      VARCHAR2(30);
54902 l_trx_reversal_source       VARCHAR2(30);
54903 
54904 l_continue_with_lines       BOOLEAN := TRUE;
54905 --
54906 l_acc_rev_gl_date_source    DATE;                      -- 4262811
54907 --
54908 type t_array_event_id is table of number index by binary_integer;
54909 
54910 l_rec_array_event                    t_rec_array_event;
54911 l_null_rec_array_event               t_rec_array_event;
54912 l_array_ae_header_id                 xla_number_array_type;
54913 l_actual_flag                        VARCHAR2(1) := NULL;
54914 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
54915 l_balance_type_code                  VARCHAR2(1) :=NULL;
54916 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
54917 
54918 --
54919 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
54920 --
54921 
54922 TYPE t_array_source_79 IS TABLE OF PA_XLA_BC_PKT_PO_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
54923 
54924 TYPE t_array_source_3 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJECT_NAME%TYPE INDEX BY BINARY_INTEGER;
54925 TYPE t_array_source_4 IS TABLE OF PA_XLA_TASK_REF_V.TASK_NAME%TYPE INDEX BY BINARY_INTEGER;
54926 TYPE t_array_source_5 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.EXPENDITURE_ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
54927 TYPE t_array_source_6 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.EXPENDITURE_TYPE%TYPE INDEX BY BINARY_INTEGER;
54928 TYPE t_array_source_9 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
54929 TYPE t_array_source_11 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
54930 TYPE t_array_source_13 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
54931 TYPE t_array_source_14 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.BURDEN_COST_FLAG%TYPE INDEX BY BINARY_INTEGER;
54932 TYPE t_array_source_15 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJ_BURDEN_DISPLAY_METHOD%TYPE INDEX BY BINARY_INTEGER;
54933 TYPE t_array_source_16 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
54934 TYPE t_array_source_17 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_APPLN_ID%TYPE INDEX BY BINARY_INTEGER;
54935 TYPE t_array_source_18 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
54936 TYPE t_array_source_19 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
54937 TYPE t_array_source_20 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54938 TYPE t_array_source_21 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
54939 TYPE t_array_source_22 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ALLOC_TO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54940 TYPE t_array_source_23 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
54941 TYPE t_array_source_24 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
54942 TYPE t_array_source_25 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
54943 TYPE t_array_source_26 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54944 TYPE t_array_source_27 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
54945 TYPE t_array_source_28 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54946 TYPE t_array_source_29 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
54947 TYPE t_array_source_30 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.LINE_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
54948 TYPE t_array_source_31 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
54949 TYPE t_array_source_32 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_CR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
54950 TYPE t_array_source_33 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
54951 TYPE t_array_source_34 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
54952 TYPE t_array_source_35 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
54953 TYPE t_array_source_36 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
54954 TYPE t_array_source_37 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_DR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
54955 TYPE t_array_source_38 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
54956 TYPE t_array_source_39 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_CR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
54957 TYPE t_array_source_40 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.ENC_UPG_DR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
54958 TYPE t_array_source_41 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
54959 TYPE t_array_source_42 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
54960 TYPE t_array_source_43 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
54961 TYPE t_array_source_44 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54962 TYPE t_array_source_45 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
54963 TYPE t_array_source_46 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.REQ_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54964 TYPE t_array_source_68 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
54965 TYPE t_array_source_69 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
54966 TYPE t_array_source_70 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
54967 TYPE t_array_source_71 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54968 TYPE t_array_source_72 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
54969 TYPE t_array_source_73 IS TABLE OF PA_XLA_BC_PKT_PO_DETAIL_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
54970 
54971 l_array_source_79              t_array_source_79;
54972 
54973 l_array_source_3      t_array_source_3;
54974 l_array_source_4      t_array_source_4;
54975 l_array_source_5      t_array_source_5;
54976 l_array_source_6      t_array_source_6;
54977 l_array_source_9      t_array_source_9;
54978 l_array_source_11      t_array_source_11;
54979 l_array_source_13      t_array_source_13;
54980 l_array_source_14      t_array_source_14;
54981 l_array_source_14_meaning      t_array_lookup_meaning;
54982 l_array_source_15      t_array_source_15;
54983 l_array_source_16      t_array_source_16;
54984 l_array_source_17      t_array_source_17;
54985 l_array_source_18      t_array_source_18;
54986 l_array_source_19      t_array_source_19;
54987 l_array_source_20      t_array_source_20;
54988 l_array_source_21      t_array_source_21;
54989 l_array_source_22      t_array_source_22;
54990 l_array_source_23      t_array_source_23;
54991 l_array_source_24      t_array_source_24;
54992 l_array_source_25      t_array_source_25;
54993 l_array_source_26      t_array_source_26;
54994 l_array_source_27      t_array_source_27;
54995 l_array_source_28      t_array_source_28;
54996 l_array_source_29      t_array_source_29;
54997 l_array_source_30      t_array_source_30;
54998 l_array_source_31      t_array_source_31;
54999 l_array_source_32      t_array_source_32;
55000 l_array_source_33      t_array_source_33;
55001 l_array_source_34      t_array_source_34;
55002 l_array_source_35      t_array_source_35;
55003 l_array_source_36      t_array_source_36;
55004 l_array_source_37      t_array_source_37;
55005 l_array_source_38      t_array_source_38;
55006 l_array_source_39      t_array_source_39;
55007 l_array_source_40      t_array_source_40;
55008 l_array_source_41      t_array_source_41;
55009 l_array_source_42      t_array_source_42;
55010 l_array_source_43      t_array_source_43;
55011 l_array_source_44      t_array_source_44;
55012 l_array_source_45      t_array_source_45;
55013 l_array_source_46      t_array_source_46;
55014 l_array_source_68      t_array_source_68;
55015 l_array_source_69      t_array_source_69;
55016 l_array_source_70      t_array_source_70;
55017 l_array_source_71      t_array_source_71;
55018 l_array_source_72      t_array_source_72;
55019 l_array_source_73      t_array_source_73;
55020 
55021 --
55022 CURSOR header_cur
55023 IS
55024 SELECT /*+ leading(xet) cardinality(xet,1) */
55025 -- Event Class Code: RELEASE_BURDEN
55026     xet.entity_id
55027    ,xet.legal_entity_id
55028    ,xet.entity_code
55029    ,xet.transaction_number
55030    ,xet.event_id
55031    ,xet.event_class_code
55032    ,xet.event_type_code
55033    ,xet.event_number
55034    ,xet.event_date
55035    ,xet.transaction_date
55036    ,xet.reference_num_1
55037    ,xet.reference_num_2
55038    ,xet.reference_num_3
55039    ,xet.reference_num_4
55040    ,xet.reference_char_1
55041    ,xet.reference_char_2
55042    ,xet.reference_char_3
55043    ,xet.reference_char_4
55044    ,xet.reference_date_1
55045    ,xet.reference_date_2
55046    ,xet.reference_date_3
55047    ,xet.reference_date_4
55048    ,xet.event_created_by
55049    ,xet.budgetary_control_flag 
55050   , h2.GL_DATE    source_79
55051   FROM xla_events_gt     xet 
55052   , PA_XLA_BC_PKT_PO_HEADER_V  h2
55053  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
55054    and xet.event_class_code = C_EVENT_CLASS_CODE
55055    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
55056 
55057  ORDER BY event_id
55058 ;
55059 
55060 
55061 --
55062 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
55063 IS
55064 SELECT  /*+ leading(xet) cardinality(xet,1) */
55065 -- Event Class Code: RELEASE_BURDEN
55066     xet.entity_id
55067    ,xet.legal_entity_id
55068    ,xet.entity_code
55069    ,xet.transaction_number
55070    ,xet.event_id
55071    ,xet.event_class_code
55072    ,xet.event_type_code
55073    ,xet.event_number
55074    ,xet.event_date
55075    ,xet.transaction_date
55076    ,xet.reference_num_1
55077    ,xet.reference_num_2
55078    ,xet.reference_num_3
55079    ,xet.reference_num_4
55080    ,xet.reference_char_1
55081    ,xet.reference_char_2
55082    ,xet.reference_char_3
55083    ,xet.reference_char_4
55084    ,xet.reference_date_1
55085    ,xet.reference_date_2
55086    ,xet.reference_date_3
55087    ,xet.reference_date_4
55088    ,xet.event_created_by
55089    ,xet.budgetary_control_flag
55090  , l1.LINE_NUMBER  
55091   , l3.PROJECT_NAME    source_3
55092   , l4.TASK_NAME    source_4
55093   , l1.EXPENDITURE_ORGANIZATION_ID    source_5
55094   , l1.EXPENDITURE_TYPE    source_6
55095   , l1.DOCUMENT_TYPE    source_9
55096   , l1.BUDGET_ACCOUNT    source_11
55097   , l1.MAIN_OR_BACKING_CODE    source_13
55098   , l1.BURDEN_COST_FLAG    source_14
55099   , fvl14.meaning   source_14_meaning
55100   , l3.PROJ_BURDEN_DISPLAY_METHOD    source_15
55101   , l1.ACCOUNTING_REVERSAL_FLAG    source_16
55102   , l1.ALLOC_TO_APPLN_ID    source_17
55103   , l1.ALLOC_TO_DIST_TYPE    source_18
55104   , l1.ALLOC_TO_ENTITY_CODE    source_19
55105   , l1.ALLOC_TO_FIRST_DIST_ID    source_20
55106   , l1.ALLOC_TO_FIRST_SYS_TRANS_ID    source_21
55107   , l1.ALLOC_TO_SECOND_DIST_ID    source_22
55108   , l1.PO_APPLICATION_ID    source_23
55109   , l1.PO_DISTRIBUTION_TYPE    source_24
55110   , l1.PO_ENTITY_CODE    source_25
55111   , l1.PO_FIRST_DIST_ID    source_26
55112   , l1.PO_FIRST_SYS_TRANS_ID    source_27
55113   , l1.PO_SECOND_DIST_ID    source_28
55114   , l1.PO_DISTRIBUTION_ID    source_29
55115   , l1.LINE_TYPE_NAME    source_30
55116   , l1.ENC_UPG_CR_ACCT_CLASS    source_31
55117   , l1.ENC_UPG_CR_ACCOUNT    source_32
55118   , l1.ENTERED_AMT    source_33
55119   , l1.CURRENCY_CODE    source_34
55120   , l1.ACCOUNTED_AMT    source_35
55121   , l1.ENC_UPG_DR_ACCT_CLASS    source_36
55122   , l1.ENC_UPG_DR_ACCOUNT    source_37
55123   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_38
55124   , l1.ENC_UPG_CR_ENC_TYPE_ID    source_39
55125   , l1.ENC_UPG_DR_ENC_TYPE_ID    source_40
55126   , l1.REQ_APPLICATION_ID    source_41
55127   , l1.REQ_DISTRIBUTION_TYPE    source_42
55128   , l1.REQ_ENTITY_CODE    source_43
55129   , l1.REQ_FIRST_DIST_ID    source_44
55130   , l1.REQ_FIRST_SYS_TRANS_ID    source_45
55131   , l1.REQ_SECOND_DIST_ID    source_46
55132   , l1.PA_APPLICATION_ID    source_68
55133   , l1.PA_DISTRIBUTION_TYPE    source_69
55134   , l1.PA_ENTITY_CODE    source_70
55135   , l1.PA_FIRST_DIST_ID    source_71
55136   , l1.PA_FIRST_SYS_TRANS_ID    source_72
55137   , l1.PA_SECOND_DIST_ID    source_73
55138   FROM xla_events_gt     xet 
55139   , PA_XLA_BC_PKT_PO_DETAIL_V  l1
55140   , PA_XLA_PROJECT_REF_V  l3
55141   , PA_XLA_TASK_REF_V  l4
55142   , fnd_lookup_values    fvl14
55143  WHERE xet.event_id between x_first_event_id and x_last_event_id
55144    and xet.event_date between p_pad_start_date and p_pad_end_date
55145    and xet.event_class_code = C_EVENT_CLASS_CODE
55146    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
55147  AND l3.project_id=l1.project_id AND l4.task_id=l1.task_id   AND fvl14.lookup_type(+)         = 'BC_PKT_BURDEN_COST_FLAG'
55148   AND fvl14.lookup_code(+)         = l1.BURDEN_COST_FLAG
55149   AND fvl14.view_application_id(+) = 275
55150   AND fvl14.language(+)            = USERENV('LANG')
55151   ;
55152 
55153 --
55154 BEGIN
55155 IF g_log_enabled THEN
55156    l_log_module := C_DEFAULT_MODULE||'.EventClass_88';
55157 END IF;
55158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55159    trace
55160       (p_msg      => 'BEGIN of EventClass_88'
55161       ,p_level    => C_LEVEL_PROCEDURE
55162       ,p_module   => l_log_module);
55163 END IF;
55164 
55165 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55166    trace
55167       (p_msg      => 'p_application_id = '||p_application_id||
55168                      ' - p_base_ledger_id = '||p_base_ledger_id||
55169                      ' - p_target_ledger_id  = '||p_target_ledger_id||
55170                      ' - p_language = '||p_language||
55171                      ' - p_currency_code = '||p_currency_code||
55172                      ' - p_sla_ledger_id = '||p_sla_ledger_id
55173       ,p_level    => C_LEVEL_STATEMENT
55174       ,p_module   => l_log_module);
55175 END IF;
55176 --
55177 -- initialze arrays
55178 --
55179 g_array_event.DELETE;
55180 l_rec_array_event := l_null_rec_array_event;
55181 --
55182 --------------------------------------
55183 -- 4262811 Initialze MPA Line Number
55184 --------------------------------------
55185 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
55186 
55187 --
55188 
55189 --
55190 OPEN header_cur;
55191 --
55192 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55193    trace
55194    (p_msg      => 'SQL - FETCH header_cur'
55195    ,p_level    => C_LEVEL_STATEMENT
55196    ,p_module   => l_log_module);
55197 END IF;
55198 --
55199 LOOP
55200 FETCH header_cur BULK COLLECT INTO
55201         l_array_entity_id
55202       , l_array_legal_entity_id
55203       , l_array_entity_code
55204       , l_array_transaction_num
55205       , l_array_event_id
55206       , l_array_class_code
55207       , l_array_event_type
55208       , l_array_event_number
55209       , l_array_event_date
55210       , l_array_transaction_date
55211       , l_array_reference_num_1
55212       , l_array_reference_num_2
55213       , l_array_reference_num_3
55214       , l_array_reference_num_4
55215       , l_array_reference_char_1
55216       , l_array_reference_char_2
55217       , l_array_reference_char_3
55218       , l_array_reference_char_4
55219       , l_array_reference_date_1
55220       , l_array_reference_date_2
55221       , l_array_reference_date_3
55222       , l_array_reference_date_4
55223       , l_array_event_created_by
55224       , l_array_budgetary_control_flag 
55225       , l_array_source_79
55226       LIMIT l_rows;
55227 --
55228 IF (C_LEVEL_EVENT >= g_log_level) THEN
55229    trace
55230    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
55231    ,p_level    => C_LEVEL_EVENT
55232    ,p_module   => l_log_module);
55233 END IF;
55234 --
55235 EXIT WHEN l_array_entity_id.COUNT = 0;
55236 
55237 -- initialize arrays
55238 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
55239 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
55240 
55241 --
55242 -- Bug 4458708
55243 --
55244 XLA_AE_LINES_PKG.g_LineNumber := 0;
55245 
55246 
55247 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
55248 g_last_hdr_idx := l_array_event_id.LAST;
55249 --
55250 -- loop for the headers. Each iteration is for each header extract row
55251 -- fetched in header cursor
55252 --
55253 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
55254 
55255 --
55256 -- set event info as cache for other routines to refer event attributes
55257 --
55258 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
55259    (p_application_id           => p_application_id
55260    ,p_primary_ledger_id        => p_primary_ledger_id
55261    ,p_base_ledger_id           => p_base_ledger_id
55262    ,p_target_ledger_id         => p_target_ledger_id
55263    ,p_entity_id                => l_array_entity_id(hdr_idx)
55264    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
55265    ,p_entity_code              => l_array_entity_code(hdr_idx)
55266    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
55267    ,p_event_id                 => l_array_event_id(hdr_idx)
55268    ,p_event_class_code         => l_array_class_code(hdr_idx)
55269    ,p_event_type_code          => l_array_event_type(hdr_idx)
55270    ,p_event_number             => l_array_event_number(hdr_idx)
55271    ,p_event_date               => l_array_event_date(hdr_idx)
55272    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
55273    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
55274    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
55275    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
55276    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
55277    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
55278    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
55279    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
55280    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
55281    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
55282    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
55283    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
55284    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
55285    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
55286    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
55287 
55288 --
55289 -- set the status of entry to C_VALID (0)
55290 --
55291 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
55292 
55293 --
55294 -- initialize a row for ae header
55295 --
55296 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
55297 
55298 l_event_id := l_array_event_id(hdr_idx);
55299 
55300 --
55301 -- storing the hdr_idx for event. May be used by line cursor.
55302 --
55303 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
55304 
55305 --
55306 -- store sources from header extract. This can be improved to
55307 -- store only those sources from header extract that may be used in lines
55308 --
55309 
55310 g_array_event(l_event_id).array_value_date('source_79') := l_array_source_79(hdr_idx);
55311 
55312 --
55313 -- initilaize the status of ae headers for diffrent balance types
55314 -- the status is initialised to C_NOT_CREATED (2)
55315 --
55316 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
55317 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
55318 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
55319 
55320 --
55321 -- call api to validate and store accounting attributes for header
55322 --
55323 
55324 ------------------------------------------------------------
55325 -- Accrual Reversal : to get date for Standard Source (NONE)
55326 ------------------------------------------------------------
55327 l_acc_rev_gl_date_source := NULL;
55328 
55329      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
55330       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_79');
55331 
55332 
55333 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
55334 
55335 XLA_AE_HEADER_PKG.SetJeCategoryName;
55336 
55337 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
55338 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
55339 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
55340 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
55341 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
55342 
55343 
55344 -- No header level analytical criteria
55345 
55346 --
55347 --accounting attribute enhancement, bug 3612931
55348 --
55349 l_trx_reversal_source := SUBSTR(NULL, 1,30);
55350 
55351 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
55352    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
55353 
55354    xla_accounting_err_pkg.build_message
55355       (p_appli_s_name            => 'XLA'
55356       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
55357       ,p_token_1                 => 'ACCT_ATTR_NAME'
55358       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
55359       ,p_token_2                 => 'PRODUCT_NAME'
55360       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
55361       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
55362       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
55363       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
55364 
55365 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
55366    --
55367    -- following sets the accounting attributes needed to reverse
55368    -- accounting for a distributeion
55369    --
55370    xla_ae_lines_pkg.SetTrxReversalAttrs
55371       (p_event_id              => l_event_id
55372       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
55373       ,p_trx_reversal_source   => l_trx_reversal_source);
55374 
55375 END IF;
55376 
55377 
55378 ----------------------------------------------------------------
55379 -- 4262811 -  update the header statuses to invalid in need be
55380 ----------------------------------------------------------------
55381 --
55382 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
55383 
55384 
55385   -----------------------------------------------
55386   -- No accrual reversal for the event class/type
55387   -----------------------------------------------
55388 ----------------------------------------------------------------
55389 
55390 --
55391 -- this ends the header loop iteration for one bulk fetch
55392 --
55393 END LOOP;
55394 
55395 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
55396 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
55397 
55398 --
55399 -- insert dummy rows into lines gt table that were created due to
55400 -- transaction reversals
55401 --
55402 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
55403    l_result := XLA_AE_LINES_PKG.InsertLines;
55404 END IF;
55405 
55406 --
55407 -- reset the temp_line_num for each set of events fetched from header
55408 -- cursor rather than doing it for each new event in line cursor
55409 -- Bug 3939231
55410 --
55411 xla_ae_lines_pkg.g_temp_line_num := 0;
55412 
55413 
55414 
55415 --
55416 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
55417 --
55418 --
55419 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55420 
55421       trace
55422          (p_msg      => 'SQL - FETCH line_cur'
55423          ,p_level    => C_LEVEL_STATEMENT
55424          ,p_module   => l_log_module);
55425 
55426 END IF;
55427 --
55428 --
55429 LOOP
55430   --
55431   FETCH line_cur BULK COLLECT INTO
55432         l_array_entity_id
55433       , l_array_legal_entity_id
55434       , l_array_entity_code
55435       , l_array_transaction_num
55436       , l_array_event_id
55437       , l_array_class_code
55438       , l_array_event_type
55439       , l_array_event_number
55440       , l_array_event_date
55441       , l_array_transaction_date
55442       , l_array_reference_num_1
55443       , l_array_reference_num_2
55444       , l_array_reference_num_3
55445       , l_array_reference_num_4
55446       , l_array_reference_char_1
55447       , l_array_reference_char_2
55448       , l_array_reference_char_3
55449       , l_array_reference_char_4
55450       , l_array_reference_date_1
55451       , l_array_reference_date_2
55452       , l_array_reference_date_3
55453       , l_array_reference_date_4
55454       , l_array_event_created_by
55455       , l_array_budgetary_control_flag
55456       , l_array_extract_line_num 
55457       , l_array_source_3
55458       , l_array_source_4
55459       , l_array_source_5
55460       , l_array_source_6
55461       , l_array_source_9
55462       , l_array_source_11
55463       , l_array_source_13
55464       , l_array_source_14
55465       , l_array_source_14_meaning
55466       , l_array_source_15
55467       , l_array_source_16
55468       , l_array_source_17
55469       , l_array_source_18
55470       , l_array_source_19
55471       , l_array_source_20
55472       , l_array_source_21
55473       , l_array_source_22
55474       , l_array_source_23
55475       , l_array_source_24
55476       , l_array_source_25
55477       , l_array_source_26
55478       , l_array_source_27
55479       , l_array_source_28
55480       , l_array_source_29
55481       , l_array_source_30
55482       , l_array_source_31
55483       , l_array_source_32
55484       , l_array_source_33
55485       , l_array_source_34
55486       , l_array_source_35
55487       , l_array_source_36
55488       , l_array_source_37
55489       , l_array_source_38
55490       , l_array_source_39
55491       , l_array_source_40
55492       , l_array_source_41
55493       , l_array_source_42
55494       , l_array_source_43
55495       , l_array_source_44
55496       , l_array_source_45
55497       , l_array_source_46
55498       , l_array_source_68
55499       , l_array_source_69
55500       , l_array_source_70
55501       , l_array_source_71
55502       , l_array_source_72
55503       , l_array_source_73
55504       LIMIT l_rows;
55505 
55506   --
55507   IF (C_LEVEL_EVENT >= g_log_level) THEN
55508             trace
55509                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
55510                ,p_level    => C_LEVEL_EVENT
55511                ,p_module   => l_log_module);
55512   END IF;
55513   --
55514   EXIT WHEN l_array_entity_id.count = 0;
55515 
55516   XLA_AE_LINES_PKG.g_rec_lines := null;
55517 
55518 --
55519 -- Bug 4458708
55520 --
55521 XLA_AE_LINES_PKG.g_LineNumber := 0;
55522 --
55523 --
55524 
55525 FOR Idx IN 1..l_array_event_id.count LOOP
55526    --
55527    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
55528    --
55529    l_event_id := l_array_event_id(idx);  -- 5648433
55530 
55531    --
55532    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
55533    --
55534 
55535    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
55536              (g_array_event(l_event_id).array_value_num('header_index'))
55537          ,'N'
55538          ) <> 'Y'
55539    THEN
55540       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
55541          trace
55542             (p_msg      => 'Trancaction revesal option is not Y '
55543             ,p_level    => C_LEVEL_STATEMENT
55544             ,p_module   => l_log_module);
55545       END IF;
55546 
55547 --
55548 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
55549 --
55550 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
55551 --
55552 -- set event info as cache for other routines to refer event attributes
55553 --
55554 
55555 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
55556    l_previous_event_id := l_event_id;
55557 
55558    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
55559       (p_application_id           => p_application_id
55560       ,p_primary_ledger_id        => p_primary_ledger_id
55561       ,p_base_ledger_id           => p_base_ledger_id
55562       ,p_target_ledger_id         => p_target_ledger_id
55563       ,p_entity_id                => l_array_entity_id(Idx)
55564       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
55565       ,p_entity_code              => l_array_entity_code(Idx)
55566       ,p_transaction_num          => l_array_transaction_num(Idx)
55567       ,p_event_id                 => l_array_event_id(Idx)
55568       ,p_event_class_code         => l_array_class_code(Idx)
55569       ,p_event_type_code          => l_array_event_type(Idx)
55570       ,p_event_number             => l_array_event_number(Idx)
55571       ,p_event_date               => l_array_event_date(Idx)
55572       ,p_transaction_date         => l_array_transaction_date(Idx)
55573       ,p_reference_num_1          => l_array_reference_num_1(Idx)
55574       ,p_reference_num_2          => l_array_reference_num_2(Idx)
55575       ,p_reference_num_3          => l_array_reference_num_3(Idx)
55576       ,p_reference_num_4          => l_array_reference_num_4(Idx)
55577       ,p_reference_char_1         => l_array_reference_char_1(Idx)
55578       ,p_reference_char_2         => l_array_reference_char_2(Idx)
55579       ,p_reference_char_3         => l_array_reference_char_3(Idx)
55580       ,p_reference_char_4         => l_array_reference_char_4(Idx)
55581       ,p_reference_date_1         => l_array_reference_date_1(Idx)
55582       ,p_reference_date_2         => l_array_reference_date_2(Idx)
55583       ,p_reference_date_3         => l_array_reference_date_3(Idx)
55584       ,p_reference_date_4         => l_array_reference_date_4(Idx)
55585       ,p_event_created_by         => l_array_event_created_by(Idx)
55586       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
55587        --
55588 END IF;
55589 
55590 
55591 
55592 --
55593 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
55594 
55595 l_acct_reversal_source := SUBSTR(l_array_source_16(Idx), 1,30);
55596 
55597 IF l_continue_with_lines THEN
55598    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
55599       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
55600 
55601       xla_accounting_err_pkg.build_message
55602          (p_appli_s_name            => 'XLA'
55603          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
55604          ,p_token_1                 => 'LINE_NUMBER'
55605          ,p_value_1                 => l_array_extract_line_num(Idx)
55606          ,p_token_2                 => 'PRODUCT_NAME'
55607          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
55608          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
55609          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
55610          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
55611 
55612    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
55613       --
55614       -- following sets the accounting attributes needed to reverse
55615       -- accounting for a distributeion
55616       --
55617 
55618       --
55619       -- 5217187
55620       --
55621       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
55622       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
55623                                        g_array_event(l_event_id).array_value_num('header_index'));
55624       --
55625       --
55626 
55627       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
55628       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_16(Idx);
55629       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
55630       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_29(Idx);
55631       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
55632       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_6(Idx);
55633       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
55634       l_rec_rev_acct_attrs.array_char_value(5)  := l_array_source_30(Idx);
55635       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ACCT_CLASS';
55636       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_31(Idx);
55637       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_CCID';
55638       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_32(Idx);
55639       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_ENTERED_AMT';
55640       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_33(Idx);
55641       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_CURR';
55642       l_rec_rev_acct_attrs.array_char_value(9)  := l_array_source_34(Idx);
55643       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_LEDGER_AMT';
55644       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_35(Idx);
55645       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ACCT_CLASS';
55646       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_36(Idx);
55647       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
55648       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_37(Idx);
55649       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
55650       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_33(Idx);
55651       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
55652       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_34(Idx);
55653       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
55654       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_35(Idx);
55655       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
55656       l_rec_rev_acct_attrs.array_char_value(16)  := l_array_source_38(Idx);
55657       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_ID1';
55658       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
55659       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'REVERSED_DISTRIBUTION_ID2';
55660       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_6(Idx);
55661       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'REVERSED_DISTRIBUTION_TYPE';
55662       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_30(Idx);
55663       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
55664       l_rec_rev_acct_attrs.array_num_value(20)  := l_array_source_39(Idx);
55665       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
55666       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_40(Idx);
55667 
55668 
55669       xla_ae_lines_pkg.SetAcctReversalAttrs
55670          (p_event_id             => l_event_id
55671          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
55672          ,p_calculate_acctd_flag => l_calculate_acctd_flag
55673          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
55674    END IF;
55675 
55676    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
55677        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
55678 
55679 --
55680 AcctLineType_9 (
55681  p_application_id  => p_application_id
55682  ,p_event_id     => l_event_id
55683  ,p_calculate_acctd_flag => l_calculate_acctd_flag
55684  ,p_calculate_g_l_flag => l_calculate_g_l_flag
55685  ,p_actual_flag => l_actual_flag
55686  ,p_balance_type_code => l_balance_type_code
55687  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
55688  
55689  , p_source_3 => l_array_source_3(Idx)
55690  , p_source_4 => l_array_source_4(Idx)
55691  , p_source_5 => l_array_source_5(Idx)
55692  , p_source_6 => l_array_source_6(Idx)
55693  , p_source_9 => l_array_source_9(Idx)
55694  , p_source_13 => l_array_source_13(Idx)
55695  , p_source_14 => l_array_source_14(Idx)
55696  , p_source_14_meaning => l_array_source_14_meaning(Idx)
55697  , p_source_15 => l_array_source_15(Idx)
55698  , p_source_16 => l_array_source_16(Idx)
55699  , p_source_17 => l_array_source_17(Idx)
55700  , p_source_18 => l_array_source_18(Idx)
55701  , p_source_19 => l_array_source_19(Idx)
55702  , p_source_20 => l_array_source_20(Idx)
55703  , p_source_21 => l_array_source_21(Idx)
55704  , p_source_22 => l_array_source_22(Idx)
55705  , p_source_23 => l_array_source_23(Idx)
55706  , p_source_24 => l_array_source_24(Idx)
55707  , p_source_25 => l_array_source_25(Idx)
55708  , p_source_26 => l_array_source_26(Idx)
55709  , p_source_27 => l_array_source_27(Idx)
55710  , p_source_28 => l_array_source_28(Idx)
55711  , p_source_29 => l_array_source_29(Idx)
55712  , p_source_30 => l_array_source_30(Idx)
55713  , p_source_31 => l_array_source_31(Idx)
55714  , p_source_32 => l_array_source_32(Idx)
55715  , p_source_33 => l_array_source_33(Idx)
55716  , p_source_34 => l_array_source_34(Idx)
55717  , p_source_35 => l_array_source_35(Idx)
55718  , p_source_36 => l_array_source_36(Idx)
55719  , p_source_37 => l_array_source_37(Idx)
55720  , p_source_38 => l_array_source_38(Idx)
55721  , p_source_39 => l_array_source_39(Idx)
55722  , p_source_40 => l_array_source_40(Idx)
55723  );
55724 If(l_balance_type_code = 'A') THEN
55725   l_actual_gain_loss_ref := l_gain_or_loss_ref;
55726 END IF;
55727 
55728 --
55729 
55730 
55731 --
55732 AcctLineType_12 (
55733  p_application_id  => p_application_id
55734  ,p_event_id     => l_event_id
55735  ,p_calculate_acctd_flag => l_calculate_acctd_flag
55736  ,p_calculate_g_l_flag => l_calculate_g_l_flag
55737  ,p_actual_flag => l_actual_flag
55738  ,p_balance_type_code => l_balance_type_code
55739  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
55740  
55741  , p_source_3 => l_array_source_3(Idx)
55742  , p_source_4 => l_array_source_4(Idx)
55743  , p_source_5 => l_array_source_5(Idx)
55744  , p_source_6 => l_array_source_6(Idx)
55745  , p_source_9 => l_array_source_9(Idx)
55746  , p_source_13 => l_array_source_13(Idx)
55747  , p_source_14 => l_array_source_14(Idx)
55748  , p_source_14_meaning => l_array_source_14_meaning(Idx)
55749  , p_source_15 => l_array_source_15(Idx)
55750  , p_source_16 => l_array_source_16(Idx)
55751  , p_source_17 => l_array_source_17(Idx)
55752  , p_source_18 => l_array_source_18(Idx)
55753  , p_source_19 => l_array_source_19(Idx)
55754  , p_source_20 => l_array_source_20(Idx)
55755  , p_source_21 => l_array_source_21(Idx)
55756  , p_source_22 => l_array_source_22(Idx)
55757  , p_source_23 => l_array_source_23(Idx)
55758  , p_source_24 => l_array_source_24(Idx)
55759  , p_source_25 => l_array_source_25(Idx)
55760  , p_source_26 => l_array_source_26(Idx)
55761  , p_source_27 => l_array_source_27(Idx)
55762  , p_source_28 => l_array_source_28(Idx)
55763  , p_source_29 => l_array_source_29(Idx)
55764  , p_source_30 => l_array_source_30(Idx)
55765  , p_source_31 => l_array_source_31(Idx)
55766  , p_source_32 => l_array_source_32(Idx)
55767  , p_source_33 => l_array_source_33(Idx)
55768  , p_source_34 => l_array_source_34(Idx)
55769  , p_source_35 => l_array_source_35(Idx)
55770  , p_source_36 => l_array_source_36(Idx)
55771  , p_source_37 => l_array_source_37(Idx)
55772  , p_source_38 => l_array_source_38(Idx)
55773  , p_source_39 => l_array_source_39(Idx)
55774  , p_source_40 => l_array_source_40(Idx)
55775  );
55776 If(l_balance_type_code = 'A') THEN
55777   l_actual_gain_loss_ref := l_gain_or_loss_ref;
55778 END IF;
55779 
55780 --
55781 
55782 
55783 --
55784 AcctLineType_22 (
55785  p_application_id  => p_application_id
55786  ,p_event_id     => l_event_id
55787  ,p_calculate_acctd_flag => l_calculate_acctd_flag
55788  ,p_calculate_g_l_flag => l_calculate_g_l_flag
55789  ,p_actual_flag => l_actual_flag
55790  ,p_balance_type_code => l_balance_type_code
55791  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
55792  
55793  , p_source_3 => l_array_source_3(Idx)
55794  , p_source_4 => l_array_source_4(Idx)
55795  , p_source_5 => l_array_source_5(Idx)
55796  , p_source_6 => l_array_source_6(Idx)
55797  , p_source_9 => l_array_source_9(Idx)
55798  , p_source_13 => l_array_source_13(Idx)
55799  , p_source_14 => l_array_source_14(Idx)
55800  , p_source_14_meaning => l_array_source_14_meaning(Idx)
55801  , p_source_15 => l_array_source_15(Idx)
55802  , p_source_16 => l_array_source_16(Idx)
55803  , p_source_17 => l_array_source_17(Idx)
55804  , p_source_18 => l_array_source_18(Idx)
55805  , p_source_19 => l_array_source_19(Idx)
55806  , p_source_20 => l_array_source_20(Idx)
55807  , p_source_21 => l_array_source_21(Idx)
55808  , p_source_22 => l_array_source_22(Idx)
55809  , p_source_23 => l_array_source_23(Idx)
55810  , p_source_24 => l_array_source_24(Idx)
55811  , p_source_25 => l_array_source_25(Idx)
55812  , p_source_26 => l_array_source_26(Idx)
55813  , p_source_27 => l_array_source_27(Idx)
55814  , p_source_28 => l_array_source_28(Idx)
55815  , p_source_29 => l_array_source_29(Idx)
55816  , p_source_30 => l_array_source_30(Idx)
55817  , p_source_31 => l_array_source_31(Idx)
55818  , p_source_32 => l_array_source_32(Idx)
55819  , p_source_33 => l_array_source_33(Idx)
55820  , p_source_34 => l_array_source_34(Idx)
55821  , p_source_35 => l_array_source_35(Idx)
55822  , p_source_36 => l_array_source_36(Idx)
55823  , p_source_37 => l_array_source_37(Idx)
55824  , p_source_38 => l_array_source_38(Idx)
55825  , p_source_39 => l_array_source_39(Idx)
55826  , p_source_40 => l_array_source_40(Idx)
55827  );
55828 If(l_balance_type_code = 'A') THEN
55829   l_actual_gain_loss_ref := l_gain_or_loss_ref;
55830 END IF;
55831 
55832 --
55833 
55834 
55835 --
55836 AcctLineType_23 (
55837  p_application_id  => p_application_id
55838  ,p_event_id     => l_event_id
55839  ,p_calculate_acctd_flag => l_calculate_acctd_flag
55840  ,p_calculate_g_l_flag => l_calculate_g_l_flag
55841  ,p_actual_flag => l_actual_flag
55842  ,p_balance_type_code => l_balance_type_code
55843  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
55844  
55845  , p_source_3 => l_array_source_3(Idx)
55846  , p_source_4 => l_array_source_4(Idx)
55847  , p_source_5 => l_array_source_5(Idx)
55848  , p_source_6 => l_array_source_6(Idx)
55849  , p_source_9 => l_array_source_9(Idx)
55850  , p_source_13 => l_array_source_13(Idx)
55851  , p_source_14 => l_array_source_14(Idx)
55852  , p_source_14_meaning => l_array_source_14_meaning(Idx)
55853  , p_source_15 => l_array_source_15(Idx)
55854  , p_source_16 => l_array_source_16(Idx)
55855  , p_source_17 => l_array_source_17(Idx)
55856  , p_source_18 => l_array_source_18(Idx)
55857  , p_source_19 => l_array_source_19(Idx)
55858  , p_source_20 => l_array_source_20(Idx)
55859  , p_source_21 => l_array_source_21(Idx)
55860  , p_source_22 => l_array_source_22(Idx)
55861  , p_source_23 => l_array_source_23(Idx)
55862  , p_source_24 => l_array_source_24(Idx)
55863  , p_source_25 => l_array_source_25(Idx)
55864  , p_source_26 => l_array_source_26(Idx)
55865  , p_source_27 => l_array_source_27(Idx)
55866  , p_source_28 => l_array_source_28(Idx)
55867  , p_source_29 => l_array_source_29(Idx)
55868  , p_source_30 => l_array_source_30(Idx)
55869  , p_source_31 => l_array_source_31(Idx)
55870  , p_source_32 => l_array_source_32(Idx)
55871  , p_source_33 => l_array_source_33(Idx)
55872  , p_source_34 => l_array_source_34(Idx)
55873  , p_source_35 => l_array_source_35(Idx)
55874  , p_source_36 => l_array_source_36(Idx)
55875  , p_source_37 => l_array_source_37(Idx)
55876  , p_source_38 => l_array_source_38(Idx)
55877  , p_source_39 => l_array_source_39(Idx)
55878  , p_source_40 => l_array_source_40(Idx)
55879  );
55880 If(l_balance_type_code = 'A') THEN
55881   l_actual_gain_loss_ref := l_gain_or_loss_ref;
55882 END IF;
55883 
55884 --
55885 
55886 
55887 --
55888 AcctLineType_24 (
55889  p_application_id  => p_application_id
55890  ,p_event_id     => l_event_id
55891  ,p_calculate_acctd_flag => l_calculate_acctd_flag
55892  ,p_calculate_g_l_flag => l_calculate_g_l_flag
55893  ,p_actual_flag => l_actual_flag
55894  ,p_balance_type_code => l_balance_type_code
55895  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
55896  
55897  , p_source_3 => l_array_source_3(Idx)
55898  , p_source_4 => l_array_source_4(Idx)
55899  , p_source_5 => l_array_source_5(Idx)
55900  , p_source_6 => l_array_source_6(Idx)
55901  , p_source_9 => l_array_source_9(Idx)
55902  , p_source_13 => l_array_source_13(Idx)
55903  , p_source_14 => l_array_source_14(Idx)
55904  , p_source_14_meaning => l_array_source_14_meaning(Idx)
55905  , p_source_15 => l_array_source_15(Idx)
55906  , p_source_16 => l_array_source_16(Idx)
55907  , p_source_17 => l_array_source_17(Idx)
55908  , p_source_18 => l_array_source_18(Idx)
55909  , p_source_19 => l_array_source_19(Idx)
55910  , p_source_20 => l_array_source_20(Idx)
55911  , p_source_21 => l_array_source_21(Idx)
55912  , p_source_22 => l_array_source_22(Idx)
55913  , p_source_23 => l_array_source_23(Idx)
55914  , p_source_24 => l_array_source_24(Idx)
55915  , p_source_25 => l_array_source_25(Idx)
55916  , p_source_26 => l_array_source_26(Idx)
55917  , p_source_27 => l_array_source_27(Idx)
55918  , p_source_28 => l_array_source_28(Idx)
55919  , p_source_29 => l_array_source_29(Idx)
55920  , p_source_30 => l_array_source_30(Idx)
55921  , p_source_31 => l_array_source_31(Idx)
55922  , p_source_32 => l_array_source_32(Idx)
55923  , p_source_33 => l_array_source_33(Idx)
55924  , p_source_34 => l_array_source_34(Idx)
55925  , p_source_35 => l_array_source_35(Idx)
55926  , p_source_36 => l_array_source_36(Idx)
55927  , p_source_37 => l_array_source_37(Idx)
55928  , p_source_38 => l_array_source_38(Idx)
55929  , p_source_39 => l_array_source_39(Idx)
55930  , p_source_40 => l_array_source_40(Idx)
55931  );
55932 If(l_balance_type_code = 'A') THEN
55933   l_actual_gain_loss_ref := l_gain_or_loss_ref;
55934 END IF;
55935 
55936 --
55937 
55938 
55939 --
55940 AcctLineType_25 (
55941  p_application_id  => p_application_id
55942  ,p_event_id     => l_event_id
55943  ,p_calculate_acctd_flag => l_calculate_acctd_flag
55944  ,p_calculate_g_l_flag => l_calculate_g_l_flag
55945  ,p_actual_flag => l_actual_flag
55946  ,p_balance_type_code => l_balance_type_code
55947  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
55948  
55949  , p_source_3 => l_array_source_3(Idx)
55950  , p_source_4 => l_array_source_4(Idx)
55951  , p_source_5 => l_array_source_5(Idx)
55952  , p_source_6 => l_array_source_6(Idx)
55953  , p_source_9 => l_array_source_9(Idx)
55954  , p_source_13 => l_array_source_13(Idx)
55955  , p_source_14 => l_array_source_14(Idx)
55956  , p_source_14_meaning => l_array_source_14_meaning(Idx)
55957  , p_source_15 => l_array_source_15(Idx)
55958  , p_source_16 => l_array_source_16(Idx)
55959  , p_source_17 => l_array_source_17(Idx)
55960  , p_source_18 => l_array_source_18(Idx)
55961  , p_source_19 => l_array_source_19(Idx)
55962  , p_source_20 => l_array_source_20(Idx)
55963  , p_source_21 => l_array_source_21(Idx)
55964  , p_source_22 => l_array_source_22(Idx)
55965  , p_source_23 => l_array_source_23(Idx)
55966  , p_source_24 => l_array_source_24(Idx)
55967  , p_source_25 => l_array_source_25(Idx)
55968  , p_source_26 => l_array_source_26(Idx)
55969  , p_source_27 => l_array_source_27(Idx)
55970  , p_source_28 => l_array_source_28(Idx)
55971  , p_source_29 => l_array_source_29(Idx)
55972  , p_source_30 => l_array_source_30(Idx)
55973  , p_source_31 => l_array_source_31(Idx)
55974  , p_source_32 => l_array_source_32(Idx)
55975  , p_source_33 => l_array_source_33(Idx)
55976  , p_source_34 => l_array_source_34(Idx)
55977  , p_source_35 => l_array_source_35(Idx)
55978  , p_source_36 => l_array_source_36(Idx)
55979  , p_source_37 => l_array_source_37(Idx)
55980  , p_source_38 => l_array_source_38(Idx)
55981  , p_source_39 => l_array_source_39(Idx)
55982  , p_source_40 => l_array_source_40(Idx)
55983  );
55984 If(l_balance_type_code = 'A') THEN
55985   l_actual_gain_loss_ref := l_gain_or_loss_ref;
55986 END IF;
55987 
55988 --
55989 
55990 
55991 --
55992 AcctLineType_30 (
55993  p_application_id  => p_application_id
55994  ,p_event_id     => l_event_id
55995  ,p_calculate_acctd_flag => l_calculate_acctd_flag
55996  ,p_calculate_g_l_flag => l_calculate_g_l_flag
55997  ,p_actual_flag => l_actual_flag
55998  ,p_balance_type_code => l_balance_type_code
55999  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56000  
56001  , p_source_3 => l_array_source_3(Idx)
56002  , p_source_4 => l_array_source_4(Idx)
56003  , p_source_5 => l_array_source_5(Idx)
56004  , p_source_6 => l_array_source_6(Idx)
56005  , p_source_9 => l_array_source_9(Idx)
56006  , p_source_13 => l_array_source_13(Idx)
56007  , p_source_14 => l_array_source_14(Idx)
56008  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56009  , p_source_15 => l_array_source_15(Idx)
56010  , p_source_16 => l_array_source_16(Idx)
56011  , p_source_17 => l_array_source_17(Idx)
56012  , p_source_18 => l_array_source_18(Idx)
56013  , p_source_19 => l_array_source_19(Idx)
56014  , p_source_20 => l_array_source_20(Idx)
56015  , p_source_21 => l_array_source_21(Idx)
56016  , p_source_22 => l_array_source_22(Idx)
56017  , p_source_29 => l_array_source_29(Idx)
56018  , p_source_30 => l_array_source_30(Idx)
56019  , p_source_31 => l_array_source_31(Idx)
56020  , p_source_32 => l_array_source_32(Idx)
56021  , p_source_33 => l_array_source_33(Idx)
56022  , p_source_34 => l_array_source_34(Idx)
56023  , p_source_35 => l_array_source_35(Idx)
56024  , p_source_36 => l_array_source_36(Idx)
56025  , p_source_37 => l_array_source_37(Idx)
56026  , p_source_38 => l_array_source_38(Idx)
56027  , p_source_39 => l_array_source_39(Idx)
56028  , p_source_40 => l_array_source_40(Idx)
56029  , p_source_41 => l_array_source_41(Idx)
56030  , p_source_42 => l_array_source_42(Idx)
56031  , p_source_43 => l_array_source_43(Idx)
56032  , p_source_44 => l_array_source_44(Idx)
56033  , p_source_45 => l_array_source_45(Idx)
56034  , p_source_46 => l_array_source_46(Idx)
56035  );
56036 If(l_balance_type_code = 'A') THEN
56037   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56038 END IF;
56039 
56040 --
56041 
56042 
56043 --
56044 AcctLineType_31 (
56045  p_application_id  => p_application_id
56046  ,p_event_id     => l_event_id
56047  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56048  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56049  ,p_actual_flag => l_actual_flag
56050  ,p_balance_type_code => l_balance_type_code
56051  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56052  
56053  , p_source_3 => l_array_source_3(Idx)
56054  , p_source_4 => l_array_source_4(Idx)
56055  , p_source_5 => l_array_source_5(Idx)
56056  , p_source_6 => l_array_source_6(Idx)
56057  , p_source_9 => l_array_source_9(Idx)
56058  , p_source_13 => l_array_source_13(Idx)
56059  , p_source_14 => l_array_source_14(Idx)
56060  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56061  , p_source_15 => l_array_source_15(Idx)
56062  , p_source_16 => l_array_source_16(Idx)
56063  , p_source_17 => l_array_source_17(Idx)
56064  , p_source_18 => l_array_source_18(Idx)
56065  , p_source_19 => l_array_source_19(Idx)
56066  , p_source_20 => l_array_source_20(Idx)
56067  , p_source_21 => l_array_source_21(Idx)
56068  , p_source_22 => l_array_source_22(Idx)
56069  , p_source_29 => l_array_source_29(Idx)
56070  , p_source_30 => l_array_source_30(Idx)
56071  , p_source_31 => l_array_source_31(Idx)
56072  , p_source_32 => l_array_source_32(Idx)
56073  , p_source_33 => l_array_source_33(Idx)
56074  , p_source_34 => l_array_source_34(Idx)
56075  , p_source_35 => l_array_source_35(Idx)
56076  , p_source_36 => l_array_source_36(Idx)
56077  , p_source_37 => l_array_source_37(Idx)
56078  , p_source_38 => l_array_source_38(Idx)
56079  , p_source_39 => l_array_source_39(Idx)
56080  , p_source_40 => l_array_source_40(Idx)
56081  , p_source_41 => l_array_source_41(Idx)
56082  , p_source_42 => l_array_source_42(Idx)
56083  , p_source_43 => l_array_source_43(Idx)
56084  , p_source_44 => l_array_source_44(Idx)
56085  , p_source_45 => l_array_source_45(Idx)
56086  , p_source_46 => l_array_source_46(Idx)
56087  );
56088 If(l_balance_type_code = 'A') THEN
56089   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56090 END IF;
56091 
56092 --
56093 
56094 
56095 --
56096 AcctLineType_32 (
56097  p_application_id  => p_application_id
56098  ,p_event_id     => l_event_id
56099  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56100  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56101  ,p_actual_flag => l_actual_flag
56102  ,p_balance_type_code => l_balance_type_code
56103  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56104  
56105  , p_source_3 => l_array_source_3(Idx)
56106  , p_source_4 => l_array_source_4(Idx)
56107  , p_source_5 => l_array_source_5(Idx)
56108  , p_source_6 => l_array_source_6(Idx)
56109  , p_source_9 => l_array_source_9(Idx)
56110  , p_source_13 => l_array_source_13(Idx)
56111  , p_source_14 => l_array_source_14(Idx)
56112  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56113  , p_source_15 => l_array_source_15(Idx)
56114  , p_source_16 => l_array_source_16(Idx)
56115  , p_source_17 => l_array_source_17(Idx)
56116  , p_source_18 => l_array_source_18(Idx)
56117  , p_source_19 => l_array_source_19(Idx)
56118  , p_source_20 => l_array_source_20(Idx)
56119  , p_source_21 => l_array_source_21(Idx)
56120  , p_source_22 => l_array_source_22(Idx)
56121  , p_source_29 => l_array_source_29(Idx)
56122  , p_source_30 => l_array_source_30(Idx)
56123  , p_source_31 => l_array_source_31(Idx)
56124  , p_source_32 => l_array_source_32(Idx)
56125  , p_source_33 => l_array_source_33(Idx)
56126  , p_source_34 => l_array_source_34(Idx)
56127  , p_source_35 => l_array_source_35(Idx)
56128  , p_source_36 => l_array_source_36(Idx)
56129  , p_source_37 => l_array_source_37(Idx)
56130  , p_source_38 => l_array_source_38(Idx)
56131  , p_source_39 => l_array_source_39(Idx)
56132  , p_source_40 => l_array_source_40(Idx)
56133  , p_source_41 => l_array_source_41(Idx)
56134  , p_source_42 => l_array_source_42(Idx)
56135  , p_source_43 => l_array_source_43(Idx)
56136  , p_source_44 => l_array_source_44(Idx)
56137  , p_source_45 => l_array_source_45(Idx)
56138  , p_source_46 => l_array_source_46(Idx)
56139  );
56140 If(l_balance_type_code = 'A') THEN
56141   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56142 END IF;
56143 
56144 --
56145 
56146 
56147 --
56148 AcctLineType_33 (
56149  p_application_id  => p_application_id
56150  ,p_event_id     => l_event_id
56151  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56152  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56153  ,p_actual_flag => l_actual_flag
56154  ,p_balance_type_code => l_balance_type_code
56155  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56156  
56157  , p_source_3 => l_array_source_3(Idx)
56158  , p_source_4 => l_array_source_4(Idx)
56159  , p_source_5 => l_array_source_5(Idx)
56160  , p_source_6 => l_array_source_6(Idx)
56161  , p_source_9 => l_array_source_9(Idx)
56162  , p_source_13 => l_array_source_13(Idx)
56163  , p_source_14 => l_array_source_14(Idx)
56164  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56165  , p_source_15 => l_array_source_15(Idx)
56166  , p_source_16 => l_array_source_16(Idx)
56167  , p_source_17 => l_array_source_17(Idx)
56168  , p_source_18 => l_array_source_18(Idx)
56169  , p_source_19 => l_array_source_19(Idx)
56170  , p_source_20 => l_array_source_20(Idx)
56171  , p_source_21 => l_array_source_21(Idx)
56172  , p_source_22 => l_array_source_22(Idx)
56173  , p_source_29 => l_array_source_29(Idx)
56174  , p_source_30 => l_array_source_30(Idx)
56175  , p_source_31 => l_array_source_31(Idx)
56176  , p_source_32 => l_array_source_32(Idx)
56177  , p_source_33 => l_array_source_33(Idx)
56178  , p_source_34 => l_array_source_34(Idx)
56179  , p_source_35 => l_array_source_35(Idx)
56180  , p_source_36 => l_array_source_36(Idx)
56181  , p_source_37 => l_array_source_37(Idx)
56182  , p_source_38 => l_array_source_38(Idx)
56183  , p_source_39 => l_array_source_39(Idx)
56184  , p_source_40 => l_array_source_40(Idx)
56185  , p_source_41 => l_array_source_41(Idx)
56186  , p_source_42 => l_array_source_42(Idx)
56187  , p_source_43 => l_array_source_43(Idx)
56188  , p_source_44 => l_array_source_44(Idx)
56189  , p_source_45 => l_array_source_45(Idx)
56190  , p_source_46 => l_array_source_46(Idx)
56191  );
56192 If(l_balance_type_code = 'A') THEN
56193   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56194 END IF;
56195 
56196 --
56197 
56198 
56199 --
56200 AcctLineType_39 (
56201  p_application_id  => p_application_id
56202  ,p_event_id     => l_event_id
56203  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56204  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56205  ,p_actual_flag => l_actual_flag
56206  ,p_balance_type_code => l_balance_type_code
56207  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56208  
56209  , p_source_3 => l_array_source_3(Idx)
56210  , p_source_4 => l_array_source_4(Idx)
56211  , p_source_5 => l_array_source_5(Idx)
56212  , p_source_6 => l_array_source_6(Idx)
56213  , p_source_9 => l_array_source_9(Idx)
56214  , p_source_13 => l_array_source_13(Idx)
56215  , p_source_14 => l_array_source_14(Idx)
56216  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56217  , p_source_15 => l_array_source_15(Idx)
56218  , p_source_16 => l_array_source_16(Idx)
56219  , p_source_17 => l_array_source_17(Idx)
56220  , p_source_18 => l_array_source_18(Idx)
56221  , p_source_19 => l_array_source_19(Idx)
56222  , p_source_20 => l_array_source_20(Idx)
56223  , p_source_21 => l_array_source_21(Idx)
56224  , p_source_22 => l_array_source_22(Idx)
56225  , p_source_23 => l_array_source_23(Idx)
56226  , p_source_24 => l_array_source_24(Idx)
56227  , p_source_25 => l_array_source_25(Idx)
56228  , p_source_26 => l_array_source_26(Idx)
56229  , p_source_27 => l_array_source_27(Idx)
56230  , p_source_28 => l_array_source_28(Idx)
56231  , p_source_29 => l_array_source_29(Idx)
56232  , p_source_30 => l_array_source_30(Idx)
56233  , p_source_31 => l_array_source_31(Idx)
56234  , p_source_32 => l_array_source_32(Idx)
56235  , p_source_33 => l_array_source_33(Idx)
56236  , p_source_34 => l_array_source_34(Idx)
56237  , p_source_35 => l_array_source_35(Idx)
56238  , p_source_36 => l_array_source_36(Idx)
56239  , p_source_37 => l_array_source_37(Idx)
56240  , p_source_38 => l_array_source_38(Idx)
56241  , p_source_39 => l_array_source_39(Idx)
56242  , p_source_40 => l_array_source_40(Idx)
56243  );
56244 If(l_balance_type_code = 'A') THEN
56245   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56246 END IF;
56247 
56248 --
56249 
56250 
56251 --
56252 AcctLineType_41 (
56253  p_application_id  => p_application_id
56254  ,p_event_id     => l_event_id
56255  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56256  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56257  ,p_actual_flag => l_actual_flag
56258  ,p_balance_type_code => l_balance_type_code
56259  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56260  
56261  , p_source_3 => l_array_source_3(Idx)
56262  , p_source_4 => l_array_source_4(Idx)
56263  , p_source_5 => l_array_source_5(Idx)
56264  , p_source_6 => l_array_source_6(Idx)
56265  , p_source_9 => l_array_source_9(Idx)
56266  , p_source_13 => l_array_source_13(Idx)
56267  , p_source_14 => l_array_source_14(Idx)
56268  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56269  , p_source_15 => l_array_source_15(Idx)
56270  , p_source_16 => l_array_source_16(Idx)
56271  , p_source_17 => l_array_source_17(Idx)
56272  , p_source_18 => l_array_source_18(Idx)
56273  , p_source_19 => l_array_source_19(Idx)
56274  , p_source_20 => l_array_source_20(Idx)
56275  , p_source_21 => l_array_source_21(Idx)
56276  , p_source_22 => l_array_source_22(Idx)
56277  , p_source_29 => l_array_source_29(Idx)
56278  , p_source_30 => l_array_source_30(Idx)
56279  , p_source_31 => l_array_source_31(Idx)
56280  , p_source_32 => l_array_source_32(Idx)
56281  , p_source_33 => l_array_source_33(Idx)
56282  , p_source_34 => l_array_source_34(Idx)
56283  , p_source_35 => l_array_source_35(Idx)
56284  , p_source_36 => l_array_source_36(Idx)
56285  , p_source_37 => l_array_source_37(Idx)
56286  , p_source_38 => l_array_source_38(Idx)
56287  , p_source_39 => l_array_source_39(Idx)
56288  , p_source_40 => l_array_source_40(Idx)
56289  , p_source_41 => l_array_source_41(Idx)
56290  , p_source_42 => l_array_source_42(Idx)
56291  , p_source_43 => l_array_source_43(Idx)
56292  , p_source_44 => l_array_source_44(Idx)
56293  , p_source_45 => l_array_source_45(Idx)
56294  , p_source_46 => l_array_source_46(Idx)
56295  );
56296 If(l_balance_type_code = 'A') THEN
56297   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56298 END IF;
56299 
56300 --
56301 
56302 
56303 --
56304 AcctLineType_42 (
56305  p_application_id  => p_application_id
56306  ,p_event_id     => l_event_id
56307  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56308  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56309  ,p_actual_flag => l_actual_flag
56310  ,p_balance_type_code => l_balance_type_code
56311  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56312  
56313  , p_source_3 => l_array_source_3(Idx)
56314  , p_source_4 => l_array_source_4(Idx)
56315  , p_source_5 => l_array_source_5(Idx)
56316  , p_source_6 => l_array_source_6(Idx)
56317  , p_source_9 => l_array_source_9(Idx)
56318  , p_source_13 => l_array_source_13(Idx)
56319  , p_source_14 => l_array_source_14(Idx)
56320  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56321  , p_source_15 => l_array_source_15(Idx)
56322  , p_source_16 => l_array_source_16(Idx)
56323  , p_source_17 => l_array_source_17(Idx)
56324  , p_source_18 => l_array_source_18(Idx)
56325  , p_source_19 => l_array_source_19(Idx)
56326  , p_source_20 => l_array_source_20(Idx)
56327  , p_source_21 => l_array_source_21(Idx)
56328  , p_source_22 => l_array_source_22(Idx)
56329  , p_source_23 => l_array_source_23(Idx)
56330  , p_source_24 => l_array_source_24(Idx)
56331  , p_source_25 => l_array_source_25(Idx)
56332  , p_source_26 => l_array_source_26(Idx)
56333  , p_source_27 => l_array_source_27(Idx)
56334  , p_source_28 => l_array_source_28(Idx)
56335  , p_source_29 => l_array_source_29(Idx)
56336  , p_source_30 => l_array_source_30(Idx)
56337  , p_source_31 => l_array_source_31(Idx)
56338  , p_source_32 => l_array_source_32(Idx)
56339  , p_source_33 => l_array_source_33(Idx)
56340  , p_source_34 => l_array_source_34(Idx)
56341  , p_source_35 => l_array_source_35(Idx)
56342  , p_source_36 => l_array_source_36(Idx)
56343  , p_source_37 => l_array_source_37(Idx)
56344  , p_source_38 => l_array_source_38(Idx)
56345  , p_source_39 => l_array_source_39(Idx)
56346  , p_source_40 => l_array_source_40(Idx)
56347  );
56348 If(l_balance_type_code = 'A') THEN
56349   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56350 END IF;
56351 
56352 --
56353 
56354 
56355 --
56356 AcctLineType_44 (
56357  p_application_id  => p_application_id
56358  ,p_event_id     => l_event_id
56359  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56360  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56361  ,p_actual_flag => l_actual_flag
56362  ,p_balance_type_code => l_balance_type_code
56363  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56364  
56365  , p_source_3 => l_array_source_3(Idx)
56366  , p_source_4 => l_array_source_4(Idx)
56367  , p_source_5 => l_array_source_5(Idx)
56368  , p_source_6 => l_array_source_6(Idx)
56369  , p_source_9 => l_array_source_9(Idx)
56370  , p_source_13 => l_array_source_13(Idx)
56371  , p_source_14 => l_array_source_14(Idx)
56372  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56373  , p_source_15 => l_array_source_15(Idx)
56374  , p_source_16 => l_array_source_16(Idx)
56375  , p_source_17 => l_array_source_17(Idx)
56376  , p_source_18 => l_array_source_18(Idx)
56377  , p_source_19 => l_array_source_19(Idx)
56378  , p_source_20 => l_array_source_20(Idx)
56379  , p_source_21 => l_array_source_21(Idx)
56380  , p_source_22 => l_array_source_22(Idx)
56381  , p_source_29 => l_array_source_29(Idx)
56382  , p_source_30 => l_array_source_30(Idx)
56383  , p_source_31 => l_array_source_31(Idx)
56384  , p_source_32 => l_array_source_32(Idx)
56385  , p_source_33 => l_array_source_33(Idx)
56386  , p_source_34 => l_array_source_34(Idx)
56387  , p_source_35 => l_array_source_35(Idx)
56388  , p_source_36 => l_array_source_36(Idx)
56389  , p_source_37 => l_array_source_37(Idx)
56390  , p_source_38 => l_array_source_38(Idx)
56391  , p_source_39 => l_array_source_39(Idx)
56392  , p_source_40 => l_array_source_40(Idx)
56393  , p_source_41 => l_array_source_41(Idx)
56394  , p_source_42 => l_array_source_42(Idx)
56395  , p_source_43 => l_array_source_43(Idx)
56396  , p_source_44 => l_array_source_44(Idx)
56397  , p_source_45 => l_array_source_45(Idx)
56398  , p_source_46 => l_array_source_46(Idx)
56399  );
56400 If(l_balance_type_code = 'A') THEN
56401   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56402 END IF;
56403 
56404 --
56405 
56406 
56407 --
56408 AcctLineType_46 (
56409  p_application_id  => p_application_id
56410  ,p_event_id     => l_event_id
56411  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56412  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56413  ,p_actual_flag => l_actual_flag
56414  ,p_balance_type_code => l_balance_type_code
56415  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56416  
56417  , p_source_3 => l_array_source_3(Idx)
56418  , p_source_4 => l_array_source_4(Idx)
56419  , p_source_5 => l_array_source_5(Idx)
56420  , p_source_6 => l_array_source_6(Idx)
56421  , p_source_13 => l_array_source_13(Idx)
56422  , p_source_16 => l_array_source_16(Idx)
56423  , p_source_17 => l_array_source_17(Idx)
56424  , p_source_18 => l_array_source_18(Idx)
56425  , p_source_19 => l_array_source_19(Idx)
56426  , p_source_20 => l_array_source_20(Idx)
56427  , p_source_21 => l_array_source_21(Idx)
56428  , p_source_22 => l_array_source_22(Idx)
56429  , p_source_29 => l_array_source_29(Idx)
56430  , p_source_30 => l_array_source_30(Idx)
56431  , p_source_31 => l_array_source_31(Idx)
56432  , p_source_32 => l_array_source_32(Idx)
56433  , p_source_33 => l_array_source_33(Idx)
56434  , p_source_34 => l_array_source_34(Idx)
56435  , p_source_35 => l_array_source_35(Idx)
56436  , p_source_36 => l_array_source_36(Idx)
56437  , p_source_37 => l_array_source_37(Idx)
56438  , p_source_38 => l_array_source_38(Idx)
56439  , p_source_39 => l_array_source_39(Idx)
56440  , p_source_40 => l_array_source_40(Idx)
56441  , p_source_68 => l_array_source_68(Idx)
56442  , p_source_69 => l_array_source_69(Idx)
56443  , p_source_70 => l_array_source_70(Idx)
56444  , p_source_71 => l_array_source_71(Idx)
56445  , p_source_72 => l_array_source_72(Idx)
56446  , p_source_73 => l_array_source_73(Idx)
56447  );
56448 If(l_balance_type_code = 'A') THEN
56449   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56450 END IF;
56451 
56452 --
56453 
56454 
56455 --
56456 AcctLineType_54 (
56457  p_application_id  => p_application_id
56458  ,p_event_id     => l_event_id
56459  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56460  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56461  ,p_actual_flag => l_actual_flag
56462  ,p_balance_type_code => l_balance_type_code
56463  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56464  
56465  , p_source_3 => l_array_source_3(Idx)
56466  , p_source_4 => l_array_source_4(Idx)
56467  , p_source_5 => l_array_source_5(Idx)
56468  , p_source_6 => l_array_source_6(Idx)
56469  , p_source_9 => l_array_source_9(Idx)
56470  , p_source_11 => l_array_source_11(Idx)
56471  , p_source_13 => l_array_source_13(Idx)
56472  , p_source_14 => l_array_source_14(Idx)
56473  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56474  , p_source_15 => l_array_source_15(Idx)
56475  , p_source_16 => l_array_source_16(Idx)
56476  , p_source_17 => l_array_source_17(Idx)
56477  , p_source_18 => l_array_source_18(Idx)
56478  , p_source_19 => l_array_source_19(Idx)
56479  , p_source_20 => l_array_source_20(Idx)
56480  , p_source_21 => l_array_source_21(Idx)
56481  , p_source_22 => l_array_source_22(Idx)
56482  , p_source_23 => l_array_source_23(Idx)
56483  , p_source_24 => l_array_source_24(Idx)
56484  , p_source_25 => l_array_source_25(Idx)
56485  , p_source_26 => l_array_source_26(Idx)
56486  , p_source_27 => l_array_source_27(Idx)
56487  , p_source_28 => l_array_source_28(Idx)
56488  , p_source_29 => l_array_source_29(Idx)
56489  , p_source_30 => l_array_source_30(Idx)
56490  , p_source_31 => l_array_source_31(Idx)
56491  , p_source_32 => l_array_source_32(Idx)
56492  , p_source_33 => l_array_source_33(Idx)
56493  , p_source_34 => l_array_source_34(Idx)
56494  , p_source_35 => l_array_source_35(Idx)
56495  , p_source_36 => l_array_source_36(Idx)
56496  , p_source_37 => l_array_source_37(Idx)
56497  , p_source_38 => l_array_source_38(Idx)
56498  , p_source_39 => l_array_source_39(Idx)
56499  , p_source_40 => l_array_source_40(Idx)
56500  );
56501 If(l_balance_type_code = 'A') THEN
56502   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56503 END IF;
56504 
56505 --
56506 
56507 
56508 --
56509 AcctLineType_55 (
56510  p_application_id  => p_application_id
56511  ,p_event_id     => l_event_id
56512  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56513  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56514  ,p_actual_flag => l_actual_flag
56515  ,p_balance_type_code => l_balance_type_code
56516  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56517  
56518  , p_source_3 => l_array_source_3(Idx)
56519  , p_source_4 => l_array_source_4(Idx)
56520  , p_source_5 => l_array_source_5(Idx)
56521  , p_source_6 => l_array_source_6(Idx)
56522  , p_source_9 => l_array_source_9(Idx)
56523  , p_source_11 => l_array_source_11(Idx)
56524  , p_source_13 => l_array_source_13(Idx)
56525  , p_source_14 => l_array_source_14(Idx)
56526  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56527  , p_source_15 => l_array_source_15(Idx)
56528  , p_source_16 => l_array_source_16(Idx)
56529  , p_source_17 => l_array_source_17(Idx)
56530  , p_source_18 => l_array_source_18(Idx)
56531  , p_source_19 => l_array_source_19(Idx)
56532  , p_source_20 => l_array_source_20(Idx)
56533  , p_source_21 => l_array_source_21(Idx)
56534  , p_source_22 => l_array_source_22(Idx)
56535  , p_source_23 => l_array_source_23(Idx)
56536  , p_source_24 => l_array_source_24(Idx)
56537  , p_source_25 => l_array_source_25(Idx)
56538  , p_source_26 => l_array_source_26(Idx)
56539  , p_source_27 => l_array_source_27(Idx)
56540  , p_source_28 => l_array_source_28(Idx)
56541  , p_source_29 => l_array_source_29(Idx)
56542  , p_source_30 => l_array_source_30(Idx)
56543  , p_source_31 => l_array_source_31(Idx)
56544  , p_source_32 => l_array_source_32(Idx)
56545  , p_source_33 => l_array_source_33(Idx)
56546  , p_source_34 => l_array_source_34(Idx)
56547  , p_source_35 => l_array_source_35(Idx)
56548  , p_source_36 => l_array_source_36(Idx)
56549  , p_source_37 => l_array_source_37(Idx)
56550  , p_source_38 => l_array_source_38(Idx)
56551  , p_source_39 => l_array_source_39(Idx)
56552  , p_source_40 => l_array_source_40(Idx)
56553  );
56554 If(l_balance_type_code = 'A') THEN
56555   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56556 END IF;
56557 
56558 --
56559 
56560 
56561 --
56562 AcctLineType_61 (
56563  p_application_id  => p_application_id
56564  ,p_event_id     => l_event_id
56565  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56566  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56567  ,p_actual_flag => l_actual_flag
56568  ,p_balance_type_code => l_balance_type_code
56569  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56570  
56571  , p_source_3 => l_array_source_3(Idx)
56572  , p_source_4 => l_array_source_4(Idx)
56573  , p_source_5 => l_array_source_5(Idx)
56574  , p_source_6 => l_array_source_6(Idx)
56575  , p_source_9 => l_array_source_9(Idx)
56576  , p_source_11 => l_array_source_11(Idx)
56577  , p_source_13 => l_array_source_13(Idx)
56578  , p_source_14 => l_array_source_14(Idx)
56579  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56580  , p_source_15 => l_array_source_15(Idx)
56581  , p_source_16 => l_array_source_16(Idx)
56582  , p_source_17 => l_array_source_17(Idx)
56583  , p_source_18 => l_array_source_18(Idx)
56584  , p_source_19 => l_array_source_19(Idx)
56585  , p_source_20 => l_array_source_20(Idx)
56586  , p_source_21 => l_array_source_21(Idx)
56587  , p_source_22 => l_array_source_22(Idx)
56588  , p_source_23 => l_array_source_23(Idx)
56589  , p_source_24 => l_array_source_24(Idx)
56590  , p_source_25 => l_array_source_25(Idx)
56591  , p_source_26 => l_array_source_26(Idx)
56592  , p_source_27 => l_array_source_27(Idx)
56593  , p_source_28 => l_array_source_28(Idx)
56594  , p_source_29 => l_array_source_29(Idx)
56595  , p_source_30 => l_array_source_30(Idx)
56596  , p_source_31 => l_array_source_31(Idx)
56597  , p_source_32 => l_array_source_32(Idx)
56598  , p_source_33 => l_array_source_33(Idx)
56599  , p_source_34 => l_array_source_34(Idx)
56600  , p_source_35 => l_array_source_35(Idx)
56601  , p_source_36 => l_array_source_36(Idx)
56602  , p_source_37 => l_array_source_37(Idx)
56603  , p_source_38 => l_array_source_38(Idx)
56604  , p_source_39 => l_array_source_39(Idx)
56605  , p_source_40 => l_array_source_40(Idx)
56606  );
56607 If(l_balance_type_code = 'A') THEN
56608   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56609 END IF;
56610 
56611 --
56612 
56613 
56614 --
56615 AcctLineType_64 (
56616  p_application_id  => p_application_id
56617  ,p_event_id     => l_event_id
56618  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56619  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56620  ,p_actual_flag => l_actual_flag
56621  ,p_balance_type_code => l_balance_type_code
56622  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56623  
56624  , p_source_3 => l_array_source_3(Idx)
56625  , p_source_4 => l_array_source_4(Idx)
56626  , p_source_5 => l_array_source_5(Idx)
56627  , p_source_6 => l_array_source_6(Idx)
56628  , p_source_9 => l_array_source_9(Idx)
56629  , p_source_11 => l_array_source_11(Idx)
56630  , p_source_13 => l_array_source_13(Idx)
56631  , p_source_14 => l_array_source_14(Idx)
56632  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56633  , p_source_15 => l_array_source_15(Idx)
56634  , p_source_16 => l_array_source_16(Idx)
56635  , p_source_17 => l_array_source_17(Idx)
56636  , p_source_18 => l_array_source_18(Idx)
56637  , p_source_19 => l_array_source_19(Idx)
56638  , p_source_20 => l_array_source_20(Idx)
56639  , p_source_21 => l_array_source_21(Idx)
56640  , p_source_22 => l_array_source_22(Idx)
56641  , p_source_23 => l_array_source_23(Idx)
56642  , p_source_24 => l_array_source_24(Idx)
56643  , p_source_25 => l_array_source_25(Idx)
56644  , p_source_26 => l_array_source_26(Idx)
56645  , p_source_27 => l_array_source_27(Idx)
56646  , p_source_28 => l_array_source_28(Idx)
56647  , p_source_29 => l_array_source_29(Idx)
56648  , p_source_30 => l_array_source_30(Idx)
56649  , p_source_31 => l_array_source_31(Idx)
56650  , p_source_32 => l_array_source_32(Idx)
56651  , p_source_33 => l_array_source_33(Idx)
56652  , p_source_34 => l_array_source_34(Idx)
56653  , p_source_35 => l_array_source_35(Idx)
56654  , p_source_36 => l_array_source_36(Idx)
56655  , p_source_37 => l_array_source_37(Idx)
56656  , p_source_38 => l_array_source_38(Idx)
56657  , p_source_39 => l_array_source_39(Idx)
56658  , p_source_40 => l_array_source_40(Idx)
56659  );
56660 If(l_balance_type_code = 'A') THEN
56661   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56662 END IF;
56663 
56664 --
56665 
56666 
56667 --
56668 AcctLineType_68 (
56669  p_application_id  => p_application_id
56670  ,p_event_id     => l_event_id
56671  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56672  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56673  ,p_actual_flag => l_actual_flag
56674  ,p_balance_type_code => l_balance_type_code
56675  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56676  
56677  , p_source_3 => l_array_source_3(Idx)
56678  , p_source_4 => l_array_source_4(Idx)
56679  , p_source_5 => l_array_source_5(Idx)
56680  , p_source_6 => l_array_source_6(Idx)
56681  , p_source_13 => l_array_source_13(Idx)
56682  , p_source_16 => l_array_source_16(Idx)
56683  , p_source_17 => l_array_source_17(Idx)
56684  , p_source_18 => l_array_source_18(Idx)
56685  , p_source_19 => l_array_source_19(Idx)
56686  , p_source_20 => l_array_source_20(Idx)
56687  , p_source_21 => l_array_source_21(Idx)
56688  , p_source_22 => l_array_source_22(Idx)
56689  , p_source_29 => l_array_source_29(Idx)
56690  , p_source_30 => l_array_source_30(Idx)
56691  , p_source_31 => l_array_source_31(Idx)
56692  , p_source_32 => l_array_source_32(Idx)
56693  , p_source_33 => l_array_source_33(Idx)
56694  , p_source_34 => l_array_source_34(Idx)
56695  , p_source_35 => l_array_source_35(Idx)
56696  , p_source_36 => l_array_source_36(Idx)
56697  , p_source_37 => l_array_source_37(Idx)
56698  , p_source_38 => l_array_source_38(Idx)
56699  , p_source_39 => l_array_source_39(Idx)
56700  , p_source_40 => l_array_source_40(Idx)
56701  , p_source_68 => l_array_source_68(Idx)
56702  , p_source_69 => l_array_source_69(Idx)
56703  , p_source_70 => l_array_source_70(Idx)
56704  , p_source_71 => l_array_source_71(Idx)
56705  , p_source_72 => l_array_source_72(Idx)
56706  , p_source_73 => l_array_source_73(Idx)
56707  );
56708 If(l_balance_type_code = 'A') THEN
56709   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56710 END IF;
56711 
56712 --
56713 
56714 
56715 --
56716 AcctLineType_80 (
56717  p_application_id  => p_application_id
56718  ,p_event_id     => l_event_id
56719  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56720  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56721  ,p_actual_flag => l_actual_flag
56722  ,p_balance_type_code => l_balance_type_code
56723  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56724  
56725  , p_source_3 => l_array_source_3(Idx)
56726  , p_source_4 => l_array_source_4(Idx)
56727  , p_source_5 => l_array_source_5(Idx)
56728  , p_source_6 => l_array_source_6(Idx)
56729  , p_source_9 => l_array_source_9(Idx)
56730  , p_source_13 => l_array_source_13(Idx)
56731  , p_source_14 => l_array_source_14(Idx)
56732  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56733  , p_source_15 => l_array_source_15(Idx)
56734  , p_source_16 => l_array_source_16(Idx)
56735  , p_source_17 => l_array_source_17(Idx)
56736  , p_source_18 => l_array_source_18(Idx)
56737  , p_source_19 => l_array_source_19(Idx)
56738  , p_source_20 => l_array_source_20(Idx)
56739  , p_source_21 => l_array_source_21(Idx)
56740  , p_source_22 => l_array_source_22(Idx)
56741  , p_source_23 => l_array_source_23(Idx)
56742  , p_source_24 => l_array_source_24(Idx)
56743  , p_source_25 => l_array_source_25(Idx)
56744  , p_source_26 => l_array_source_26(Idx)
56745  , p_source_27 => l_array_source_27(Idx)
56746  , p_source_28 => l_array_source_28(Idx)
56747  , p_source_29 => l_array_source_29(Idx)
56748  , p_source_30 => l_array_source_30(Idx)
56749  , p_source_31 => l_array_source_31(Idx)
56750  , p_source_32 => l_array_source_32(Idx)
56751  , p_source_33 => l_array_source_33(Idx)
56752  , p_source_34 => l_array_source_34(Idx)
56753  , p_source_35 => l_array_source_35(Idx)
56754  , p_source_36 => l_array_source_36(Idx)
56755  , p_source_37 => l_array_source_37(Idx)
56756  , p_source_38 => l_array_source_38(Idx)
56757  , p_source_39 => l_array_source_39(Idx)
56758  , p_source_40 => l_array_source_40(Idx)
56759  );
56760 If(l_balance_type_code = 'A') THEN
56761   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56762 END IF;
56763 
56764 --
56765 
56766 
56767 --
56768 AcctLineType_83 (
56769  p_application_id  => p_application_id
56770  ,p_event_id     => l_event_id
56771  ,p_calculate_acctd_flag => l_calculate_acctd_flag
56772  ,p_calculate_g_l_flag => l_calculate_g_l_flag
56773  ,p_actual_flag => l_actual_flag
56774  ,p_balance_type_code => l_balance_type_code
56775  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
56776  
56777  , p_source_3 => l_array_source_3(Idx)
56778  , p_source_4 => l_array_source_4(Idx)
56779  , p_source_5 => l_array_source_5(Idx)
56780  , p_source_6 => l_array_source_6(Idx)
56781  , p_source_9 => l_array_source_9(Idx)
56782  , p_source_13 => l_array_source_13(Idx)
56783  , p_source_14 => l_array_source_14(Idx)
56784  , p_source_14_meaning => l_array_source_14_meaning(Idx)
56785  , p_source_15 => l_array_source_15(Idx)
56786  , p_source_16 => l_array_source_16(Idx)
56787  , p_source_17 => l_array_source_17(Idx)
56788  , p_source_18 => l_array_source_18(Idx)
56789  , p_source_19 => l_array_source_19(Idx)
56790  , p_source_20 => l_array_source_20(Idx)
56791  , p_source_21 => l_array_source_21(Idx)
56792  , p_source_22 => l_array_source_22(Idx)
56793  , p_source_23 => l_array_source_23(Idx)
56794  , p_source_24 => l_array_source_24(Idx)
56795  , p_source_25 => l_array_source_25(Idx)
56796  , p_source_26 => l_array_source_26(Idx)
56797  , p_source_27 => l_array_source_27(Idx)
56798  , p_source_28 => l_array_source_28(Idx)
56799  , p_source_29 => l_array_source_29(Idx)
56800  , p_source_30 => l_array_source_30(Idx)
56801  , p_source_31 => l_array_source_31(Idx)
56802  , p_source_32 => l_array_source_32(Idx)
56803  , p_source_33 => l_array_source_33(Idx)
56804  , p_source_34 => l_array_source_34(Idx)
56805  , p_source_35 => l_array_source_35(Idx)
56806  , p_source_36 => l_array_source_36(Idx)
56807  , p_source_37 => l_array_source_37(Idx)
56808  , p_source_38 => l_array_source_38(Idx)
56809  , p_source_39 => l_array_source_39(Idx)
56810  , p_source_40 => l_array_source_40(Idx)
56811  );
56812 If(l_balance_type_code = 'A') THEN
56813   l_actual_gain_loss_ref := l_gain_or_loss_ref;
56814 END IF;
56815 
56816 --
56817 
56818       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
56819       -- or secondary ledger that has different currency with primary
56820       -- or alc that is calculated by sla
56821       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
56822             (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'))
56823 
56824 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
56825 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
56826           AND (l_actual_flag = 'A')) THEN
56827         XLA_AE_LINES_PKG.CreateGainOrLossLines(
56828           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
56829          ,p_application_id   => p_application_id
56830          ,p_amb_context_code => 'DEFAULT'
56831          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
56832          ,p_event_class_code => C_EVENT_CLASS_CODE
56833          ,p_event_type_code  => C_EVENT_TYPE_CODE
56834          
56835          ,p_gain_ccid        => -1
56836          ,p_loss_ccid        => -1
56837 
56838          ,p_actual_flag      => l_actual_flag
56839          ,p_enc_flag         => null
56840          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
56841          ,p_enc_g_l_ref      => null
56842          );
56843       END IF;
56844    END IF;
56845 END IF;
56846 
56847    ELSE
56848       --
56849       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
56850       --
56851       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56852          trace
56853             (p_msg      => 'Trancaction revesal option is Y'
56854             ,p_level    => C_LEVEL_STATEMENT
56855             ,p_module   => l_log_module);
56856       END IF;
56857    END IF;
56858 
56859 END LOOP;
56860 l_result := XLA_AE_LINES_PKG.InsertLines ;
56861 end loop;
56862 close line_cur;
56863 
56864 
56865 --
56866 -- insert headers into xla_ae_headers_gt table
56867 --
56868 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
56869 
56870 -- insert into errors table here.
56871 
56872 END LOOP;
56873 
56874 --
56875 -- 4865292
56876 --
56877 -- Compare g_hdr_extract_count with event count in
56878 -- CreateHeadersAndLines.
56879 --
56880 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
56881 
56882 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56883    trace (p_msg     => '# rows extracted from header extract objects '
56884                     || ' (running total): '
56885                     || g_hdr_extract_count
56886          ,p_level   => C_LEVEL_STATEMENT
56887          ,p_module  => l_log_module);
56888 END IF;
56889 
56890 CLOSE header_cur;
56891 --
56892 
56893 --
56894 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56895    trace
56896       (p_msg      => 'END of EventClass_88'
56897       ,p_level    => C_LEVEL_PROCEDURE
56898       ,p_module   => l_log_module);
56899 END IF;
56900 --
56901 RETURN l_result;
56902 EXCEPTION
56903 WHEN xla_exceptions_pkg.application_exception THEN
56904    
56905 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
56906 
56907    
56908 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
56909 
56910    RAISE;
56911 WHEN OTHERS THEN
56912    xla_exceptions_pkg.raise_message
56913       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.EventClass_88');
56914 END EventClass_88;
56915 --
56916 
56917 ---------------------------------------
56918 --
56919 -- PRIVATE PROCEDURE
56920 --         insert_sources_89
56921 --
56922 ----------------------------------------
56923 --
56924 PROCEDURE insert_sources_89(
56925                                 p_target_ledger_id       IN NUMBER
56926                               , p_language               IN VARCHAR2
56927                               , p_sla_ledger_id          IN NUMBER
56928                               , p_pad_start_date         IN DATE
56929                               , p_pad_end_date           IN DATE
56930                          )
56931 IS
56932 
56933 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REQUISITION_ALL';
56934 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REQUISITION';
56935 p_apps_owner                   VARCHAR2(30);
56936 l_log_module                   VARCHAR2(240);
56937 BEGIN
56938 IF g_log_enabled THEN
56939       l_log_module := C_DEFAULT_MODULE||'.insert_sources_89';
56940 END IF;
56941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56942 
56943       trace
56944          (p_msg      => 'BEGIN of insert_sources_89'
56945          ,p_level    => C_LEVEL_PROCEDURE
56946          ,p_module   => l_log_module);
56947 
56948 END IF;
56949 
56950 -- select APPS owner
56951 SELECT oracle_username
56952   INTO p_apps_owner
56953   FROM fnd_oracle_userid
56954  WHERE read_only_flag = 'U'
56955 ;
56956 
56957 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
56958       trace
56959          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
56960                         ' - p_language = '||p_language||
56961                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
56962                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
56963                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
56964                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
56965          ,p_level    => C_LEVEL_STATEMENT
56966          ,p_module   => l_log_module);
56967 END IF;
56968 
56969 
56970 --
56971 INSERT INTO xla_diag_sources --hdr2
56972 (
56973         event_id
56974       , ledger_id
56975       , sla_ledger_id
56976       , description_language
56977       , object_name
56978       , object_type_code
56979       , line_number
56980       , source_application_id
56981       , source_type_code
56982       , source_code
56983       , source_value
56984       , source_meaning
56985       , created_by
56986       , creation_date
56987       , last_update_date
56988       , last_updated_by
56989       , last_update_login
56990       , program_update_date
56991       , program_application_id
56992       , program_id
56993       , request_id
56994 )
56995 SELECT
56996         event_id
56997       , p_target_ledger_id
56998       , p_sla_ledger_id
56999       , p_language
57000       , object_name
57001       , object_type_code
57002       , line_number
57003       , source_application_id
57004       , source_type_code
57005       , source_code
57006       , SUBSTR(source_value ,1,1996)
57007       , SUBSTR(source_meaning ,1,200)
57008       , xla_environment_pkg.g_Usr_Id
57009       , TRUNC(SYSDATE)
57010       , TRUNC(SYSDATE)
57011       , xla_environment_pkg.g_Usr_Id
57012       , xla_environment_pkg.g_Login_Id
57013       , TRUNC(SYSDATE)
57014       , xla_environment_pkg.g_Prog_Appl_Id
57015       , xla_environment_pkg.g_Prog_Id
57016       , xla_environment_pkg.g_Req_Id
57017   FROM (
57018        SELECT xet.event_id                  event_id
57019             , 0                          line_number
57020             , CASE r
57021                WHEN 1 THEN 'PO_REQ_EXTRACT_HEADER_V' 
57022                 WHEN 2 THEN 'PO_REQ_EXTRACT_HEADER_V' 
57023                 WHEN 3 THEN 'PO_REQ_EXTRACT_HEADER_V' 
57024                 WHEN 4 THEN 'PO_REQ_EXTRACT_HEADER_V' 
57025                 WHEN 5 THEN 'PO_REQ_EXTRACT_HEADER_V' 
57026                 
57027                ELSE null
57028               END                           object_name
57029             , CASE r
57030                 WHEN 1 THEN 'HEADER' 
57031                 WHEN 2 THEN 'HEADER' 
57032                 WHEN 3 THEN 'HEADER' 
57033                 WHEN 4 THEN 'HEADER' 
57034                 WHEN 5 THEN 'HEADER' 
57035                 
57036                 ELSE null
57037               END                           object_type_code
57038             , CASE r
57039                 WHEN 1 THEN '201' 
57040                 WHEN 2 THEN '201' 
57041                 WHEN 3 THEN '201' 
57042                 WHEN 4 THEN '201' 
57043                 WHEN 5 THEN '201' 
57044                 
57045                 ELSE null
57046               END                           source_application_id
57047             , 'S'             source_type_code
57048             , CASE r
57049                 WHEN 1 THEN 'DOCUMENT_TYPE' 
57050                 WHEN 2 THEN 'REQ_NUMBER' 
57051                 WHEN 3 THEN 'REQ_ID' 
57052                 WHEN 4 THEN 'GL_DATE' 
57053                 WHEN 5 THEN 'ENCUMBRANCE_TYPE_ID' 
57054                 
57055                 ELSE null
57056               END                           source_code
57057             , CASE r
57058                 WHEN 1 THEN TO_CHAR(h2.DOCUMENT_TYPE)
57059                 WHEN 2 THEN TO_CHAR(h2.REQ_NUMBER)
57060                 WHEN 3 THEN TO_CHAR(h2.REQ_ID)
57061                 WHEN 4 THEN TO_CHAR(h2.GL_DATE)
57062                 WHEN 5 THEN TO_CHAR(h2.ENCUMBRANCE_TYPE_ID)
57063                 
57064                 ELSE null
57065               END                           source_value
57066             , null              source_meaning
57067          FROM xla_events_gt     xet  
57068       , PO_REQ_EXTRACT_HEADER_V  h2
57069              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
57070          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
57071            AND xet.event_class_code = C_EVENT_CLASS_CODE
57072               AND h2.event_id = xet.event_id
57073 
57074 )
57075 ;
57076 --
57077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57078 
57079       trace
57080          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
57081          ,p_level    => C_LEVEL_STATEMENT
57082          ,p_module   => l_log_module);
57083 
57084 END IF;
57085 --
57086 
57087 
57088 
57089 --
57090 INSERT INTO xla_diag_sources  --line2
57091 (
57092         event_id
57093       , ledger_id
57094       , sla_ledger_id
57095       , description_language
57096       , object_name
57097       , object_type_code
57098       , line_number
57099       , source_application_id
57100       , source_type_code
57101       , source_code
57102       , source_value
57103       , source_meaning
57104       , created_by
57105       , creation_date
57106       , last_update_date
57107       , last_updated_by
57108       , last_update_login
57109       , program_update_date
57110       , program_application_id
57111       , program_id
57112       , request_id
57113 )
57114 SELECT  event_id
57115       , p_target_ledger_id
57116       , p_sla_ledger_id
57117       , p_language
57118       , object_name
57119       , object_type_code
57120       , line_number
57121       , source_application_id
57122       , source_type_code
57123       , source_code
57124       , SUBSTR(source_value,1,1996)
57125       , SUBSTR(source_meaning ,1,200)
57126       , xla_environment_pkg.g_Usr_Id
57127       , TRUNC(SYSDATE)
57128       , TRUNC(SYSDATE)
57129       , xla_environment_pkg.g_Usr_Id
57130       , xla_environment_pkg.g_Login_Id
57131       , TRUNC(SYSDATE)
57132       , xla_environment_pkg.g_Prog_Appl_Id
57133       , xla_environment_pkg.g_Prog_Id
57134       , xla_environment_pkg.g_Req_Id
57135   FROM (
57136        SELECT xet.event_id                  event_id
57137             , l1.line_number                 line_number
57138             , CASE r
57139                WHEN 1 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57140                 WHEN 2 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57141                 WHEN 3 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57142                 WHEN 4 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57143                 WHEN 5 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57144                 WHEN 6 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57145                 WHEN 7 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57146                 WHEN 8 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57147                 WHEN 9 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57148                 WHEN 10 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57149                 WHEN 11 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57150                 WHEN 12 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57151                 WHEN 13 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57152                 WHEN 14 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57153                 WHEN 15 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57154                 WHEN 16 THEN 'PO_REQ_LINES_REF_V' 
57155                 WHEN 17 THEN 'PO_REQ_LINES_REF_V' 
57156                 WHEN 18 THEN 'PO_REQ_LINES_REF_V' 
57157                 WHEN 19 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57158                 WHEN 20 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57159                 WHEN 21 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
57160                 
57161                ELSE null
57162               END                           object_name
57163             , CASE r
57164                 WHEN 1 THEN 'LINE' 
57165                 WHEN 2 THEN 'LINE' 
57166                 WHEN 3 THEN 'LINE' 
57167                 WHEN 4 THEN 'LINE' 
57168                 WHEN 5 THEN 'LINE' 
57169                 WHEN 6 THEN 'LINE' 
57170                 WHEN 7 THEN 'LINE' 
57171                 WHEN 8 THEN 'LINE' 
57172                 WHEN 9 THEN 'LINE' 
57173                 WHEN 10 THEN 'LINE' 
57174                 WHEN 11 THEN 'LINE' 
57175                 WHEN 12 THEN 'LINE' 
57176                 WHEN 13 THEN 'LINE' 
57177                 WHEN 14 THEN 'LINE' 
57178                 WHEN 15 THEN 'LINE' 
57179                 WHEN 16 THEN 'LINE' 
57180                 WHEN 17 THEN 'LINE' 
57181                 WHEN 18 THEN 'LINE' 
57182                 WHEN 19 THEN 'LINE' 
57183                 WHEN 20 THEN 'LINE' 
57184                 WHEN 21 THEN 'LINE' 
57185                 
57186                 ELSE null
57187               END                           object_type_code
57188             , CASE r
57189                 WHEN 1 THEN '201' 
57190                 WHEN 2 THEN '201' 
57191                 WHEN 3 THEN '201' 
57192                 WHEN 4 THEN '201' 
57193                 WHEN 5 THEN '201' 
57194                 WHEN 6 THEN '201' 
57195                 WHEN 7 THEN '201' 
57196                 WHEN 8 THEN '201' 
57197                 WHEN 9 THEN '201' 
57198                 WHEN 10 THEN '201' 
57199                 WHEN 11 THEN '201' 
57200                 WHEN 12 THEN '201' 
57201                 WHEN 13 THEN '201' 
57202                 WHEN 14 THEN '201' 
57203                 WHEN 15 THEN '201' 
57204                 WHEN 16 THEN '201' 
57205                 WHEN 17 THEN '201' 
57206                 WHEN 18 THEN '201' 
57207                 WHEN 19 THEN '201' 
57208                 WHEN 20 THEN '201' 
57209                 WHEN 21 THEN '201' 
57210                 
57211                 ELSE null
57212               END                           source_application_id
57213             , 'S'             source_type_code
57214             , CASE r
57215                 WHEN 1 THEN 'JE_LINE_DESCRIPTION' 
57216                 WHEN 2 THEN 'BUDGET_ACCOUNT' 
57217                 WHEN 3 THEN 'MAIN_OR_BACKING_CODE' 
57218                 WHEN 4 THEN 'ACCOUNTING_REVERSAL_FLAG' 
57219                 WHEN 5 THEN 'ENTERED_AMT' 
57220                 WHEN 6 THEN 'CURRENCY_CODE' 
57221                 WHEN 7 THEN 'ACCOUNTED_AMT' 
57222                 WHEN 8 THEN 'REQ_DISTRIBUTION_ID' 
57223                 WHEN 9 THEN 'APPLIED_TO_APPL_ID' 
57224                 WHEN 10 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
57225                 WHEN 11 THEN 'APPLIED_TO_ENTITY_CODE' 
57226                 WHEN 12 THEN 'APPLIED_TO_DIST_ID_1' 
57227                 WHEN 13 THEN 'APPLIED_TO_HEADER_ID_1' 
57228                 WHEN 14 THEN 'DISTRIBUTION_LINK_TYPE' 
57229                 WHEN 15 THEN 'JFMIP_REFERENCE' 
57230                 WHEN 16 THEN 'CURRENCY_CONVERSION_DATE' 
57231                 WHEN 17 THEN 'CURRENCY_CONVERSION_RATE' 
57232                 WHEN 18 THEN 'CURRENCY_CONVERSION_TYPE' 
57233                 WHEN 19 THEN 'ADJUSTMENT_STATUS' 
57234                 WHEN 20 THEN 'REQ_ENCUM_UPG_OPTION' 
57235                 WHEN 21 THEN 'REQ_UPG_ENC_TYPE_ID' 
57236                 
57237                 ELSE null
57238               END                           source_code
57239             , CASE r
57240                 WHEN 1 THEN TO_CHAR(l1.JE_LINE_DESCRIPTION)
57241                 WHEN 2 THEN TO_CHAR(l1.BUDGET_ACCOUNT)
57242                 WHEN 3 THEN TO_CHAR(l1.MAIN_OR_BACKING_CODE)
57243                 WHEN 4 THEN TO_CHAR(l1.ACCOUNTING_REVERSAL_FLAG)
57244                 WHEN 5 THEN TO_CHAR(l1.ENTERED_AMT)
57245                 WHEN 6 THEN TO_CHAR(l1.CURRENCY_CODE)
57246                 WHEN 7 THEN TO_CHAR(l1.ACCOUNTED_AMT)
57247                 WHEN 8 THEN TO_CHAR(l1.REQ_DISTRIBUTION_ID)
57248                 WHEN 9 THEN TO_CHAR(l1.APPLIED_TO_APPL_ID)
57249                 WHEN 10 THEN TO_CHAR(l1.APPLIED_TO_DIST_LINK_TYPE)
57250                 WHEN 11 THEN TO_CHAR(l1.APPLIED_TO_ENTITY_CODE)
57251                 WHEN 12 THEN TO_CHAR(l1.APPLIED_TO_DIST_ID_1)
57252                 WHEN 13 THEN TO_CHAR(l1.APPLIED_TO_HEADER_ID_1)
57253                 WHEN 14 THEN TO_CHAR(l1.DISTRIBUTION_LINK_TYPE)
57254                 WHEN 15 THEN TO_CHAR(l1.JFMIP_REFERENCE)
57255                 WHEN 16 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
57256                 WHEN 17 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
57257                 WHEN 18 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
57258                 WHEN 19 THEN TO_CHAR(l1.ADJUSTMENT_STATUS)
57259                 WHEN 20 THEN TO_CHAR(l1.REQ_ENCUM_UPG_OPTION)
57260                 WHEN 21 THEN TO_CHAR(l1.REQ_UPG_ENC_TYPE_ID)
57261                 
57262                 ELSE null
57263               END                           source_value
57264             , null              source_meaning
57265          FROM  xla_events_gt     xet  
57266         , PO_REQ_EXTRACT_DETAIL_V  l1
57267         , PO_REQ_LINES_REF_V  l3
57268             , (select rownum r from all_objects where rownum <= 21 and owner = p_apps_owner)
57269         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
57270           AND xet.event_class_code = C_EVENT_CLASS_CODE
57271             AND l1.event_id          = xet.event_id
57272  AND l1.req_line_id = l3.req_line_id (+) 
57273 )
57274 ;
57275 --
57276 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57277 
57278       trace
57279          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
57280          ,p_level    => C_LEVEL_STATEMENT
57281          ,p_module   => l_log_module);
57282 
57283 END IF;
57284 
57285 
57286 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57287       trace
57288          (p_msg      => 'END of insert_sources_89'
57289          ,p_level    => C_LEVEL_PROCEDURE
57290          ,p_module   => l_log_module);
57291 END IF;
57292 EXCEPTION
57293   WHEN xla_exceptions_pkg.application_exception THEN
57294       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
57295             trace
57296                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
57297                ,p_level    => C_LEVEL_EXCEPTION
57298                ,p_module   => l_log_module);
57299       END IF;
57300       RAISE;
57301   WHEN OTHERS THEN
57302       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
57303             trace
57304                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
57305                ,p_level    => C_LEVEL_EXCEPTION
57306                ,p_module   => l_log_module);
57307        END IF;
57308        xla_exceptions_pkg.raise_message
57309            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.insert_sources_89');
57310 END insert_sources_89;
57311 --
57312 
57313 ---------------------------------------
57314 --
57315 -- PRIVATE FUNCTION
57316 --         EventClass_89
57317 --
57318 ----------------------------------------
57319 --
57320 FUNCTION EventClass_89
57321        (p_application_id         IN NUMBER
57322        ,p_base_ledger_id         IN NUMBER
57323        ,p_target_ledger_id       IN NUMBER
57324        ,p_language               IN VARCHAR2
57325        ,p_currency_code          IN VARCHAR2
57326        ,p_sla_ledger_id          IN NUMBER
57327        ,p_pad_start_date         IN DATE
57328        ,p_pad_end_date           IN DATE
57329        ,p_primary_ledger_id      IN NUMBER)
57330 RETURN BOOLEAN IS
57331 --
57332 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REQUISITION_ALL';
57333 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REQUISITION';
57334 
57335 l_calculate_acctd_flag   VARCHAR2(1) :='N';
57336 l_calculate_g_l_flag     VARCHAR2(1) :='N';
57337 --
57338 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57339 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57340 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57341 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57342 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57343 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57344 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57345 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57346 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57347 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57348 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57349 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57350 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57351 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
57352 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57353 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57354 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57355 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
57356 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57357 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57358 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57359 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
57360 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
57361 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
57362 
57363 l_event_id                             NUMBER;
57364 l_previous_event_id                    NUMBER;
57365 l_first_event_id                       NUMBER;
57366 l_last_event_id                        NUMBER;
57367 
57368 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
57369 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
57370 --
57371 --
57372 l_result                    BOOLEAN := TRUE;
57373 l_rows                      NUMBER  := 1000;
57374 l_event_type_name           VARCHAR2(80) := 'All';
57375 l_event_class_name          VARCHAR2(80) := 'Requisition';
57376 l_description               VARCHAR2(4000);
57377 l_transaction_reversal      NUMBER;
57378 l_ae_header_id              NUMBER;
57379 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
57380 l_log_module                VARCHAR2(240);
57381 --
57382 l_acct_reversal_source      VARCHAR2(30);
57383 l_trx_reversal_source       VARCHAR2(30);
57384 
57385 l_continue_with_lines       BOOLEAN := TRUE;
57386 --
57387 l_acc_rev_gl_date_source    DATE;                      -- 4262811
57388 --
57389 type t_array_event_id is table of number index by binary_integer;
57390 
57391 l_rec_array_event                    t_rec_array_event;
57392 l_null_rec_array_event               t_rec_array_event;
57393 l_array_ae_header_id                 xla_number_array_type;
57394 l_actual_flag                        VARCHAR2(1) := NULL;
57395 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
57396 l_balance_type_code                  VARCHAR2(1) :=NULL;
57397 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
57398 
57399 --
57400 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
57401 --
57402 
57403 TYPE t_array_source_9 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
57404 TYPE t_array_source_10 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.REQ_NUMBER%TYPE INDEX BY BINARY_INTEGER;
57405 TYPE t_array_source_76 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.REQ_ID%TYPE INDEX BY BINARY_INTEGER;
57406 TYPE t_array_source_79 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
57407 TYPE t_array_source_80 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
57408 
57409 TYPE t_array_source_7 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.JE_LINE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
57410 TYPE t_array_source_11 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
57411 TYPE t_array_source_13 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
57412 TYPE t_array_source_16 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
57413 TYPE t_array_source_33 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
57414 TYPE t_array_source_34 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
57415 TYPE t_array_source_35 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
57416 TYPE t_array_source_47 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.REQ_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
57417 TYPE t_array_source_53 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
57418 TYPE t_array_source_54 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
57419 TYPE t_array_source_55 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
57420 TYPE t_array_source_56 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
57421 TYPE t_array_source_57 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_HEADER_ID_1%TYPE INDEX BY BINARY_INTEGER;
57422 TYPE t_array_source_58 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
57423 TYPE t_array_source_60 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.JFMIP_REFERENCE%TYPE INDEX BY BINARY_INTEGER;
57424 TYPE t_array_source_62 IS TABLE OF PO_REQ_LINES_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
57425 TYPE t_array_source_63 IS TABLE OF PO_REQ_LINES_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
57426 TYPE t_array_source_64 IS TABLE OF PO_REQ_LINES_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
57427 TYPE t_array_source_75 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ADJUSTMENT_STATUS%TYPE INDEX BY BINARY_INTEGER;
57428 TYPE t_array_source_77 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.REQ_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
57429 TYPE t_array_source_78 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.REQ_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
57430 
57431 l_array_source_9              t_array_source_9;
57432 l_array_source_10              t_array_source_10;
57433 l_array_source_76              t_array_source_76;
57434 l_array_source_79              t_array_source_79;
57435 l_array_source_80              t_array_source_80;
57436 
57437 l_array_source_7      t_array_source_7;
57438 l_array_source_11      t_array_source_11;
57439 l_array_source_13      t_array_source_13;
57440 l_array_source_16      t_array_source_16;
57441 l_array_source_33      t_array_source_33;
57442 l_array_source_34      t_array_source_34;
57443 l_array_source_35      t_array_source_35;
57444 l_array_source_47      t_array_source_47;
57445 l_array_source_53      t_array_source_53;
57446 l_array_source_54      t_array_source_54;
57447 l_array_source_55      t_array_source_55;
57448 l_array_source_56      t_array_source_56;
57449 l_array_source_57      t_array_source_57;
57450 l_array_source_58      t_array_source_58;
57451 l_array_source_60      t_array_source_60;
57452 l_array_source_62      t_array_source_62;
57453 l_array_source_63      t_array_source_63;
57454 l_array_source_64      t_array_source_64;
57455 l_array_source_75      t_array_source_75;
57456 l_array_source_77      t_array_source_77;
57457 l_array_source_78      t_array_source_78;
57458 
57459 --
57460 CURSOR header_cur
57461 IS
57462 SELECT /*+ leading(xet) cardinality(xet,1) */
57463 -- Event Class Code: REQUISITION
57464     xet.entity_id
57465    ,xet.legal_entity_id
57466    ,xet.entity_code
57467    ,xet.transaction_number
57468    ,xet.event_id
57469    ,xet.event_class_code
57470    ,xet.event_type_code
57471    ,xet.event_number
57472    ,xet.event_date
57473    ,xet.transaction_date
57474    ,xet.reference_num_1
57475    ,xet.reference_num_2
57476    ,xet.reference_num_3
57477    ,xet.reference_num_4
57478    ,xet.reference_char_1
57479    ,xet.reference_char_2
57480    ,xet.reference_char_3
57481    ,xet.reference_char_4
57482    ,xet.reference_date_1
57483    ,xet.reference_date_2
57484    ,xet.reference_date_3
57485    ,xet.reference_date_4
57486    ,xet.event_created_by
57487    ,xet.budgetary_control_flag 
57488   , h2.DOCUMENT_TYPE    source_9
57489   , h2.REQ_NUMBER    source_10
57490   , h2.REQ_ID    source_76
57491   , h2.GL_DATE    source_79
57492   , h2.ENCUMBRANCE_TYPE_ID    source_80
57493   FROM xla_events_gt     xet 
57494   , PO_REQ_EXTRACT_HEADER_V  h2
57495  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
57496    and xet.event_class_code = C_EVENT_CLASS_CODE
57497    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
57498 
57499  ORDER BY event_id
57500 ;
57501 
57502 
57503 --
57504 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
57505 IS
57506 SELECT  /*+ leading(xet) cardinality(xet,1) */
57507 -- Event Class Code: REQUISITION
57508     xet.entity_id
57509    ,xet.legal_entity_id
57510    ,xet.entity_code
57511    ,xet.transaction_number
57512    ,xet.event_id
57513    ,xet.event_class_code
57514    ,xet.event_type_code
57515    ,xet.event_number
57516    ,xet.event_date
57517    ,xet.transaction_date
57518    ,xet.reference_num_1
57519    ,xet.reference_num_2
57520    ,xet.reference_num_3
57521    ,xet.reference_num_4
57522    ,xet.reference_char_1
57523    ,xet.reference_char_2
57524    ,xet.reference_char_3
57525    ,xet.reference_char_4
57526    ,xet.reference_date_1
57527    ,xet.reference_date_2
57528    ,xet.reference_date_3
57529    ,xet.reference_date_4
57530    ,xet.event_created_by
57531    ,xet.budgetary_control_flag
57532  , l1.LINE_NUMBER  
57533   , l1.JE_LINE_DESCRIPTION    source_7
57534   , l1.BUDGET_ACCOUNT    source_11
57535   , l1.MAIN_OR_BACKING_CODE    source_13
57536   , l1.ACCOUNTING_REVERSAL_FLAG    source_16
57537   , l1.ENTERED_AMT    source_33
57538   , l1.CURRENCY_CODE    source_34
57539   , l1.ACCOUNTED_AMT    source_35
57540   , l1.REQ_DISTRIBUTION_ID    source_47
57541   , l1.APPLIED_TO_APPL_ID    source_53
57542   , l1.APPLIED_TO_DIST_LINK_TYPE    source_54
57543   , l1.APPLIED_TO_ENTITY_CODE    source_55
57544   , l1.APPLIED_TO_DIST_ID_1    source_56
57545   , l1.APPLIED_TO_HEADER_ID_1    source_57
57546   , l1.DISTRIBUTION_LINK_TYPE    source_58
57547   , l1.JFMIP_REFERENCE    source_60
57548   , l3.CURRENCY_CONVERSION_DATE    source_62
57549   , l3.CURRENCY_CONVERSION_RATE    source_63
57550   , l3.CURRENCY_CONVERSION_TYPE    source_64
57551   , l1.ADJUSTMENT_STATUS    source_75
57552   , l1.REQ_ENCUM_UPG_OPTION    source_77
57553   , l1.REQ_UPG_ENC_TYPE_ID    source_78
57554   FROM xla_events_gt     xet 
57555   , PO_REQ_EXTRACT_DETAIL_V  l1
57556   , PO_REQ_LINES_REF_V  l3
57557  WHERE xet.event_id between x_first_event_id and x_last_event_id
57558    and xet.event_date between p_pad_start_date and p_pad_end_date
57559    and xet.event_class_code = C_EVENT_CLASS_CODE
57560    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
57561  AND l1.req_line_id = l3.req_line_id (+) ;
57562 
57563 --
57564 BEGIN
57565 IF g_log_enabled THEN
57566    l_log_module := C_DEFAULT_MODULE||'.EventClass_89';
57567 END IF;
57568 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57569    trace
57570       (p_msg      => 'BEGIN of EventClass_89'
57571       ,p_level    => C_LEVEL_PROCEDURE
57572       ,p_module   => l_log_module);
57573 END IF;
57574 
57575 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57576    trace
57577       (p_msg      => 'p_application_id = '||p_application_id||
57578                      ' - p_base_ledger_id = '||p_base_ledger_id||
57579                      ' - p_target_ledger_id  = '||p_target_ledger_id||
57580                      ' - p_language = '||p_language||
57581                      ' - p_currency_code = '||p_currency_code||
57582                      ' - p_sla_ledger_id = '||p_sla_ledger_id
57583       ,p_level    => C_LEVEL_STATEMENT
57584       ,p_module   => l_log_module);
57585 END IF;
57586 --
57587 -- initialze arrays
57588 --
57589 g_array_event.DELETE;
57590 l_rec_array_event := l_null_rec_array_event;
57591 --
57592 --------------------------------------
57593 -- 4262811 Initialze MPA Line Number
57594 --------------------------------------
57595 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
57596 
57597 --
57598 
57599 --
57600 OPEN header_cur;
57601 --
57602 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57603    trace
57604    (p_msg      => 'SQL - FETCH header_cur'
57605    ,p_level    => C_LEVEL_STATEMENT
57606    ,p_module   => l_log_module);
57607 END IF;
57608 --
57609 LOOP
57610 FETCH header_cur BULK COLLECT INTO
57611         l_array_entity_id
57612       , l_array_legal_entity_id
57613       , l_array_entity_code
57614       , l_array_transaction_num
57615       , l_array_event_id
57616       , l_array_class_code
57617       , l_array_event_type
57618       , l_array_event_number
57619       , l_array_event_date
57620       , l_array_transaction_date
57621       , l_array_reference_num_1
57622       , l_array_reference_num_2
57623       , l_array_reference_num_3
57624       , l_array_reference_num_4
57625       , l_array_reference_char_1
57626       , l_array_reference_char_2
57627       , l_array_reference_char_3
57628       , l_array_reference_char_4
57629       , l_array_reference_date_1
57630       , l_array_reference_date_2
57631       , l_array_reference_date_3
57632       , l_array_reference_date_4
57633       , l_array_event_created_by
57634       , l_array_budgetary_control_flag 
57635       , l_array_source_9
57636       , l_array_source_10
57637       , l_array_source_76
57638       , l_array_source_79
57639       , l_array_source_80
57640       LIMIT l_rows;
57641 --
57642 IF (C_LEVEL_EVENT >= g_log_level) THEN
57643    trace
57644    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
57645    ,p_level    => C_LEVEL_EVENT
57646    ,p_module   => l_log_module);
57647 END IF;
57648 --
57649 EXIT WHEN l_array_entity_id.COUNT = 0;
57650 
57651 -- initialize arrays
57652 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
57653 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
57654 
57655 --
57656 -- Bug 4458708
57657 --
57658 XLA_AE_LINES_PKG.g_LineNumber := 0;
57659 
57660 
57661 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
57662 g_last_hdr_idx := l_array_event_id.LAST;
57663 --
57664 -- loop for the headers. Each iteration is for each header extract row
57665 -- fetched in header cursor
57666 --
57667 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
57668 
57669 --
57670 -- set event info as cache for other routines to refer event attributes
57671 --
57672 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
57673    (p_application_id           => p_application_id
57674    ,p_primary_ledger_id        => p_primary_ledger_id
57675    ,p_base_ledger_id           => p_base_ledger_id
57676    ,p_target_ledger_id         => p_target_ledger_id
57677    ,p_entity_id                => l_array_entity_id(hdr_idx)
57678    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
57679    ,p_entity_code              => l_array_entity_code(hdr_idx)
57680    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
57681    ,p_event_id                 => l_array_event_id(hdr_idx)
57682    ,p_event_class_code         => l_array_class_code(hdr_idx)
57683    ,p_event_type_code          => l_array_event_type(hdr_idx)
57684    ,p_event_number             => l_array_event_number(hdr_idx)
57685    ,p_event_date               => l_array_event_date(hdr_idx)
57686    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
57687    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
57688    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
57689    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
57690    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
57691    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
57692    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
57693    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
57694    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
57695    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
57696    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
57697    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
57698    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
57699    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
57700    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
57701 
57702 --
57703 -- set the status of entry to C_VALID (0)
57704 --
57705 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
57706 
57707 --
57708 -- initialize a row for ae header
57709 --
57710 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
57711 
57712 l_event_id := l_array_event_id(hdr_idx);
57713 
57714 --
57715 -- storing the hdr_idx for event. May be used by line cursor.
57716 --
57717 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
57718 
57719 --
57720 -- store sources from header extract. This can be improved to
57721 -- store only those sources from header extract that may be used in lines
57722 --
57723 
57724 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
57725 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
57726 g_array_event(l_event_id).array_value_num('source_76') := l_array_source_76(hdr_idx);
57727 g_array_event(l_event_id).array_value_date('source_79') := l_array_source_79(hdr_idx);
57728 g_array_event(l_event_id).array_value_num('source_80') := l_array_source_80(hdr_idx);
57729 
57730 --
57731 -- initilaize the status of ae headers for diffrent balance types
57732 -- the status is initialised to C_NOT_CREATED (2)
57733 --
57734 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57735 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57736 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
57737 
57738 --
57739 -- call api to validate and store accounting attributes for header
57740 --
57741 
57742 ------------------------------------------------------------
57743 -- Accrual Reversal : to get date for Standard Source (NONE)
57744 ------------------------------------------------------------
57745 l_acc_rev_gl_date_source := NULL;
57746 
57747      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
57748       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_80');
57749      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
57750       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_79');
57751 
57752 
57753 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
57754 
57755 XLA_AE_HEADER_PKG.SetJeCategoryName;
57756 
57757 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
57758 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
57759 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
57760 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
57761 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
57762 
57763 
57764 --
57765 xla_ae_header_pkg.SetHdrDescription(
57766    p_description => Description_5 (
57767    p_application_id => p_application_id 
57768  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
57769  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
57770    )
57771 );
57772 --
57773 
57774 -- No header level analytical criteria
57775 
57776 --
57777 --accounting attribute enhancement, bug 3612931
57778 --
57779 l_trx_reversal_source := SUBSTR(NULL, 1,30);
57780 
57781 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
57782    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
57783 
57784    xla_accounting_err_pkg.build_message
57785       (p_appli_s_name            => 'XLA'
57786       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
57787       ,p_token_1                 => 'ACCT_ATTR_NAME'
57788       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
57789       ,p_token_2                 => 'PRODUCT_NAME'
57790       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
57791       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
57792       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
57793       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
57794 
57795 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
57796    --
57797    -- following sets the accounting attributes needed to reverse
57798    -- accounting for a distributeion
57799    --
57800    xla_ae_lines_pkg.SetTrxReversalAttrs
57801       (p_event_id              => l_event_id
57802       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
57803       ,p_trx_reversal_source   => l_trx_reversal_source);
57804 
57805 END IF;
57806 
57807 
57808 ----------------------------------------------------------------
57809 -- 4262811 -  update the header statuses to invalid in need be
57810 ----------------------------------------------------------------
57811 --
57812 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
57813 
57814 
57815   -----------------------------------------------
57816   -- No accrual reversal for the event class/type
57817   -----------------------------------------------
57818 ----------------------------------------------------------------
57819 
57820 --
57821 -- this ends the header loop iteration for one bulk fetch
57822 --
57823 END LOOP;
57824 
57825 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
57826 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
57827 
57828 --
57829 -- insert dummy rows into lines gt table that were created due to
57830 -- transaction reversals
57831 --
57832 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
57833    l_result := XLA_AE_LINES_PKG.InsertLines;
57834 END IF;
57835 
57836 --
57837 -- reset the temp_line_num for each set of events fetched from header
57838 -- cursor rather than doing it for each new event in line cursor
57839 -- Bug 3939231
57840 --
57841 xla_ae_lines_pkg.g_temp_line_num := 0;
57842 
57843 
57844 
57845 --
57846 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
57847 --
57848 --
57849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57850 
57851       trace
57852          (p_msg      => 'SQL - FETCH line_cur'
57853          ,p_level    => C_LEVEL_STATEMENT
57854          ,p_module   => l_log_module);
57855 
57856 END IF;
57857 --
57858 --
57859 LOOP
57860   --
57861   FETCH line_cur BULK COLLECT INTO
57862         l_array_entity_id
57863       , l_array_legal_entity_id
57864       , l_array_entity_code
57865       , l_array_transaction_num
57866       , l_array_event_id
57867       , l_array_class_code
57868       , l_array_event_type
57869       , l_array_event_number
57870       , l_array_event_date
57871       , l_array_transaction_date
57872       , l_array_reference_num_1
57873       , l_array_reference_num_2
57874       , l_array_reference_num_3
57875       , l_array_reference_num_4
57876       , l_array_reference_char_1
57877       , l_array_reference_char_2
57878       , l_array_reference_char_3
57879       , l_array_reference_char_4
57880       , l_array_reference_date_1
57881       , l_array_reference_date_2
57882       , l_array_reference_date_3
57883       , l_array_reference_date_4
57884       , l_array_event_created_by
57885       , l_array_budgetary_control_flag
57886       , l_array_extract_line_num 
57887       , l_array_source_7
57888       , l_array_source_11
57889       , l_array_source_13
57890       , l_array_source_16
57891       , l_array_source_33
57892       , l_array_source_34
57893       , l_array_source_35
57894       , l_array_source_47
57895       , l_array_source_53
57896       , l_array_source_54
57897       , l_array_source_55
57898       , l_array_source_56
57899       , l_array_source_57
57900       , l_array_source_58
57901       , l_array_source_60
57902       , l_array_source_62
57903       , l_array_source_63
57904       , l_array_source_64
57905       , l_array_source_75
57906       , l_array_source_77
57907       , l_array_source_78
57908       LIMIT l_rows;
57909 
57910   --
57911   IF (C_LEVEL_EVENT >= g_log_level) THEN
57912             trace
57913                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
57914                ,p_level    => C_LEVEL_EVENT
57915                ,p_module   => l_log_module);
57916   END IF;
57917   --
57918   EXIT WHEN l_array_entity_id.count = 0;
57919 
57920   XLA_AE_LINES_PKG.g_rec_lines := null;
57921 
57922 --
57923 -- Bug 4458708
57924 --
57925 XLA_AE_LINES_PKG.g_LineNumber := 0;
57926 --
57927 --
57928 
57929 FOR Idx IN 1..l_array_event_id.count LOOP
57930    --
57931    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
57932    --
57933    l_event_id := l_array_event_id(idx);  -- 5648433
57934 
57935    --
57936    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
57937    --
57938 
57939    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
57940              (g_array_event(l_event_id).array_value_num('header_index'))
57941          ,'N'
57942          ) <> 'Y'
57943    THEN
57944       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
57945          trace
57946             (p_msg      => 'Trancaction revesal option is not Y '
57947             ,p_level    => C_LEVEL_STATEMENT
57948             ,p_module   => l_log_module);
57949       END IF;
57950 
57951 --
57952 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
57953 --
57954 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
57955 --
57956 -- set event info as cache for other routines to refer event attributes
57957 --
57958 
57959 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
57960    l_previous_event_id := l_event_id;
57961 
57962    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
57963       (p_application_id           => p_application_id
57964       ,p_primary_ledger_id        => p_primary_ledger_id
57965       ,p_base_ledger_id           => p_base_ledger_id
57966       ,p_target_ledger_id         => p_target_ledger_id
57967       ,p_entity_id                => l_array_entity_id(Idx)
57968       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
57969       ,p_entity_code              => l_array_entity_code(Idx)
57970       ,p_transaction_num          => l_array_transaction_num(Idx)
57971       ,p_event_id                 => l_array_event_id(Idx)
57972       ,p_event_class_code         => l_array_class_code(Idx)
57973       ,p_event_type_code          => l_array_event_type(Idx)
57974       ,p_event_number             => l_array_event_number(Idx)
57975       ,p_event_date               => l_array_event_date(Idx)
57976       ,p_transaction_date         => l_array_transaction_date(Idx)
57977       ,p_reference_num_1          => l_array_reference_num_1(Idx)
57978       ,p_reference_num_2          => l_array_reference_num_2(Idx)
57979       ,p_reference_num_3          => l_array_reference_num_3(Idx)
57980       ,p_reference_num_4          => l_array_reference_num_4(Idx)
57981       ,p_reference_char_1         => l_array_reference_char_1(Idx)
57982       ,p_reference_char_2         => l_array_reference_char_2(Idx)
57983       ,p_reference_char_3         => l_array_reference_char_3(Idx)
57984       ,p_reference_char_4         => l_array_reference_char_4(Idx)
57985       ,p_reference_date_1         => l_array_reference_date_1(Idx)
57986       ,p_reference_date_2         => l_array_reference_date_2(Idx)
57987       ,p_reference_date_3         => l_array_reference_date_3(Idx)
57988       ,p_reference_date_4         => l_array_reference_date_4(Idx)
57989       ,p_event_created_by         => l_array_event_created_by(Idx)
57990       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
57991        --
57992 END IF;
57993 
57994 
57995 
57996 --
57997 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
57998 
57999 l_acct_reversal_source := SUBSTR(l_array_source_16(Idx), 1,30);
58000 
58001 IF l_continue_with_lines THEN
58002    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
58003       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
58004 
58005       xla_accounting_err_pkg.build_message
58006          (p_appli_s_name            => 'XLA'
58007          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
58008          ,p_token_1                 => 'LINE_NUMBER'
58009          ,p_value_1                 => l_array_extract_line_num(Idx)
58010          ,p_token_2                 => 'PRODUCT_NAME'
58011          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
58012          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
58013          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
58014          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
58015 
58016    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
58017       --
58018       -- following sets the accounting attributes needed to reverse
58019       -- accounting for a distributeion
58020       --
58021 
58022       --
58023       -- 5217187
58024       --
58025       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
58026       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
58027                                        g_array_event(l_event_id).array_value_num('header_index'));
58028       --
58029       --
58030 
58031       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
58032       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_16(Idx);
58033       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
58034       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_47(Idx);
58035       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
58036       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_58(Idx);
58037       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
58038       l_rec_rev_acct_attrs.array_num_value(5)  := TO_NUMBER(l_array_source_11(Idx));
58039       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
58040       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_33(Idx);
58041       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
58042       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_34(Idx);
58043       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
58044       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_35(Idx);
58045       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
58046       l_rec_rev_acct_attrs.array_num_value(9)  := TO_NUMBER(l_array_source_11(Idx));
58047       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
58048       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_33(Idx);
58049       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
58050       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_34(Idx);
58051       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
58052       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_35(Idx);
58053       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
58054       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_77(Idx);
58055       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'REVERSED_DISTRIBUTION_ID1';
58056       l_rec_rev_acct_attrs.array_num_value(14)  := l_array_source_56(Idx);
58057       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_TYPE';
58058       l_rec_rev_acct_attrs.array_char_value(15)  := l_array_source_54(Idx);
58059       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'UPG_CR_ENC_TYPE_ID';
58060       l_rec_rev_acct_attrs.array_num_value(16)  := l_array_source_78(Idx);
58061       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'UPG_DR_ENC_TYPE_ID';
58062       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_78(Idx);
58063 
58064 
58065       xla_ae_lines_pkg.SetAcctReversalAttrs
58066          (p_event_id             => l_event_id
58067          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
58068          ,p_calculate_acctd_flag => l_calculate_acctd_flag
58069          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
58070    END IF;
58071 
58072    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
58073        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
58074 
58075 --
58076 AcctLineType_72 (
58077  p_application_id  => p_application_id
58078  ,p_event_id     => l_event_id
58079  ,p_calculate_acctd_flag => l_calculate_acctd_flag
58080  ,p_calculate_g_l_flag => l_calculate_g_l_flag
58081  ,p_actual_flag => l_actual_flag
58082  ,p_balance_type_code => l_balance_type_code
58083  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
58084  
58085  , p_source_7 => l_array_source_7(Idx)
58086  , p_source_11 => l_array_source_11(Idx)
58087  , p_source_13 => l_array_source_13(Idx)
58088  , p_source_16 => l_array_source_16(Idx)
58089  , p_source_33 => l_array_source_33(Idx)
58090  , p_source_34 => l_array_source_34(Idx)
58091  , p_source_35 => l_array_source_35(Idx)
58092  , p_source_47 => l_array_source_47(Idx)
58093  , p_source_53 => l_array_source_53(Idx)
58094  , p_source_54 => l_array_source_54(Idx)
58095  , p_source_55 => l_array_source_55(Idx)
58096  , p_source_56 => l_array_source_56(Idx)
58097  , p_source_57 => l_array_source_57(Idx)
58098  , p_source_58 => l_array_source_58(Idx)
58099  , p_source_60 => l_array_source_60(Idx)
58100  , p_source_62 => l_array_source_62(Idx)
58101  , p_source_63 => l_array_source_63(Idx)
58102  , p_source_64 => l_array_source_64(Idx)
58103  , p_source_75 => l_array_source_75(Idx)
58104  , p_source_76 => g_array_event(l_event_id).array_value_num('source_76')
58105  , p_source_77 => l_array_source_77(Idx)
58106  , p_source_78 => l_array_source_78(Idx)
58107  );
58108 If(l_balance_type_code = 'A') THEN
58109   l_actual_gain_loss_ref := l_gain_or_loss_ref;
58110 END IF;
58111 
58112 --
58113 
58114 
58115 --
58116 AcctLineType_77 (
58117  p_application_id  => p_application_id
58118  ,p_event_id     => l_event_id
58119  ,p_calculate_acctd_flag => l_calculate_acctd_flag
58120  ,p_calculate_g_l_flag => l_calculate_g_l_flag
58121  ,p_actual_flag => l_actual_flag
58122  ,p_balance_type_code => l_balance_type_code
58123  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
58124  
58125  , p_source_11 => l_array_source_11(Idx)
58126  , p_source_13 => l_array_source_13(Idx)
58127  , p_source_16 => l_array_source_16(Idx)
58128  , p_source_33 => l_array_source_33(Idx)
58129  , p_source_34 => l_array_source_34(Idx)
58130  , p_source_35 => l_array_source_35(Idx)
58131  , p_source_47 => l_array_source_47(Idx)
58132  , p_source_53 => l_array_source_53(Idx)
58133  , p_source_54 => l_array_source_54(Idx)
58134  , p_source_55 => l_array_source_55(Idx)
58135  , p_source_56 => l_array_source_56(Idx)
58136  , p_source_57 => l_array_source_57(Idx)
58137  , p_source_58 => l_array_source_58(Idx)
58138  , p_source_60 => l_array_source_60(Idx)
58139  , p_source_75 => l_array_source_75(Idx)
58140  , p_source_76 => g_array_event(l_event_id).array_value_num('source_76')
58141  , p_source_77 => l_array_source_77(Idx)
58142  , p_source_78 => l_array_source_78(Idx)
58143  );
58144 If(l_balance_type_code = 'A') THEN
58145   l_actual_gain_loss_ref := l_gain_or_loss_ref;
58146 END IF;
58147 
58148 --
58149 
58150 
58151 --
58152 AcctLineType_78 (
58153  p_application_id  => p_application_id
58154  ,p_event_id     => l_event_id
58155  ,p_calculate_acctd_flag => l_calculate_acctd_flag
58156  ,p_calculate_g_l_flag => l_calculate_g_l_flag
58157  ,p_actual_flag => l_actual_flag
58158  ,p_balance_type_code => l_balance_type_code
58159  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
58160  
58161  , p_source_11 => l_array_source_11(Idx)
58162  , p_source_16 => l_array_source_16(Idx)
58163  , p_source_33 => l_array_source_33(Idx)
58164  , p_source_34 => l_array_source_34(Idx)
58165  , p_source_35 => l_array_source_35(Idx)
58166  , p_source_47 => l_array_source_47(Idx)
58167  , p_source_53 => l_array_source_53(Idx)
58168  , p_source_54 => l_array_source_54(Idx)
58169  , p_source_55 => l_array_source_55(Idx)
58170  , p_source_56 => l_array_source_56(Idx)
58171  , p_source_57 => l_array_source_57(Idx)
58172  , p_source_58 => l_array_source_58(Idx)
58173  , p_source_76 => g_array_event(l_event_id).array_value_num('source_76')
58174  , p_source_77 => l_array_source_77(Idx)
58175  , p_source_78 => l_array_source_78(Idx)
58176  );
58177 If(l_balance_type_code = 'A') THEN
58178   l_actual_gain_loss_ref := l_gain_or_loss_ref;
58179 END IF;
58180 
58181 --
58182 
58183       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
58184       -- or secondary ledger that has different currency with primary
58185       -- or alc that is calculated by sla
58186       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
58187             (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'))
58188 
58189 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
58190 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
58191           AND (l_actual_flag = 'A')) THEN
58192         XLA_AE_LINES_PKG.CreateGainOrLossLines(
58193           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
58194          ,p_application_id   => p_application_id
58195          ,p_amb_context_code => 'DEFAULT'
58196          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
58197          ,p_event_class_code => C_EVENT_CLASS_CODE
58198          ,p_event_type_code  => C_EVENT_TYPE_CODE
58199          
58200          ,p_gain_ccid        => -1
58201          ,p_loss_ccid        => -1
58202 
58203          ,p_actual_flag      => l_actual_flag
58204          ,p_enc_flag         => null
58205          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
58206          ,p_enc_g_l_ref      => null
58207          );
58208       END IF;
58209    END IF;
58210 END IF;
58211 
58212    ELSE
58213       --
58214       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
58215       --
58216       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58217          trace
58218             (p_msg      => 'Trancaction revesal option is Y'
58219             ,p_level    => C_LEVEL_STATEMENT
58220             ,p_module   => l_log_module);
58221       END IF;
58222    END IF;
58223 
58224 END LOOP;
58225 l_result := XLA_AE_LINES_PKG.InsertLines ;
58226 end loop;
58227 close line_cur;
58228 
58229 
58230 --
58231 -- insert headers into xla_ae_headers_gt table
58232 --
58233 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
58234 
58235 -- insert into errors table here.
58236 
58237 END LOOP;
58238 
58239 --
58240 -- 4865292
58241 --
58242 -- Compare g_hdr_extract_count with event count in
58243 -- CreateHeadersAndLines.
58244 --
58245 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
58246 
58247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58248    trace (p_msg     => '# rows extracted from header extract objects '
58249                     || ' (running total): '
58250                     || g_hdr_extract_count
58251          ,p_level   => C_LEVEL_STATEMENT
58252          ,p_module  => l_log_module);
58253 END IF;
58254 
58255 CLOSE header_cur;
58256 --
58257 
58258 --
58259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58260    trace
58261       (p_msg      => 'END of EventClass_89'
58262       ,p_level    => C_LEVEL_PROCEDURE
58263       ,p_module   => l_log_module);
58264 END IF;
58265 --
58266 RETURN l_result;
58267 EXCEPTION
58268 WHEN xla_exceptions_pkg.application_exception THEN
58269    
58270 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
58271 
58272    
58273 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
58274 
58275    RAISE;
58276 WHEN OTHERS THEN
58277    xla_exceptions_pkg.raise_message
58278       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.EventClass_89');
58279 END EventClass_89;
58280 --
58281 
58282 ---------------------------------------
58283 --
58284 -- PRIVATE PROCEDURE
58285 --         insert_sources_90
58286 --
58287 ----------------------------------------
58288 --
58289 PROCEDURE insert_sources_90(
58290                                 p_target_ledger_id       IN NUMBER
58291                               , p_language               IN VARCHAR2
58292                               , p_sla_ledger_id          IN NUMBER
58293                               , p_pad_start_date         IN DATE
58294                               , p_pad_end_date           IN DATE
58295                          )
58296 IS
58297 
58298 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REQUISITION_BURDEN_ALL';
58299 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REQUISITION_BURDEN';
58300 p_apps_owner                   VARCHAR2(30);
58301 l_log_module                   VARCHAR2(240);
58302 BEGIN
58303 IF g_log_enabled THEN
58304       l_log_module := C_DEFAULT_MODULE||'.insert_sources_90';
58305 END IF;
58306 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58307 
58308       trace
58309          (p_msg      => 'BEGIN of insert_sources_90'
58310          ,p_level    => C_LEVEL_PROCEDURE
58311          ,p_module   => l_log_module);
58312 
58313 END IF;
58314 
58315 -- select APPS owner
58316 SELECT oracle_username
58317   INTO p_apps_owner
58318   FROM fnd_oracle_userid
58319  WHERE read_only_flag = 'U'
58320 ;
58321 
58322 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58323       trace
58324          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
58325                         ' - p_language = '||p_language||
58326                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
58327                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
58328                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
58329                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
58330          ,p_level    => C_LEVEL_STATEMENT
58331          ,p_module   => l_log_module);
58332 END IF;
58333 
58334 
58335 --
58336 INSERT INTO xla_diag_sources --hdr2
58337 (
58338         event_id
58339       , ledger_id
58340       , sla_ledger_id
58341       , description_language
58342       , object_name
58343       , object_type_code
58344       , line_number
58345       , source_application_id
58346       , source_type_code
58347       , source_code
58348       , source_value
58349       , source_meaning
58350       , created_by
58351       , creation_date
58352       , last_update_date
58353       , last_updated_by
58354       , last_update_login
58355       , program_update_date
58356       , program_application_id
58357       , program_id
58358       , request_id
58359 )
58360 SELECT
58361         event_id
58362       , p_target_ledger_id
58363       , p_sla_ledger_id
58364       , p_language
58365       , object_name
58366       , object_type_code
58367       , line_number
58368       , source_application_id
58369       , source_type_code
58370       , source_code
58371       , SUBSTR(source_value ,1,1996)
58372       , SUBSTR(source_meaning ,1,200)
58373       , xla_environment_pkg.g_Usr_Id
58374       , TRUNC(SYSDATE)
58375       , TRUNC(SYSDATE)
58376       , xla_environment_pkg.g_Usr_Id
58377       , xla_environment_pkg.g_Login_Id
58378       , TRUNC(SYSDATE)
58379       , xla_environment_pkg.g_Prog_Appl_Id
58380       , xla_environment_pkg.g_Prog_Id
58381       , xla_environment_pkg.g_Req_Id
58382   FROM (
58383        SELECT xet.event_id                  event_id
58384             , 0                          line_number
58385             , CASE r
58386                WHEN 1 THEN 'PA_XLA_BC_PKT_REQ_HEADER_V' 
58387                 
58388                ELSE null
58389               END                           object_name
58390             , CASE r
58391                 WHEN 1 THEN 'HEADER' 
58392                 
58393                 ELSE null
58394               END                           object_type_code
58395             , CASE r
58396                 WHEN 1 THEN '201' 
58397                 
58398                 ELSE null
58399               END                           source_application_id
58400             , 'S'             source_type_code
58401             , CASE r
58402                 WHEN 1 THEN 'GL_DATE' 
58403                 
58404                 ELSE null
58405               END                           source_code
58406             , CASE r
58407                 WHEN 1 THEN TO_CHAR(h2.GL_DATE)
58408                 
58409                 ELSE null
58410               END                           source_value
58411             , null              source_meaning
58412          FROM xla_events_gt     xet  
58413       , PA_XLA_BC_PKT_REQ_HEADER_V  h2
58414              ,(select rownum r from all_objects where rownum <= 1 and owner = p_apps_owner)
58415          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
58416            AND xet.event_class_code = C_EVENT_CLASS_CODE
58417               AND h2.event_id = xet.event_id
58418 
58419 )
58420 ;
58421 --
58422 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58423 
58424       trace
58425          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
58426          ,p_level    => C_LEVEL_STATEMENT
58427          ,p_module   => l_log_module);
58428 
58429 END IF;
58430 --
58431 
58432 
58433 
58434 --
58435 INSERT INTO xla_diag_sources  --line2
58436 (
58437         event_id
58438       , ledger_id
58439       , sla_ledger_id
58440       , description_language
58441       , object_name
58442       , object_type_code
58443       , line_number
58444       , source_application_id
58445       , source_type_code
58446       , source_code
58447       , source_value
58448       , source_meaning
58449       , created_by
58450       , creation_date
58451       , last_update_date
58452       , last_updated_by
58453       , last_update_login
58454       , program_update_date
58455       , program_application_id
58456       , program_id
58457       , request_id
58458 )
58459 SELECT  event_id
58460       , p_target_ledger_id
58461       , p_sla_ledger_id
58462       , p_language
58463       , object_name
58464       , object_type_code
58465       , line_number
58466       , source_application_id
58467       , source_type_code
58468       , source_code
58469       , SUBSTR(source_value,1,1996)
58470       , SUBSTR(source_meaning ,1,200)
58471       , xla_environment_pkg.g_Usr_Id
58472       , TRUNC(SYSDATE)
58473       , TRUNC(SYSDATE)
58474       , xla_environment_pkg.g_Usr_Id
58475       , xla_environment_pkg.g_Login_Id
58476       , TRUNC(SYSDATE)
58477       , xla_environment_pkg.g_Prog_Appl_Id
58478       , xla_environment_pkg.g_Prog_Id
58479       , xla_environment_pkg.g_Req_Id
58480   FROM (
58481        SELECT xet.event_id                  event_id
58482             , l1.line_number                 line_number
58483             , CASE r
58484                WHEN 1 THEN 'PA_XLA_PROJECT_REF_V' 
58485                 WHEN 2 THEN 'PA_XLA_TASK_REF_V' 
58486                 WHEN 3 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58487                 WHEN 4 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58488                 WHEN 5 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58489                 WHEN 6 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58490                 WHEN 7 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58491                 WHEN 8 THEN 'PA_XLA_PROJECT_REF_V' 
58492                 WHEN 9 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58493                 WHEN 10 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58494                 WHEN 11 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58495                 WHEN 12 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58496                 WHEN 13 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58497                 WHEN 14 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58498                 WHEN 15 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58499                 WHEN 16 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58500                 WHEN 17 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58501                 WHEN 18 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58502                 WHEN 19 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58503                 WHEN 20 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58504                 WHEN 21 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58505                 WHEN 22 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58506                 WHEN 23 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58507                 WHEN 24 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58508                 WHEN 25 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58509                 WHEN 26 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58510                 WHEN 27 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58511                 WHEN 28 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58512                 WHEN 29 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58513                 WHEN 30 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58514                 WHEN 31 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58515                 WHEN 32 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58516                 WHEN 33 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58517                 WHEN 34 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58518                 WHEN 35 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58519                 WHEN 36 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58520                 WHEN 37 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58521                 WHEN 38 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58522                 WHEN 39 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58523                 WHEN 40 THEN 'PA_XLA_BC_PKT_REQ_DETAIL_V' 
58524                 
58525                ELSE null
58526               END                           object_name
58527             , CASE r
58528                 WHEN 1 THEN 'LINE' 
58529                 WHEN 2 THEN 'LINE' 
58530                 WHEN 3 THEN 'LINE' 
58531                 WHEN 4 THEN 'LINE' 
58532                 WHEN 5 THEN 'LINE' 
58533                 WHEN 6 THEN 'LINE' 
58534                 WHEN 7 THEN 'LINE' 
58535                 WHEN 8 THEN 'LINE' 
58536                 WHEN 9 THEN 'LINE' 
58537                 WHEN 10 THEN 'LINE' 
58538                 WHEN 11 THEN 'LINE' 
58539                 WHEN 12 THEN 'LINE' 
58540                 WHEN 13 THEN 'LINE' 
58541                 WHEN 14 THEN 'LINE' 
58542                 WHEN 15 THEN 'LINE' 
58543                 WHEN 16 THEN 'LINE' 
58544                 WHEN 17 THEN 'LINE' 
58545                 WHEN 18 THEN 'LINE' 
58546                 WHEN 19 THEN 'LINE' 
58547                 WHEN 20 THEN 'LINE' 
58548                 WHEN 21 THEN 'LINE' 
58549                 WHEN 22 THEN 'LINE' 
58550                 WHEN 23 THEN 'LINE' 
58551                 WHEN 24 THEN 'LINE' 
58552                 WHEN 25 THEN 'LINE' 
58553                 WHEN 26 THEN 'LINE' 
58554                 WHEN 27 THEN 'LINE' 
58555                 WHEN 28 THEN 'LINE' 
58556                 WHEN 29 THEN 'LINE' 
58557                 WHEN 30 THEN 'LINE' 
58558                 WHEN 31 THEN 'LINE' 
58559                 WHEN 32 THEN 'LINE' 
58560                 WHEN 33 THEN 'LINE' 
58561                 WHEN 34 THEN 'LINE' 
58562                 WHEN 35 THEN 'LINE' 
58563                 WHEN 36 THEN 'LINE' 
58564                 WHEN 37 THEN 'LINE' 
58565                 WHEN 38 THEN 'LINE' 
58566                 WHEN 39 THEN 'LINE' 
58567                 WHEN 40 THEN 'LINE' 
58568                 
58569                 ELSE null
58570               END                           object_type_code
58571             , CASE r
58572                 WHEN 1 THEN '275' 
58573                 WHEN 2 THEN '275' 
58574                 WHEN 3 THEN '201' 
58575                 WHEN 4 THEN '201' 
58576                 WHEN 5 THEN '201' 
58577                 WHEN 6 THEN '201' 
58578                 WHEN 7 THEN '201' 
58579                 WHEN 8 THEN '275' 
58580                 WHEN 9 THEN '201' 
58581                 WHEN 10 THEN '201' 
58582                 WHEN 11 THEN '201' 
58583                 WHEN 12 THEN '201' 
58584                 WHEN 13 THEN '201' 
58585                 WHEN 14 THEN '201' 
58586                 WHEN 15 THEN '201' 
58587                 WHEN 16 THEN '201' 
58588                 WHEN 17 THEN '201' 
58589                 WHEN 18 THEN '201' 
58590                 WHEN 19 THEN '201' 
58591                 WHEN 20 THEN '201' 
58592                 WHEN 21 THEN '201' 
58593                 WHEN 22 THEN '201' 
58594                 WHEN 23 THEN '201' 
58595                 WHEN 24 THEN '201' 
58596                 WHEN 25 THEN '201' 
58597                 WHEN 26 THEN '201' 
58598                 WHEN 27 THEN '201' 
58599                 WHEN 28 THEN '201' 
58600                 WHEN 29 THEN '201' 
58601                 WHEN 30 THEN '201' 
58602                 WHEN 31 THEN '201' 
58603                 WHEN 32 THEN '201' 
58604                 WHEN 33 THEN '201' 
58605                 WHEN 34 THEN '201' 
58606                 WHEN 35 THEN '201' 
58607                 WHEN 36 THEN '201' 
58608                 WHEN 37 THEN '201' 
58609                 WHEN 38 THEN '201' 
58610                 WHEN 39 THEN '201' 
58611                 WHEN 40 THEN '201' 
58612                 
58613                 ELSE null
58614               END                           source_application_id
58615             , 'S'             source_type_code
58616             , CASE r
58617                 WHEN 1 THEN 'PROJECT_NAME' 
58618                 WHEN 2 THEN 'TASK_NAME' 
58619                 WHEN 3 THEN 'EXPENDITURE_ORGANIZATION_ID' 
58620                 WHEN 4 THEN 'EXPENDITURE_TYPE' 
58621                 WHEN 5 THEN 'BUDGET_ACCOUNT' 
58622                 WHEN 6 THEN 'MAIN_OR_BACKING_CODE' 
58623                 WHEN 7 THEN 'BURDEN_COST_FLAG' 
58624                 WHEN 8 THEN 'PROJ_BURDEN_DISPLAY_METHOD' 
58625                 WHEN 9 THEN 'ACCOUNTING_REVERSAL_FLAG' 
58626                 WHEN 10 THEN 'ALLOC_TO_APPLN_ID' 
58627                 WHEN 11 THEN 'ALLOC_TO_DIST_TYPE' 
58628                 WHEN 12 THEN 'ALLOC_TO_ENTITY_CODE' 
58629                 WHEN 13 THEN 'ALLOC_TO_FIRST_DIST_ID' 
58630                 WHEN 14 THEN 'ALLOC_TO_FIRST_SYS_TRANS_ID' 
58631                 WHEN 15 THEN 'ALLOC_TO_SECOND_DIST_ID' 
58632                 WHEN 16 THEN 'LINE_TYPE_NAME' 
58633                 WHEN 17 THEN 'ENC_UPG_CR_ACCT_CLASS' 
58634                 WHEN 18 THEN 'ENC_UPG_CR_ACCOUNT' 
58635                 WHEN 19 THEN 'ENTERED_AMT' 
58636                 WHEN 20 THEN 'CURRENCY_CODE' 
58637                 WHEN 21 THEN 'ACCOUNTED_AMT' 
58638                 WHEN 22 THEN 'ENC_UPG_DR_ACCT_CLASS' 
58639                 WHEN 23 THEN 'ENC_UPG_DR_ACCOUNT' 
58640                 WHEN 24 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
58641                 WHEN 25 THEN 'ENC_UPG_CR_ENC_TYPE_ID' 
58642                 WHEN 26 THEN 'ENC_UPG_DR_ENC_TYPE_ID' 
58643                 WHEN 27 THEN 'REQ_APPLICATION_ID' 
58644                 WHEN 28 THEN 'REQ_DISTRIBUTION_TYPE' 
58645                 WHEN 29 THEN 'REQ_ENTITY_CODE' 
58646                 WHEN 30 THEN 'REQ_FIRST_DIST_ID' 
58647                 WHEN 31 THEN 'REQ_FIRST_SYS_TRANS_ID' 
58648                 WHEN 32 THEN 'REQ_SECOND_DIST_ID' 
58649                 WHEN 33 THEN 'REQ_DISTRIBUTION_ID' 
58650                 WHEN 34 THEN 'PA_APPLICATION_ID' 
58651                 WHEN 35 THEN 'PA_DISTRIBUTION_TYPE' 
58652                 WHEN 36 THEN 'PA_ENTITY_CODE' 
58653                 WHEN 37 THEN 'PA_FIRST_DIST_ID' 
58654                 WHEN 38 THEN 'PA_FIRST_SYS_TRANS_ID' 
58655                 WHEN 39 THEN 'PA_SECOND_DIST_ID' 
58656                 WHEN 40 THEN 'DOCUMENT_DISTRIBUTION_TYPE' 
58657                 
58658                 ELSE null
58659               END                           source_code
58660             , CASE r
58661                 WHEN 1 THEN TO_CHAR(l3.PROJECT_NAME)
58662                 WHEN 2 THEN TO_CHAR(l4.TASK_NAME)
58663                 WHEN 3 THEN TO_CHAR(l1.EXPENDITURE_ORGANIZATION_ID)
58664                 WHEN 4 THEN TO_CHAR(l1.EXPENDITURE_TYPE)
58665                 WHEN 5 THEN TO_CHAR(l1.BUDGET_ACCOUNT)
58666                 WHEN 6 THEN TO_CHAR(l1.MAIN_OR_BACKING_CODE)
58667                 WHEN 7 THEN TO_CHAR(l1.BURDEN_COST_FLAG)
58668                 WHEN 8 THEN TO_CHAR(l3.PROJ_BURDEN_DISPLAY_METHOD)
58669                 WHEN 9 THEN TO_CHAR(l1.ACCOUNTING_REVERSAL_FLAG)
58670                 WHEN 10 THEN TO_CHAR(l1.ALLOC_TO_APPLN_ID)
58671                 WHEN 11 THEN TO_CHAR(l1.ALLOC_TO_DIST_TYPE)
58672                 WHEN 12 THEN TO_CHAR(l1.ALLOC_TO_ENTITY_CODE)
58673                 WHEN 13 THEN TO_CHAR(l1.ALLOC_TO_FIRST_DIST_ID)
58674                 WHEN 14 THEN TO_CHAR(l1.ALLOC_TO_FIRST_SYS_TRANS_ID)
58675                 WHEN 15 THEN TO_CHAR(l1.ALLOC_TO_SECOND_DIST_ID)
58676                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE_NAME)
58677                 WHEN 17 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
58678                 WHEN 18 THEN TO_CHAR(l1.ENC_UPG_CR_ACCOUNT)
58679                 WHEN 19 THEN TO_CHAR(l1.ENTERED_AMT)
58680                 WHEN 20 THEN TO_CHAR(l1.CURRENCY_CODE)
58681                 WHEN 21 THEN TO_CHAR(l1.ACCOUNTED_AMT)
58682                 WHEN 22 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
58683                 WHEN 23 THEN TO_CHAR(l1.ENC_UPG_DR_ACCOUNT)
58684                 WHEN 24 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
58685                 WHEN 25 THEN TO_CHAR(l1.ENC_UPG_CR_ENC_TYPE_ID)
58686                 WHEN 26 THEN TO_CHAR(l1.ENC_UPG_DR_ENC_TYPE_ID)
58687                 WHEN 27 THEN TO_CHAR(l1.REQ_APPLICATION_ID)
58688                 WHEN 28 THEN TO_CHAR(l1.REQ_DISTRIBUTION_TYPE)
58689                 WHEN 29 THEN TO_CHAR(l1.REQ_ENTITY_CODE)
58690                 WHEN 30 THEN TO_CHAR(l1.REQ_FIRST_DIST_ID)
58691                 WHEN 31 THEN TO_CHAR(l1.REQ_FIRST_SYS_TRANS_ID)
58692                 WHEN 32 THEN TO_CHAR(l1.REQ_SECOND_DIST_ID)
58693                 WHEN 33 THEN TO_CHAR(l1.REQ_DISTRIBUTION_ID)
58694                 WHEN 34 THEN TO_CHAR(l1.PA_APPLICATION_ID)
58695                 WHEN 35 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
58696                 WHEN 36 THEN TO_CHAR(l1.PA_ENTITY_CODE)
58697                 WHEN 37 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
58698                 WHEN 38 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
58699                 WHEN 39 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
58700                 WHEN 40 THEN TO_CHAR(l1.DOCUMENT_DISTRIBUTION_TYPE)
58701                 
58702                 ELSE null
58703               END                           source_value
58704             , CASE r
58705                 WHEN 3 THEN XLA_00201_AAD_S_000005_BC_PKG.GetMeaning(
58706                           1011404
58707                          ,TO_CHAR(l1.EXPENDITURE_ORGANIZATION_ID)
58708                          ,'EXPENDITURE_ORGANIZATION_ID'
58709                          ,'S'
58710                          ,201)
58711                 WHEN 7 THEN fvl14.meaning
58712                 
58713                 ELSE null
58714               END               source_meaning
58715          FROM  xla_events_gt     xet  
58716         , PA_XLA_BC_PKT_REQ_DETAIL_V  l1
58717         , PA_XLA_PROJECT_REF_V  l3
58718         , PA_XLA_TASK_REF_V  l4
58719   , fnd_lookup_values    fvl14
58720             , (select rownum r from all_objects where rownum <= 40 and owner = p_apps_owner)
58721         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
58722           AND xet.event_class_code = C_EVENT_CLASS_CODE
58723             AND l1.event_id          = xet.event_id
58724  AND l3.project_id=l1.project_id AND l4.task_id=l1.task_id   AND fvl14.lookup_type(+)         = 'BC_PKT_BURDEN_COST_FLAG'
58725   AND fvl14.lookup_code(+)         = l1.BURDEN_COST_FLAG
58726   AND fvl14.view_application_id(+) = 275
58727   AND fvl14.language(+)            = USERENV('LANG')
58728   
58729 )
58730 ;
58731 --
58732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
58733 
58734       trace
58735          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
58736          ,p_level    => C_LEVEL_STATEMENT
58737          ,p_module   => l_log_module);
58738 
58739 END IF;
58740 
58741 
58742 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58743       trace
58744          (p_msg      => 'END of insert_sources_90'
58745          ,p_level    => C_LEVEL_PROCEDURE
58746          ,p_module   => l_log_module);
58747 END IF;
58748 EXCEPTION
58749   WHEN xla_exceptions_pkg.application_exception THEN
58750       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
58751             trace
58752                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
58753                ,p_level    => C_LEVEL_EXCEPTION
58754                ,p_module   => l_log_module);
58755       END IF;
58756       RAISE;
58757   WHEN OTHERS THEN
58758       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
58759             trace
58760                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
58761                ,p_level    => C_LEVEL_EXCEPTION
58762                ,p_module   => l_log_module);
58763        END IF;
58764        xla_exceptions_pkg.raise_message
58765            (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.insert_sources_90');
58766 END insert_sources_90;
58767 --
58768 
58769 ---------------------------------------
58770 --
58771 -- PRIVATE FUNCTION
58772 --         EventClass_90
58773 --
58774 ----------------------------------------
58775 --
58776 FUNCTION EventClass_90
58777        (p_application_id         IN NUMBER
58778        ,p_base_ledger_id         IN NUMBER
58779        ,p_target_ledger_id       IN NUMBER
58780        ,p_language               IN VARCHAR2
58781        ,p_currency_code          IN VARCHAR2
58782        ,p_sla_ledger_id          IN NUMBER
58783        ,p_pad_start_date         IN DATE
58784        ,p_pad_end_date           IN DATE
58785        ,p_primary_ledger_id      IN NUMBER)
58786 RETURN BOOLEAN IS
58787 --
58788 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REQUISITION_BURDEN_ALL';
58789 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REQUISITION_BURDEN';
58790 
58791 l_calculate_acctd_flag   VARCHAR2(1) :='N';
58792 l_calculate_g_l_flag     VARCHAR2(1) :='N';
58793 --
58794 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58795 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58796 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58797 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58798 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58799 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58800 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58801 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58802 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58803 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58804 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58805 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58806 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58807 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
58808 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58809 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58810 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58811 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
58812 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58813 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58814 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58815 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
58816 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
58817 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
58818 
58819 l_event_id                             NUMBER;
58820 l_previous_event_id                    NUMBER;
58821 l_first_event_id                       NUMBER;
58822 l_last_event_id                        NUMBER;
58823 
58824 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
58825 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
58826 --
58827 --
58828 l_result                    BOOLEAN := TRUE;
58829 l_rows                      NUMBER  := 1000;
58830 l_event_type_name           VARCHAR2(80) := 'All';
58831 l_event_class_name          VARCHAR2(80) := 'Burden for Requisition';
58832 l_description               VARCHAR2(4000);
58833 l_transaction_reversal      NUMBER;
58834 l_ae_header_id              NUMBER;
58835 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
58836 l_log_module                VARCHAR2(240);
58837 --
58838 l_acct_reversal_source      VARCHAR2(30);
58839 l_trx_reversal_source       VARCHAR2(30);
58840 
58841 l_continue_with_lines       BOOLEAN := TRUE;
58842 --
58843 l_acc_rev_gl_date_source    DATE;                      -- 4262811
58844 --
58845 type t_array_event_id is table of number index by binary_integer;
58846 
58847 l_rec_array_event                    t_rec_array_event;
58848 l_null_rec_array_event               t_rec_array_event;
58849 l_array_ae_header_id                 xla_number_array_type;
58850 l_actual_flag                        VARCHAR2(1) := NULL;
58851 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
58852 l_balance_type_code                  VARCHAR2(1) :=NULL;
58853 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
58854 
58855 --
58856 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
58857 --
58858 
58859 TYPE t_array_source_79 IS TABLE OF PA_XLA_BC_PKT_REQ_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
58860 
58861 TYPE t_array_source_3 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJECT_NAME%TYPE INDEX BY BINARY_INTEGER;
58862 TYPE t_array_source_4 IS TABLE OF PA_XLA_TASK_REF_V.TASK_NAME%TYPE INDEX BY BINARY_INTEGER;
58863 TYPE t_array_source_5 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.EXPENDITURE_ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
58864 TYPE t_array_source_6 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.EXPENDITURE_TYPE%TYPE INDEX BY BINARY_INTEGER;
58865 TYPE t_array_source_11 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
58866 TYPE t_array_source_13 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
58867 TYPE t_array_source_14 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.BURDEN_COST_FLAG%TYPE INDEX BY BINARY_INTEGER;
58868 TYPE t_array_source_15 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJ_BURDEN_DISPLAY_METHOD%TYPE INDEX BY BINARY_INTEGER;
58869 TYPE t_array_source_16 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
58870 TYPE t_array_source_17 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ALLOC_TO_APPLN_ID%TYPE INDEX BY BINARY_INTEGER;
58871 TYPE t_array_source_18 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ALLOC_TO_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
58872 TYPE t_array_source_19 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ALLOC_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
58873 TYPE t_array_source_20 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ALLOC_TO_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
58874 TYPE t_array_source_21 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ALLOC_TO_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
58875 TYPE t_array_source_22 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ALLOC_TO_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
58876 TYPE t_array_source_30 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.LINE_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
58877 TYPE t_array_source_31 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
58878 TYPE t_array_source_32 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ENC_UPG_CR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
58879 TYPE t_array_source_33 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
58880 TYPE t_array_source_34 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
58881 TYPE t_array_source_35 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
58882 TYPE t_array_source_36 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
58883 TYPE t_array_source_37 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ENC_UPG_DR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
58884 TYPE t_array_source_38 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
58885 TYPE t_array_source_39 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ENC_UPG_CR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
58886 TYPE t_array_source_40 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.ENC_UPG_DR_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
58887 TYPE t_array_source_41 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.REQ_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
58888 TYPE t_array_source_42 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.REQ_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
58889 TYPE t_array_source_43 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
58890 TYPE t_array_source_44 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.REQ_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
58891 TYPE t_array_source_45 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.REQ_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
58892 TYPE t_array_source_46 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.REQ_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
58893 TYPE t_array_source_47 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.REQ_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
58894 TYPE t_array_source_68 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
58895 TYPE t_array_source_69 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
58896 TYPE t_array_source_70 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
58897 TYPE t_array_source_71 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
58898 TYPE t_array_source_72 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
58899 TYPE t_array_source_73 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
58900 TYPE t_array_source_74 IS TABLE OF PA_XLA_BC_PKT_REQ_DETAIL_V.DOCUMENT_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
58901 
58902 l_array_source_79              t_array_source_79;
58903 
58904 l_array_source_3      t_array_source_3;
58905 l_array_source_4      t_array_source_4;
58906 l_array_source_5      t_array_source_5;
58907 l_array_source_6      t_array_source_6;
58908 l_array_source_11      t_array_source_11;
58909 l_array_source_13      t_array_source_13;
58910 l_array_source_14      t_array_source_14;
58911 l_array_source_14_meaning      t_array_lookup_meaning;
58912 l_array_source_15      t_array_source_15;
58913 l_array_source_16      t_array_source_16;
58914 l_array_source_17      t_array_source_17;
58915 l_array_source_18      t_array_source_18;
58916 l_array_source_19      t_array_source_19;
58917 l_array_source_20      t_array_source_20;
58918 l_array_source_21      t_array_source_21;
58919 l_array_source_22      t_array_source_22;
58920 l_array_source_30      t_array_source_30;
58921 l_array_source_31      t_array_source_31;
58922 l_array_source_32      t_array_source_32;
58923 l_array_source_33      t_array_source_33;
58924 l_array_source_34      t_array_source_34;
58925 l_array_source_35      t_array_source_35;
58926 l_array_source_36      t_array_source_36;
58927 l_array_source_37      t_array_source_37;
58928 l_array_source_38      t_array_source_38;
58929 l_array_source_39      t_array_source_39;
58930 l_array_source_40      t_array_source_40;
58931 l_array_source_41      t_array_source_41;
58932 l_array_source_42      t_array_source_42;
58933 l_array_source_43      t_array_source_43;
58934 l_array_source_44      t_array_source_44;
58935 l_array_source_45      t_array_source_45;
58936 l_array_source_46      t_array_source_46;
58937 l_array_source_47      t_array_source_47;
58938 l_array_source_68      t_array_source_68;
58939 l_array_source_69      t_array_source_69;
58940 l_array_source_70      t_array_source_70;
58941 l_array_source_71      t_array_source_71;
58942 l_array_source_72      t_array_source_72;
58943 l_array_source_73      t_array_source_73;
58944 l_array_source_74      t_array_source_74;
58945 
58946 --
58947 CURSOR header_cur
58948 IS
58949 SELECT /*+ leading(xet) cardinality(xet,1) */
58950 -- Event Class Code: REQUISITION_BURDEN
58951     xet.entity_id
58952    ,xet.legal_entity_id
58953    ,xet.entity_code
58954    ,xet.transaction_number
58955    ,xet.event_id
58956    ,xet.event_class_code
58957    ,xet.event_type_code
58958    ,xet.event_number
58959    ,xet.event_date
58960    ,xet.transaction_date
58961    ,xet.reference_num_1
58962    ,xet.reference_num_2
58963    ,xet.reference_num_3
58964    ,xet.reference_num_4
58965    ,xet.reference_char_1
58966    ,xet.reference_char_2
58967    ,xet.reference_char_3
58968    ,xet.reference_char_4
58969    ,xet.reference_date_1
58970    ,xet.reference_date_2
58971    ,xet.reference_date_3
58972    ,xet.reference_date_4
58973    ,xet.event_created_by
58974    ,xet.budgetary_control_flag 
58975   , h2.GL_DATE    source_79
58976   FROM xla_events_gt     xet 
58977   , PA_XLA_BC_PKT_REQ_HEADER_V  h2
58978  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
58979    and xet.event_class_code = C_EVENT_CLASS_CODE
58980    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
58981 
58982  ORDER BY event_id
58983 ;
58984 
58985 
58986 --
58987 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
58988 IS
58989 SELECT  /*+ leading(xet) cardinality(xet,1) */
58990 -- Event Class Code: REQUISITION_BURDEN
58991     xet.entity_id
58992    ,xet.legal_entity_id
58993    ,xet.entity_code
58994    ,xet.transaction_number
58995    ,xet.event_id
58996    ,xet.event_class_code
58997    ,xet.event_type_code
58998    ,xet.event_number
58999    ,xet.event_date
59000    ,xet.transaction_date
59001    ,xet.reference_num_1
59002    ,xet.reference_num_2
59003    ,xet.reference_num_3
59004    ,xet.reference_num_4
59005    ,xet.reference_char_1
59006    ,xet.reference_char_2
59007    ,xet.reference_char_3
59008    ,xet.reference_char_4
59009    ,xet.reference_date_1
59010    ,xet.reference_date_2
59011    ,xet.reference_date_3
59012    ,xet.reference_date_4
59013    ,xet.event_created_by
59014    ,xet.budgetary_control_flag
59015  , l1.LINE_NUMBER  
59016   , l3.PROJECT_NAME    source_3
59017   , l4.TASK_NAME    source_4
59018   , l1.EXPENDITURE_ORGANIZATION_ID    source_5
59019   , l1.EXPENDITURE_TYPE    source_6
59020   , l1.BUDGET_ACCOUNT    source_11
59021   , l1.MAIN_OR_BACKING_CODE    source_13
59022   , l1.BURDEN_COST_FLAG    source_14
59023   , fvl14.meaning   source_14_meaning
59024   , l3.PROJ_BURDEN_DISPLAY_METHOD    source_15
59025   , l1.ACCOUNTING_REVERSAL_FLAG    source_16
59026   , l1.ALLOC_TO_APPLN_ID    source_17
59027   , l1.ALLOC_TO_DIST_TYPE    source_18
59028   , l1.ALLOC_TO_ENTITY_CODE    source_19
59029   , l1.ALLOC_TO_FIRST_DIST_ID    source_20
59030   , l1.ALLOC_TO_FIRST_SYS_TRANS_ID    source_21
59031   , l1.ALLOC_TO_SECOND_DIST_ID    source_22
59032   , l1.LINE_TYPE_NAME    source_30
59033   , l1.ENC_UPG_CR_ACCT_CLASS    source_31
59034   , l1.ENC_UPG_CR_ACCOUNT    source_32
59035   , l1.ENTERED_AMT    source_33
59036   , l1.CURRENCY_CODE    source_34
59037   , l1.ACCOUNTED_AMT    source_35
59038   , l1.ENC_UPG_DR_ACCT_CLASS    source_36
59039   , l1.ENC_UPG_DR_ACCOUNT    source_37
59040   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_38
59041   , l1.ENC_UPG_CR_ENC_TYPE_ID    source_39
59042   , l1.ENC_UPG_DR_ENC_TYPE_ID    source_40
59043   , l1.REQ_APPLICATION_ID    source_41
59044   , l1.REQ_DISTRIBUTION_TYPE    source_42
59045   , l1.REQ_ENTITY_CODE    source_43
59046   , l1.REQ_FIRST_DIST_ID    source_44
59047   , l1.REQ_FIRST_SYS_TRANS_ID    source_45
59048   , l1.REQ_SECOND_DIST_ID    source_46
59049   , l1.REQ_DISTRIBUTION_ID    source_47
59050   , l1.PA_APPLICATION_ID    source_68
59051   , l1.PA_DISTRIBUTION_TYPE    source_69
59052   , l1.PA_ENTITY_CODE    source_70
59053   , l1.PA_FIRST_DIST_ID    source_71
59054   , l1.PA_FIRST_SYS_TRANS_ID    source_72
59055   , l1.PA_SECOND_DIST_ID    source_73
59056   , l1.DOCUMENT_DISTRIBUTION_TYPE    source_74
59057   FROM xla_events_gt     xet 
59058   , PA_XLA_BC_PKT_REQ_DETAIL_V  l1
59059   , PA_XLA_PROJECT_REF_V  l3
59060   , PA_XLA_TASK_REF_V  l4
59061   , fnd_lookup_values    fvl14
59062  WHERE xet.event_id between x_first_event_id and x_last_event_id
59063    and xet.event_date between p_pad_start_date and p_pad_end_date
59064    and xet.event_class_code = C_EVENT_CLASS_CODE
59065    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
59066  AND l3.project_id=l1.project_id AND l4.task_id=l1.task_id   AND fvl14.lookup_type(+)         = 'BC_PKT_BURDEN_COST_FLAG'
59067   AND fvl14.lookup_code(+)         = l1.BURDEN_COST_FLAG
59068   AND fvl14.view_application_id(+) = 275
59069   AND fvl14.language(+)            = USERENV('LANG')
59070   ;
59071 
59072 --
59073 BEGIN
59074 IF g_log_enabled THEN
59075    l_log_module := C_DEFAULT_MODULE||'.EventClass_90';
59076 END IF;
59077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59078    trace
59079       (p_msg      => 'BEGIN of EventClass_90'
59080       ,p_level    => C_LEVEL_PROCEDURE
59081       ,p_module   => l_log_module);
59082 END IF;
59083 
59084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59085    trace
59086       (p_msg      => 'p_application_id = '||p_application_id||
59087                      ' - p_base_ledger_id = '||p_base_ledger_id||
59088                      ' - p_target_ledger_id  = '||p_target_ledger_id||
59089                      ' - p_language = '||p_language||
59090                      ' - p_currency_code = '||p_currency_code||
59091                      ' - p_sla_ledger_id = '||p_sla_ledger_id
59092       ,p_level    => C_LEVEL_STATEMENT
59093       ,p_module   => l_log_module);
59094 END IF;
59095 --
59096 -- initialze arrays
59097 --
59098 g_array_event.DELETE;
59099 l_rec_array_event := l_null_rec_array_event;
59100 --
59101 --------------------------------------
59102 -- 4262811 Initialze MPA Line Number
59103 --------------------------------------
59104 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
59105 
59106 --
59107 
59108 --
59109 OPEN header_cur;
59110 --
59111 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59112    trace
59113    (p_msg      => 'SQL - FETCH header_cur'
59114    ,p_level    => C_LEVEL_STATEMENT
59115    ,p_module   => l_log_module);
59116 END IF;
59117 --
59118 LOOP
59119 FETCH header_cur BULK COLLECT INTO
59120         l_array_entity_id
59121       , l_array_legal_entity_id
59122       , l_array_entity_code
59123       , l_array_transaction_num
59124       , l_array_event_id
59125       , l_array_class_code
59126       , l_array_event_type
59127       , l_array_event_number
59128       , l_array_event_date
59129       , l_array_transaction_date
59130       , l_array_reference_num_1
59131       , l_array_reference_num_2
59132       , l_array_reference_num_3
59133       , l_array_reference_num_4
59134       , l_array_reference_char_1
59135       , l_array_reference_char_2
59136       , l_array_reference_char_3
59137       , l_array_reference_char_4
59138       , l_array_reference_date_1
59139       , l_array_reference_date_2
59140       , l_array_reference_date_3
59141       , l_array_reference_date_4
59142       , l_array_event_created_by
59143       , l_array_budgetary_control_flag 
59144       , l_array_source_79
59145       LIMIT l_rows;
59146 --
59147 IF (C_LEVEL_EVENT >= g_log_level) THEN
59148    trace
59149    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
59150    ,p_level    => C_LEVEL_EVENT
59151    ,p_module   => l_log_module);
59152 END IF;
59153 --
59154 EXIT WHEN l_array_entity_id.COUNT = 0;
59155 
59156 -- initialize arrays
59157 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
59158 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
59159 
59160 --
59161 -- Bug 4458708
59162 --
59163 XLA_AE_LINES_PKG.g_LineNumber := 0;
59164 
59165 
59166 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
59167 g_last_hdr_idx := l_array_event_id.LAST;
59168 --
59169 -- loop for the headers. Each iteration is for each header extract row
59170 -- fetched in header cursor
59171 --
59172 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
59173 
59174 --
59175 -- set event info as cache for other routines to refer event attributes
59176 --
59177 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
59178    (p_application_id           => p_application_id
59179    ,p_primary_ledger_id        => p_primary_ledger_id
59180    ,p_base_ledger_id           => p_base_ledger_id
59181    ,p_target_ledger_id         => p_target_ledger_id
59182    ,p_entity_id                => l_array_entity_id(hdr_idx)
59183    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
59184    ,p_entity_code              => l_array_entity_code(hdr_idx)
59185    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
59186    ,p_event_id                 => l_array_event_id(hdr_idx)
59187    ,p_event_class_code         => l_array_class_code(hdr_idx)
59188    ,p_event_type_code          => l_array_event_type(hdr_idx)
59189    ,p_event_number             => l_array_event_number(hdr_idx)
59190    ,p_event_date               => l_array_event_date(hdr_idx)
59191    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
59192    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
59193    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
59194    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
59195    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
59196    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
59197    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
59198    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
59199    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
59200    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
59201    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
59202    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
59203    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
59204    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
59205    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
59206 
59207 --
59208 -- set the status of entry to C_VALID (0)
59209 --
59210 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
59211 
59212 --
59213 -- initialize a row for ae header
59214 --
59215 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
59216 
59217 l_event_id := l_array_event_id(hdr_idx);
59218 
59219 --
59220 -- storing the hdr_idx for event. May be used by line cursor.
59221 --
59222 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
59223 
59224 --
59225 -- store sources from header extract. This can be improved to
59226 -- store only those sources from header extract that may be used in lines
59227 --
59228 
59229 g_array_event(l_event_id).array_value_date('source_79') := l_array_source_79(hdr_idx);
59230 
59231 --
59232 -- initilaize the status of ae headers for diffrent balance types
59233 -- the status is initialised to C_NOT_CREATED (2)
59234 --
59235 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
59236 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
59237 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
59238 
59239 --
59240 -- call api to validate and store accounting attributes for header
59241 --
59242 
59243 ------------------------------------------------------------
59244 -- Accrual Reversal : to get date for Standard Source (NONE)
59245 ------------------------------------------------------------
59246 l_acc_rev_gl_date_source := NULL;
59247 
59248      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
59249       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_79');
59250 
59251 
59252 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
59253 
59254 XLA_AE_HEADER_PKG.SetJeCategoryName;
59255 
59256 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
59257 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
59258 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
59259 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
59260 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
59261 
59262 
59263 -- No header level analytical criteria
59264 
59265 --
59266 --accounting attribute enhancement, bug 3612931
59267 --
59268 l_trx_reversal_source := SUBSTR(NULL, 1,30);
59269 
59270 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
59271    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
59272 
59273    xla_accounting_err_pkg.build_message
59274       (p_appli_s_name            => 'XLA'
59275       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
59276       ,p_token_1                 => 'ACCT_ATTR_NAME'
59277       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
59278       ,p_token_2                 => 'PRODUCT_NAME'
59279       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
59280       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
59281       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
59282       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
59283 
59284 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
59285    --
59286    -- following sets the accounting attributes needed to reverse
59287    -- accounting for a distributeion
59288    --
59289    xla_ae_lines_pkg.SetTrxReversalAttrs
59290       (p_event_id              => l_event_id
59291       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
59292       ,p_trx_reversal_source   => l_trx_reversal_source);
59293 
59294 END IF;
59295 
59296 
59297 ----------------------------------------------------------------
59298 -- 4262811 -  update the header statuses to invalid in need be
59299 ----------------------------------------------------------------
59300 --
59301 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
59302 
59303 
59304   -----------------------------------------------
59305   -- No accrual reversal for the event class/type
59306   -----------------------------------------------
59307 ----------------------------------------------------------------
59308 
59309 --
59310 -- this ends the header loop iteration for one bulk fetch
59311 --
59312 END LOOP;
59313 
59314 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
59315 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
59316 
59317 --
59318 -- insert dummy rows into lines gt table that were created due to
59319 -- transaction reversals
59320 --
59321 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
59322    l_result := XLA_AE_LINES_PKG.InsertLines;
59323 END IF;
59324 
59325 --
59326 -- reset the temp_line_num for each set of events fetched from header
59327 -- cursor rather than doing it for each new event in line cursor
59328 -- Bug 3939231
59329 --
59330 xla_ae_lines_pkg.g_temp_line_num := 0;
59331 
59332 
59333 
59334 --
59335 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
59336 --
59337 --
59338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59339 
59340       trace
59341          (p_msg      => 'SQL - FETCH line_cur'
59342          ,p_level    => C_LEVEL_STATEMENT
59343          ,p_module   => l_log_module);
59344 
59345 END IF;
59346 --
59347 --
59348 LOOP
59349   --
59350   FETCH line_cur BULK COLLECT INTO
59351         l_array_entity_id
59352       , l_array_legal_entity_id
59353       , l_array_entity_code
59354       , l_array_transaction_num
59355       , l_array_event_id
59356       , l_array_class_code
59357       , l_array_event_type
59358       , l_array_event_number
59359       , l_array_event_date
59360       , l_array_transaction_date
59361       , l_array_reference_num_1
59362       , l_array_reference_num_2
59363       , l_array_reference_num_3
59364       , l_array_reference_num_4
59365       , l_array_reference_char_1
59366       , l_array_reference_char_2
59367       , l_array_reference_char_3
59368       , l_array_reference_char_4
59369       , l_array_reference_date_1
59370       , l_array_reference_date_2
59371       , l_array_reference_date_3
59372       , l_array_reference_date_4
59373       , l_array_event_created_by
59374       , l_array_budgetary_control_flag
59375       , l_array_extract_line_num 
59376       , l_array_source_3
59377       , l_array_source_4
59378       , l_array_source_5
59379       , l_array_source_6
59380       , l_array_source_11
59381       , l_array_source_13
59382       , l_array_source_14
59383       , l_array_source_14_meaning
59384       , l_array_source_15
59385       , l_array_source_16
59386       , l_array_source_17
59387       , l_array_source_18
59388       , l_array_source_19
59389       , l_array_source_20
59390       , l_array_source_21
59391       , l_array_source_22
59392       , l_array_source_30
59393       , l_array_source_31
59394       , l_array_source_32
59395       , l_array_source_33
59396       , l_array_source_34
59397       , l_array_source_35
59398       , l_array_source_36
59399       , l_array_source_37
59400       , l_array_source_38
59401       , l_array_source_39
59402       , l_array_source_40
59403       , l_array_source_41
59404       , l_array_source_42
59405       , l_array_source_43
59406       , l_array_source_44
59407       , l_array_source_45
59408       , l_array_source_46
59409       , l_array_source_47
59410       , l_array_source_68
59411       , l_array_source_69
59412       , l_array_source_70
59413       , l_array_source_71
59414       , l_array_source_72
59415       , l_array_source_73
59416       , l_array_source_74
59417       LIMIT l_rows;
59418 
59419   --
59420   IF (C_LEVEL_EVENT >= g_log_level) THEN
59421             trace
59422                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
59423                ,p_level    => C_LEVEL_EVENT
59424                ,p_module   => l_log_module);
59425   END IF;
59426   --
59427   EXIT WHEN l_array_entity_id.count = 0;
59428 
59429   XLA_AE_LINES_PKG.g_rec_lines := null;
59430 
59431 --
59432 -- Bug 4458708
59433 --
59434 XLA_AE_LINES_PKG.g_LineNumber := 0;
59435 --
59436 --
59437 
59438 FOR Idx IN 1..l_array_event_id.count LOOP
59439    --
59440    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
59441    --
59442    l_event_id := l_array_event_id(idx);  -- 5648433
59443 
59444    --
59445    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
59446    --
59447 
59448    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
59449              (g_array_event(l_event_id).array_value_num('header_index'))
59450          ,'N'
59451          ) <> 'Y'
59452    THEN
59453       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
59454          trace
59455             (p_msg      => 'Trancaction revesal option is not Y '
59456             ,p_level    => C_LEVEL_STATEMENT
59457             ,p_module   => l_log_module);
59458       END IF;
59459 
59460 --
59461 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
59462 --
59463 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
59464 --
59465 -- set event info as cache for other routines to refer event attributes
59466 --
59467 
59468 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
59469    l_previous_event_id := l_event_id;
59470 
59471    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
59472       (p_application_id           => p_application_id
59473       ,p_primary_ledger_id        => p_primary_ledger_id
59474       ,p_base_ledger_id           => p_base_ledger_id
59475       ,p_target_ledger_id         => p_target_ledger_id
59476       ,p_entity_id                => l_array_entity_id(Idx)
59477       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
59478       ,p_entity_code              => l_array_entity_code(Idx)
59479       ,p_transaction_num          => l_array_transaction_num(Idx)
59480       ,p_event_id                 => l_array_event_id(Idx)
59481       ,p_event_class_code         => l_array_class_code(Idx)
59482       ,p_event_type_code          => l_array_event_type(Idx)
59483       ,p_event_number             => l_array_event_number(Idx)
59484       ,p_event_date               => l_array_event_date(Idx)
59485       ,p_transaction_date         => l_array_transaction_date(Idx)
59486       ,p_reference_num_1          => l_array_reference_num_1(Idx)
59487       ,p_reference_num_2          => l_array_reference_num_2(Idx)
59488       ,p_reference_num_3          => l_array_reference_num_3(Idx)
59489       ,p_reference_num_4          => l_array_reference_num_4(Idx)
59490       ,p_reference_char_1         => l_array_reference_char_1(Idx)
59491       ,p_reference_char_2         => l_array_reference_char_2(Idx)
59492       ,p_reference_char_3         => l_array_reference_char_3(Idx)
59493       ,p_reference_char_4         => l_array_reference_char_4(Idx)
59494       ,p_reference_date_1         => l_array_reference_date_1(Idx)
59495       ,p_reference_date_2         => l_array_reference_date_2(Idx)
59496       ,p_reference_date_3         => l_array_reference_date_3(Idx)
59497       ,p_reference_date_4         => l_array_reference_date_4(Idx)
59498       ,p_event_created_by         => l_array_event_created_by(Idx)
59499       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
59500        --
59501 END IF;
59502 
59503 
59504 
59505 --
59506 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
59507 
59508 l_acct_reversal_source := SUBSTR(l_array_source_16(Idx), 1,30);
59509 
59510 IF l_continue_with_lines THEN
59511    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
59512       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
59513 
59514       xla_accounting_err_pkg.build_message
59515          (p_appli_s_name            => 'XLA'
59516          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
59517          ,p_token_1                 => 'LINE_NUMBER'
59518          ,p_value_1                 => l_array_extract_line_num(Idx)
59519          ,p_token_2                 => 'PRODUCT_NAME'
59520          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
59521          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
59522          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
59523          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
59524 
59525    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
59526       --
59527       -- following sets the accounting attributes needed to reverse
59528       -- accounting for a distributeion
59529       --
59530 
59531       --
59532       -- 5217187
59533       --
59534       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
59535       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
59536                                        g_array_event(l_event_id).array_value_num('header_index'));
59537       --
59538       --
59539 
59540       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
59541       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_16(Idx);
59542       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
59543       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_47(Idx);
59544       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_IDENTIFIER_2';
59545       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_6(Idx);
59546       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'DISTRIBUTION_TYPE';
59547       l_rec_rev_acct_attrs.array_char_value(5)  := l_array_source_30(Idx);
59548       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ACCT_CLASS';
59549       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_31(Idx);
59550       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_CCID';
59551       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_32(Idx);
59552       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_ENTERED_AMT';
59553       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_33(Idx);
59554       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_CURR';
59555       l_rec_rev_acct_attrs.array_char_value(9)  := l_array_source_34(Idx);
59556       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_LEDGER_AMT';
59557       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_35(Idx);
59558       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ACCT_CLASS';
59559       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_36(Idx);
59560       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
59561       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_37(Idx);
59562       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
59563       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_33(Idx);
59564       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
59565       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_34(Idx);
59566       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
59567       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_35(Idx);
59568       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
59569       l_rec_rev_acct_attrs.array_char_value(16)  := l_array_source_38(Idx);
59570       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_ID1';
59571       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_47(Idx);
59572       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'REVERSED_DISTRIBUTION_ID2';
59573       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_6(Idx);
59574       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'REVERSED_DISTRIBUTION_TYPE';
59575       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_30(Idx);
59576       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
59577       l_rec_rev_acct_attrs.array_num_value(20)  := l_array_source_39(Idx);
59578       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
59579       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_40(Idx);
59580 
59581 
59582       xla_ae_lines_pkg.SetAcctReversalAttrs
59583          (p_event_id             => l_event_id
59584          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
59585          ,p_calculate_acctd_flag => l_calculate_acctd_flag
59586          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
59587    END IF;
59588 
59589    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
59590        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
59591 
59592 --
59593 AcctLineType_11 (
59594  p_application_id  => p_application_id
59595  ,p_event_id     => l_event_id
59596  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59597  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59598  ,p_actual_flag => l_actual_flag
59599  ,p_balance_type_code => l_balance_type_code
59600  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59601  
59602  , p_source_3 => l_array_source_3(Idx)
59603  , p_source_4 => l_array_source_4(Idx)
59604  , p_source_5 => l_array_source_5(Idx)
59605  , p_source_6 => l_array_source_6(Idx)
59606  , p_source_13 => l_array_source_13(Idx)
59607  , p_source_14 => l_array_source_14(Idx)
59608  , p_source_14_meaning => l_array_source_14_meaning(Idx)
59609  , p_source_15 => l_array_source_15(Idx)
59610  , p_source_16 => l_array_source_16(Idx)
59611  , p_source_17 => l_array_source_17(Idx)
59612  , p_source_18 => l_array_source_18(Idx)
59613  , p_source_19 => l_array_source_19(Idx)
59614  , p_source_20 => l_array_source_20(Idx)
59615  , p_source_21 => l_array_source_21(Idx)
59616  , p_source_22 => l_array_source_22(Idx)
59617  , p_source_30 => l_array_source_30(Idx)
59618  , p_source_31 => l_array_source_31(Idx)
59619  , p_source_32 => l_array_source_32(Idx)
59620  , p_source_33 => l_array_source_33(Idx)
59621  , p_source_34 => l_array_source_34(Idx)
59622  , p_source_35 => l_array_source_35(Idx)
59623  , p_source_36 => l_array_source_36(Idx)
59624  , p_source_37 => l_array_source_37(Idx)
59625  , p_source_38 => l_array_source_38(Idx)
59626  , p_source_39 => l_array_source_39(Idx)
59627  , p_source_40 => l_array_source_40(Idx)
59628  , p_source_41 => l_array_source_41(Idx)
59629  , p_source_42 => l_array_source_42(Idx)
59630  , p_source_43 => l_array_source_43(Idx)
59631  , p_source_44 => l_array_source_44(Idx)
59632  , p_source_45 => l_array_source_45(Idx)
59633  , p_source_46 => l_array_source_46(Idx)
59634  , p_source_47 => l_array_source_47(Idx)
59635  );
59636 If(l_balance_type_code = 'A') THEN
59637   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59638 END IF;
59639 
59640 --
59641 
59642 
59643 --
59644 AcctLineType_14 (
59645  p_application_id  => p_application_id
59646  ,p_event_id     => l_event_id
59647  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59648  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59649  ,p_actual_flag => l_actual_flag
59650  ,p_balance_type_code => l_balance_type_code
59651  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59652  
59653  , p_source_3 => l_array_source_3(Idx)
59654  , p_source_4 => l_array_source_4(Idx)
59655  , p_source_5 => l_array_source_5(Idx)
59656  , p_source_6 => l_array_source_6(Idx)
59657  , p_source_13 => l_array_source_13(Idx)
59658  , p_source_14 => l_array_source_14(Idx)
59659  , p_source_14_meaning => l_array_source_14_meaning(Idx)
59660  , p_source_15 => l_array_source_15(Idx)
59661  , p_source_16 => l_array_source_16(Idx)
59662  , p_source_17 => l_array_source_17(Idx)
59663  , p_source_18 => l_array_source_18(Idx)
59664  , p_source_19 => l_array_source_19(Idx)
59665  , p_source_20 => l_array_source_20(Idx)
59666  , p_source_21 => l_array_source_21(Idx)
59667  , p_source_22 => l_array_source_22(Idx)
59668  , p_source_30 => l_array_source_30(Idx)
59669  , p_source_31 => l_array_source_31(Idx)
59670  , p_source_32 => l_array_source_32(Idx)
59671  , p_source_33 => l_array_source_33(Idx)
59672  , p_source_34 => l_array_source_34(Idx)
59673  , p_source_35 => l_array_source_35(Idx)
59674  , p_source_36 => l_array_source_36(Idx)
59675  , p_source_37 => l_array_source_37(Idx)
59676  , p_source_38 => l_array_source_38(Idx)
59677  , p_source_39 => l_array_source_39(Idx)
59678  , p_source_40 => l_array_source_40(Idx)
59679  , p_source_41 => l_array_source_41(Idx)
59680  , p_source_42 => l_array_source_42(Idx)
59681  , p_source_43 => l_array_source_43(Idx)
59682  , p_source_44 => l_array_source_44(Idx)
59683  , p_source_45 => l_array_source_45(Idx)
59684  , p_source_46 => l_array_source_46(Idx)
59685  , p_source_47 => l_array_source_47(Idx)
59686  );
59687 If(l_balance_type_code = 'A') THEN
59688   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59689 END IF;
59690 
59691 --
59692 
59693 
59694 --
59695 AcctLineType_47 (
59696  p_application_id  => p_application_id
59697  ,p_event_id     => l_event_id
59698  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59699  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59700  ,p_actual_flag => l_actual_flag
59701  ,p_balance_type_code => l_balance_type_code
59702  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59703  
59704  , p_source_3 => l_array_source_3(Idx)
59705  , p_source_4 => l_array_source_4(Idx)
59706  , p_source_5 => l_array_source_5(Idx)
59707  , p_source_6 => l_array_source_6(Idx)
59708  , p_source_13 => l_array_source_13(Idx)
59709  , p_source_16 => l_array_source_16(Idx)
59710  , p_source_17 => l_array_source_17(Idx)
59711  , p_source_18 => l_array_source_18(Idx)
59712  , p_source_19 => l_array_source_19(Idx)
59713  , p_source_20 => l_array_source_20(Idx)
59714  , p_source_21 => l_array_source_21(Idx)
59715  , p_source_22 => l_array_source_22(Idx)
59716  , p_source_30 => l_array_source_30(Idx)
59717  , p_source_31 => l_array_source_31(Idx)
59718  , p_source_32 => l_array_source_32(Idx)
59719  , p_source_33 => l_array_source_33(Idx)
59720  , p_source_34 => l_array_source_34(Idx)
59721  , p_source_35 => l_array_source_35(Idx)
59722  , p_source_36 => l_array_source_36(Idx)
59723  , p_source_37 => l_array_source_37(Idx)
59724  , p_source_38 => l_array_source_38(Idx)
59725  , p_source_39 => l_array_source_39(Idx)
59726  , p_source_40 => l_array_source_40(Idx)
59727  , p_source_47 => l_array_source_47(Idx)
59728  , p_source_68 => l_array_source_68(Idx)
59729  , p_source_69 => l_array_source_69(Idx)
59730  , p_source_70 => l_array_source_70(Idx)
59731  , p_source_71 => l_array_source_71(Idx)
59732  , p_source_72 => l_array_source_72(Idx)
59733  , p_source_73 => l_array_source_73(Idx)
59734  , p_source_74 => l_array_source_74(Idx)
59735  );
59736 If(l_balance_type_code = 'A') THEN
59737   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59738 END IF;
59739 
59740 --
59741 
59742 
59743 --
59744 AcctLineType_62 (
59745  p_application_id  => p_application_id
59746  ,p_event_id     => l_event_id
59747  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59748  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59749  ,p_actual_flag => l_actual_flag
59750  ,p_balance_type_code => l_balance_type_code
59751  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59752  
59753  , p_source_3 => l_array_source_3(Idx)
59754  , p_source_4 => l_array_source_4(Idx)
59755  , p_source_5 => l_array_source_5(Idx)
59756  , p_source_6 => l_array_source_6(Idx)
59757  , p_source_11 => l_array_source_11(Idx)
59758  , p_source_13 => l_array_source_13(Idx)
59759  , p_source_14 => l_array_source_14(Idx)
59760  , p_source_14_meaning => l_array_source_14_meaning(Idx)
59761  , p_source_15 => l_array_source_15(Idx)
59762  , p_source_16 => l_array_source_16(Idx)
59763  , p_source_17 => l_array_source_17(Idx)
59764  , p_source_18 => l_array_source_18(Idx)
59765  , p_source_19 => l_array_source_19(Idx)
59766  , p_source_20 => l_array_source_20(Idx)
59767  , p_source_21 => l_array_source_21(Idx)
59768  , p_source_22 => l_array_source_22(Idx)
59769  , p_source_30 => l_array_source_30(Idx)
59770  , p_source_31 => l_array_source_31(Idx)
59771  , p_source_32 => l_array_source_32(Idx)
59772  , p_source_33 => l_array_source_33(Idx)
59773  , p_source_34 => l_array_source_34(Idx)
59774  , p_source_35 => l_array_source_35(Idx)
59775  , p_source_36 => l_array_source_36(Idx)
59776  , p_source_37 => l_array_source_37(Idx)
59777  , p_source_38 => l_array_source_38(Idx)
59778  , p_source_39 => l_array_source_39(Idx)
59779  , p_source_40 => l_array_source_40(Idx)
59780  , p_source_41 => l_array_source_41(Idx)
59781  , p_source_42 => l_array_source_42(Idx)
59782  , p_source_43 => l_array_source_43(Idx)
59783  , p_source_44 => l_array_source_44(Idx)
59784  , p_source_45 => l_array_source_45(Idx)
59785  , p_source_46 => l_array_source_46(Idx)
59786  , p_source_47 => l_array_source_47(Idx)
59787  , p_source_74 => l_array_source_74(Idx)
59788  );
59789 If(l_balance_type_code = 'A') THEN
59790   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59791 END IF;
59792 
59793 --
59794 
59795 
59796 --
59797 AcctLineType_65 (
59798  p_application_id  => p_application_id
59799  ,p_event_id     => l_event_id
59800  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59801  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59802  ,p_actual_flag => l_actual_flag
59803  ,p_balance_type_code => l_balance_type_code
59804  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59805  
59806  , p_source_3 => l_array_source_3(Idx)
59807  , p_source_4 => l_array_source_4(Idx)
59808  , p_source_5 => l_array_source_5(Idx)
59809  , p_source_6 => l_array_source_6(Idx)
59810  , p_source_11 => l_array_source_11(Idx)
59811  , p_source_13 => l_array_source_13(Idx)
59812  , p_source_14 => l_array_source_14(Idx)
59813  , p_source_14_meaning => l_array_source_14_meaning(Idx)
59814  , p_source_15 => l_array_source_15(Idx)
59815  , p_source_16 => l_array_source_16(Idx)
59816  , p_source_17 => l_array_source_17(Idx)
59817  , p_source_18 => l_array_source_18(Idx)
59818  , p_source_19 => l_array_source_19(Idx)
59819  , p_source_20 => l_array_source_20(Idx)
59820  , p_source_21 => l_array_source_21(Idx)
59821  , p_source_22 => l_array_source_22(Idx)
59822  , p_source_30 => l_array_source_30(Idx)
59823  , p_source_31 => l_array_source_31(Idx)
59824  , p_source_32 => l_array_source_32(Idx)
59825  , p_source_33 => l_array_source_33(Idx)
59826  , p_source_34 => l_array_source_34(Idx)
59827  , p_source_35 => l_array_source_35(Idx)
59828  , p_source_36 => l_array_source_36(Idx)
59829  , p_source_37 => l_array_source_37(Idx)
59830  , p_source_38 => l_array_source_38(Idx)
59831  , p_source_39 => l_array_source_39(Idx)
59832  , p_source_40 => l_array_source_40(Idx)
59833  , p_source_41 => l_array_source_41(Idx)
59834  , p_source_42 => l_array_source_42(Idx)
59835  , p_source_43 => l_array_source_43(Idx)
59836  , p_source_44 => l_array_source_44(Idx)
59837  , p_source_45 => l_array_source_45(Idx)
59838  , p_source_46 => l_array_source_46(Idx)
59839  , p_source_47 => l_array_source_47(Idx)
59840  , p_source_74 => l_array_source_74(Idx)
59841  );
59842 If(l_balance_type_code = 'A') THEN
59843   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59844 END IF;
59845 
59846 --
59847 
59848 
59849 --
59850 AcctLineType_70 (
59851  p_application_id  => p_application_id
59852  ,p_event_id     => l_event_id
59853  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59854  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59855  ,p_actual_flag => l_actual_flag
59856  ,p_balance_type_code => l_balance_type_code
59857  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59858  
59859  , p_source_3 => l_array_source_3(Idx)
59860  , p_source_4 => l_array_source_4(Idx)
59861  , p_source_5 => l_array_source_5(Idx)
59862  , p_source_6 => l_array_source_6(Idx)
59863  , p_source_13 => l_array_source_13(Idx)
59864  , p_source_16 => l_array_source_16(Idx)
59865  , p_source_17 => l_array_source_17(Idx)
59866  , p_source_18 => l_array_source_18(Idx)
59867  , p_source_19 => l_array_source_19(Idx)
59868  , p_source_20 => l_array_source_20(Idx)
59869  , p_source_21 => l_array_source_21(Idx)
59870  , p_source_22 => l_array_source_22(Idx)
59871  , p_source_30 => l_array_source_30(Idx)
59872  , p_source_31 => l_array_source_31(Idx)
59873  , p_source_32 => l_array_source_32(Idx)
59874  , p_source_33 => l_array_source_33(Idx)
59875  , p_source_34 => l_array_source_34(Idx)
59876  , p_source_35 => l_array_source_35(Idx)
59877  , p_source_36 => l_array_source_36(Idx)
59878  , p_source_37 => l_array_source_37(Idx)
59879  , p_source_38 => l_array_source_38(Idx)
59880  , p_source_39 => l_array_source_39(Idx)
59881  , p_source_40 => l_array_source_40(Idx)
59882  , p_source_47 => l_array_source_47(Idx)
59883  , p_source_68 => l_array_source_68(Idx)
59884  , p_source_69 => l_array_source_69(Idx)
59885  , p_source_70 => l_array_source_70(Idx)
59886  , p_source_71 => l_array_source_71(Idx)
59887  , p_source_72 => l_array_source_72(Idx)
59888  , p_source_73 => l_array_source_73(Idx)
59889  , p_source_74 => l_array_source_74(Idx)
59890  );
59891 If(l_balance_type_code = 'A') THEN
59892   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59893 END IF;
59894 
59895 --
59896 
59897 
59898 --
59899 AcctLineType_81 (
59900  p_application_id  => p_application_id
59901  ,p_event_id     => l_event_id
59902  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59903  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59904  ,p_actual_flag => l_actual_flag
59905  ,p_balance_type_code => l_balance_type_code
59906  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59907  
59908  , p_source_3 => l_array_source_3(Idx)
59909  , p_source_4 => l_array_source_4(Idx)
59910  , p_source_5 => l_array_source_5(Idx)
59911  , p_source_6 => l_array_source_6(Idx)
59912  , p_source_13 => l_array_source_13(Idx)
59913  , p_source_14 => l_array_source_14(Idx)
59914  , p_source_14_meaning => l_array_source_14_meaning(Idx)
59915  , p_source_15 => l_array_source_15(Idx)
59916  , p_source_16 => l_array_source_16(Idx)
59917  , p_source_17 => l_array_source_17(Idx)
59918  , p_source_18 => l_array_source_18(Idx)
59919  , p_source_19 => l_array_source_19(Idx)
59920  , p_source_20 => l_array_source_20(Idx)
59921  , p_source_21 => l_array_source_21(Idx)
59922  , p_source_22 => l_array_source_22(Idx)
59923  , p_source_30 => l_array_source_30(Idx)
59924  , p_source_31 => l_array_source_31(Idx)
59925  , p_source_32 => l_array_source_32(Idx)
59926  , p_source_33 => l_array_source_33(Idx)
59927  , p_source_34 => l_array_source_34(Idx)
59928  , p_source_35 => l_array_source_35(Idx)
59929  , p_source_36 => l_array_source_36(Idx)
59930  , p_source_37 => l_array_source_37(Idx)
59931  , p_source_38 => l_array_source_38(Idx)
59932  , p_source_39 => l_array_source_39(Idx)
59933  , p_source_40 => l_array_source_40(Idx)
59934  , p_source_41 => l_array_source_41(Idx)
59935  , p_source_42 => l_array_source_42(Idx)
59936  , p_source_43 => l_array_source_43(Idx)
59937  , p_source_44 => l_array_source_44(Idx)
59938  , p_source_45 => l_array_source_45(Idx)
59939  , p_source_46 => l_array_source_46(Idx)
59940  , p_source_47 => l_array_source_47(Idx)
59941  , p_source_74 => l_array_source_74(Idx)
59942  );
59943 If(l_balance_type_code = 'A') THEN
59944   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59945 END IF;
59946 
59947 --
59948 
59949 
59950 --
59951 AcctLineType_84 (
59952  p_application_id  => p_application_id
59953  ,p_event_id     => l_event_id
59954  ,p_calculate_acctd_flag => l_calculate_acctd_flag
59955  ,p_calculate_g_l_flag => l_calculate_g_l_flag
59956  ,p_actual_flag => l_actual_flag
59957  ,p_balance_type_code => l_balance_type_code
59958  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
59959  
59960  , p_source_3 => l_array_source_3(Idx)
59961  , p_source_4 => l_array_source_4(Idx)
59962  , p_source_5 => l_array_source_5(Idx)
59963  , p_source_6 => l_array_source_6(Idx)
59964  , p_source_13 => l_array_source_13(Idx)
59965  , p_source_14 => l_array_source_14(Idx)
59966  , p_source_14_meaning => l_array_source_14_meaning(Idx)
59967  , p_source_15 => l_array_source_15(Idx)
59968  , p_source_16 => l_array_source_16(Idx)
59969  , p_source_17 => l_array_source_17(Idx)
59970  , p_source_18 => l_array_source_18(Idx)
59971  , p_source_19 => l_array_source_19(Idx)
59972  , p_source_20 => l_array_source_20(Idx)
59973  , p_source_21 => l_array_source_21(Idx)
59974  , p_source_22 => l_array_source_22(Idx)
59975  , p_source_30 => l_array_source_30(Idx)
59976  , p_source_31 => l_array_source_31(Idx)
59977  , p_source_32 => l_array_source_32(Idx)
59978  , p_source_33 => l_array_source_33(Idx)
59979  , p_source_34 => l_array_source_34(Idx)
59980  , p_source_35 => l_array_source_35(Idx)
59981  , p_source_36 => l_array_source_36(Idx)
59982  , p_source_37 => l_array_source_37(Idx)
59983  , p_source_38 => l_array_source_38(Idx)
59984  , p_source_39 => l_array_source_39(Idx)
59985  , p_source_40 => l_array_source_40(Idx)
59986  , p_source_41 => l_array_source_41(Idx)
59987  , p_source_42 => l_array_source_42(Idx)
59988  , p_source_43 => l_array_source_43(Idx)
59989  , p_source_44 => l_array_source_44(Idx)
59990  , p_source_45 => l_array_source_45(Idx)
59991  , p_source_46 => l_array_source_46(Idx)
59992  , p_source_47 => l_array_source_47(Idx)
59993  , p_source_74 => l_array_source_74(Idx)
59994  );
59995 If(l_balance_type_code = 'A') THEN
59996   l_actual_gain_loss_ref := l_gain_or_loss_ref;
59997 END IF;
59998 
59999 --
60000 
60001       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
60002       -- or secondary ledger that has different currency with primary
60003       -- or alc that is calculated by sla
60004       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
60005             (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'))
60006 
60007 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
60008 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
60009           AND (l_actual_flag = 'A')) THEN
60010         XLA_AE_LINES_PKG.CreateGainOrLossLines(
60011           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
60012          ,p_application_id   => p_application_id
60013          ,p_amb_context_code => 'DEFAULT'
60014          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
60015          ,p_event_class_code => C_EVENT_CLASS_CODE
60016          ,p_event_type_code  => C_EVENT_TYPE_CODE
60017          
60018          ,p_gain_ccid        => -1
60019          ,p_loss_ccid        => -1
60020 
60021          ,p_actual_flag      => l_actual_flag
60022          ,p_enc_flag         => null
60023          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
60024          ,p_enc_g_l_ref      => null
60025          );
60026       END IF;
60027    END IF;
60028 END IF;
60029 
60030    ELSE
60031       --
60032       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
60033       --
60034       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60035          trace
60036             (p_msg      => 'Trancaction revesal option is Y'
60037             ,p_level    => C_LEVEL_STATEMENT
60038             ,p_module   => l_log_module);
60039       END IF;
60040    END IF;
60041 
60042 END LOOP;
60043 l_result := XLA_AE_LINES_PKG.InsertLines ;
60044 end loop;
60045 close line_cur;
60046 
60047 
60048 --
60049 -- insert headers into xla_ae_headers_gt table
60050 --
60051 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
60052 
60053 -- insert into errors table here.
60054 
60055 END LOOP;
60056 
60057 --
60058 -- 4865292
60059 --
60060 -- Compare g_hdr_extract_count with event count in
60061 -- CreateHeadersAndLines.
60062 --
60063 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
60064 
60065 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60066    trace (p_msg     => '# rows extracted from header extract objects '
60067                     || ' (running total): '
60068                     || g_hdr_extract_count
60069          ,p_level   => C_LEVEL_STATEMENT
60070          ,p_module  => l_log_module);
60071 END IF;
60072 
60073 CLOSE header_cur;
60074 --
60075 
60076 --
60077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60078    trace
60079       (p_msg      => 'END of EventClass_90'
60080       ,p_level    => C_LEVEL_PROCEDURE
60081       ,p_module   => l_log_module);
60082 END IF;
60083 --
60084 RETURN l_result;
60085 EXCEPTION
60086 WHEN xla_exceptions_pkg.application_exception THEN
60087    
60088 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
60089 
60090    
60091 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
60092 
60093    RAISE;
60094 WHEN OTHERS THEN
60095    xla_exceptions_pkg.raise_message
60096       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.EventClass_90');
60097 END EventClass_90;
60098 --
60099 
60100 --
60101 --+============================================+
60102 --|                                            |
60103 --|  PRIVATE FUNCTION                          |
60104 --|                                            |
60105 --+============================================+
60106 --
60107 FUNCTION CreateHeadersAndLines
60108        (p_application_id         IN NUMBER
60109        ,p_base_ledger_id         IN NUMBER
60110        ,p_target_ledger_id       IN NUMBER
60111        ,p_pad_start_date         IN DATE
60112        ,p_pad_end_date           IN DATE
60113        ,p_primary_ledger_id      IN NUMBER)
60114 RETURN BOOLEAN IS
60115 l_created                   BOOLEAN:=FALSE;
60116 l_event_id                  NUMBER;
60117 l_event_date                DATE;
60118 l_language                  VARCHAR2(30);
60119 l_currency_code             VARCHAR2(30);
60120 l_sla_ledger_id             NUMBER;
60121 l_log_module                VARCHAR2(240);
60122 
60123 BEGIN
60124 --
60125 IF g_log_enabled THEN
60126    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
60127 END IF;
60128 --
60129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60130    trace
60131       (p_msg      => 'BEGIN of CreateHeadersAndLines'
60132       ,p_level    => C_LEVEL_PROCEDURE
60133       ,p_module   => l_log_module);
60134 END IF;
60135 
60136 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
60137 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
60138 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
60139 
60140 --
60141 -- initialize array of lines with NULL
60142 --
60143 xla_ae_lines_pkg.SetNullLine;
60144 
60145 --
60146 -- initialize header extract count -- Bug 4865292
60147 --
60148 g_hdr_extract_count:= 0;
60149 
60150 
60151 l_created := EventClass_85(
60152    p_application_id         => p_application_id
60153  , p_base_ledger_id         => p_base_ledger_id
60154  , p_target_ledger_id       => p_target_ledger_id
60155  , p_language               => l_language
60156  , p_currency_code          => l_currency_code
60157  , p_sla_ledger_id          => l_sla_ledger_id
60158  , p_pad_start_date         => p_pad_start_date
60159  , p_pad_end_date           => p_pad_end_date
60160  , p_primary_ledger_id      => p_primary_ledger_id
60161 );
60162 
60163 
60164 
60165      IF ( g_diagnostics_mode ='Y' ) THEN
60166 
60167          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60168           trace
60169               (p_msg      => 'CALL Transaction Objects Diagnostics'
60170               ,p_level    => C_LEVEL_STATEMENT
60171               ,p_module   => l_log_module);
60172 
60173          END IF;
60174 
60175          insert_sources_85(
60176                           p_target_ledger_id => p_target_ledger_id
60177                         , p_language         => l_language
60178                         , p_sla_ledger_id    => l_sla_ledger_id
60179                         , p_pad_start_date   => p_pad_start_date
60180                         , p_pad_end_date     => p_pad_end_date
60181                           );
60182 
60183      END IF;
60184 
60185 l_created := EventClass_86(
60186    p_application_id         => p_application_id
60187  , p_base_ledger_id         => p_base_ledger_id
60188  , p_target_ledger_id       => p_target_ledger_id
60189  , p_language               => l_language
60190  , p_currency_code          => l_currency_code
60191  , p_sla_ledger_id          => l_sla_ledger_id
60192  , p_pad_start_date         => p_pad_start_date
60193  , p_pad_end_date           => p_pad_end_date
60194  , p_primary_ledger_id      => p_primary_ledger_id
60195 );
60196 
60197 
60198 
60199      IF ( g_diagnostics_mode ='Y' ) THEN
60200 
60201          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60202           trace
60203               (p_msg      => 'CALL Transaction Objects Diagnostics'
60204               ,p_level    => C_LEVEL_STATEMENT
60205               ,p_module   => l_log_module);
60206 
60207          END IF;
60208 
60209          insert_sources_86(
60210                           p_target_ledger_id => p_target_ledger_id
60211                         , p_language         => l_language
60212                         , p_sla_ledger_id    => l_sla_ledger_id
60213                         , p_pad_start_date   => p_pad_start_date
60214                         , p_pad_end_date     => p_pad_end_date
60215                           );
60216 
60217      END IF;
60218 
60219 l_created := EventClass_87(
60220    p_application_id         => p_application_id
60221  , p_base_ledger_id         => p_base_ledger_id
60222  , p_target_ledger_id       => p_target_ledger_id
60223  , p_language               => l_language
60224  , p_currency_code          => l_currency_code
60225  , p_sla_ledger_id          => l_sla_ledger_id
60226  , p_pad_start_date         => p_pad_start_date
60227  , p_pad_end_date           => p_pad_end_date
60228  , p_primary_ledger_id      => p_primary_ledger_id
60229 );
60230 
60231 
60232 
60233      IF ( g_diagnostics_mode ='Y' ) THEN
60234 
60235          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60236           trace
60237               (p_msg      => 'CALL Transaction Objects Diagnostics'
60238               ,p_level    => C_LEVEL_STATEMENT
60239               ,p_module   => l_log_module);
60240 
60241          END IF;
60242 
60243          insert_sources_87(
60244                           p_target_ledger_id => p_target_ledger_id
60245                         , p_language         => l_language
60246                         , p_sla_ledger_id    => l_sla_ledger_id
60247                         , p_pad_start_date   => p_pad_start_date
60248                         , p_pad_end_date     => p_pad_end_date
60249                           );
60250 
60251      END IF;
60252 
60253 l_created := EventClass_88(
60254    p_application_id         => p_application_id
60255  , p_base_ledger_id         => p_base_ledger_id
60256  , p_target_ledger_id       => p_target_ledger_id
60257  , p_language               => l_language
60258  , p_currency_code          => l_currency_code
60259  , p_sla_ledger_id          => l_sla_ledger_id
60260  , p_pad_start_date         => p_pad_start_date
60261  , p_pad_end_date           => p_pad_end_date
60262  , p_primary_ledger_id      => p_primary_ledger_id
60263 );
60264 
60265 
60266 
60267      IF ( g_diagnostics_mode ='Y' ) THEN
60268 
60269          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60270           trace
60271               (p_msg      => 'CALL Transaction Objects Diagnostics'
60272               ,p_level    => C_LEVEL_STATEMENT
60273               ,p_module   => l_log_module);
60274 
60275          END IF;
60276 
60277          insert_sources_88(
60278                           p_target_ledger_id => p_target_ledger_id
60279                         , p_language         => l_language
60280                         , p_sla_ledger_id    => l_sla_ledger_id
60281                         , p_pad_start_date   => p_pad_start_date
60282                         , p_pad_end_date     => p_pad_end_date
60283                           );
60284 
60285      END IF;
60286 
60287 l_created := EventClass_89(
60288    p_application_id         => p_application_id
60289  , p_base_ledger_id         => p_base_ledger_id
60290  , p_target_ledger_id       => p_target_ledger_id
60291  , p_language               => l_language
60292  , p_currency_code          => l_currency_code
60293  , p_sla_ledger_id          => l_sla_ledger_id
60294  , p_pad_start_date         => p_pad_start_date
60295  , p_pad_end_date           => p_pad_end_date
60296  , p_primary_ledger_id      => p_primary_ledger_id
60297 );
60298 
60299 
60300 
60301      IF ( g_diagnostics_mode ='Y' ) THEN
60302 
60303          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60304           trace
60305               (p_msg      => 'CALL Transaction Objects Diagnostics'
60306               ,p_level    => C_LEVEL_STATEMENT
60307               ,p_module   => l_log_module);
60308 
60309          END IF;
60310 
60311          insert_sources_89(
60312                           p_target_ledger_id => p_target_ledger_id
60313                         , p_language         => l_language
60314                         , p_sla_ledger_id    => l_sla_ledger_id
60315                         , p_pad_start_date   => p_pad_start_date
60316                         , p_pad_end_date     => p_pad_end_date
60317                           );
60318 
60319      END IF;
60320 
60321 l_created := EventClass_90(
60322    p_application_id         => p_application_id
60323  , p_base_ledger_id         => p_base_ledger_id
60324  , p_target_ledger_id       => p_target_ledger_id
60325  , p_language               => l_language
60326  , p_currency_code          => l_currency_code
60327  , p_sla_ledger_id          => l_sla_ledger_id
60328  , p_pad_start_date         => p_pad_start_date
60329  , p_pad_end_date           => p_pad_end_date
60330  , p_primary_ledger_id      => p_primary_ledger_id
60331 );
60332 
60333 
60334 
60335      IF ( g_diagnostics_mode ='Y' ) THEN
60336 
60337          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60338           trace
60339               (p_msg      => 'CALL Transaction Objects Diagnostics'
60340               ,p_level    => C_LEVEL_STATEMENT
60341               ,p_module   => l_log_module);
60342 
60343          END IF;
60344 
60345          insert_sources_90(
60346                           p_target_ledger_id => p_target_ledger_id
60347                         , p_language         => l_language
60348                         , p_sla_ledger_id    => l_sla_ledger_id
60349                         , p_pad_start_date   => p_pad_start_date
60350                         , p_pad_end_date     => p_pad_end_date
60351                           );
60352 
60353      END IF;
60354 
60355 
60356  --
60357  -- Bug 4865292
60358  -- When the number of events and that of header extract do not match,
60359  -- set the no header extract flag to indicate there are some issues
60360  -- in header extract.
60361  --
60362  -- Event count context is set in xla_accounting_pkg.unit_processor.
60363  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
60364  -- to report it as a general error.
60365  --
60366  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
60367  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
60368 
60369      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60370         trace
60371           (p_msg      => '# of extracted headers and events does not match'
60372           ,p_level    => C_LEVEL_STATEMENT
60373           ,p_module   => l_log_module);
60374 
60375         trace
60376           (p_msg      => '# of extracted headers: '
60377                          ||g_hdr_extract_count
60378           ,p_level    => C_LEVEL_STATEMENT
60379           ,p_module   => l_log_module);
60380 
60381         trace
60382           (p_msg      => '# of events in xla_events_gt: '
60383                          ||xla_context_pkg.get_event_count_context
60384           ,p_level    => C_LEVEL_STATEMENT
60385           ,p_module   => l_log_module);
60386 
60387         trace
60388           (p_msg      => 'Event No Header Extract Context: '
60389                          ||xla_context_pkg.get_event_nohdr_context
60390           ,p_level    => C_LEVEL_STATEMENT
60391           ,p_module   => l_log_module);
60392 
60393      END IF;
60394 
60395 
60396      xla_context_pkg.set_event_nohdr_context
60397        (p_nohdr_extract_flag => 'Y'
60398        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
60399 
60400      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60401         trace
60402           (p_msg      => 'No Header Extract Flag is set to Y'
60403           ,p_level    => C_LEVEL_STATEMENT
60404           ,p_module   => l_log_module);
60405      END IF;
60406 
60407  END IF;
60408 
60409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60410    trace
60411       (p_msg      => 'END of CreateHeadersAndLines'
60412       ,p_level    => C_LEVEL_PROCEDURE
60413       ,p_module   => l_log_module);
60414 END IF;
60415 
60416 RETURN l_created;
60417 EXCEPTION
60418 WHEN xla_exceptions_pkg.application_exception THEN
60419    RAISE;
60420 WHEN OTHERS THEN
60421    xla_exceptions_pkg.raise_message
60422       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.CreateHeadersAndLines');
60423 END CreateHeadersAndLines;
60424 --
60425 --
60426 
60427 --
60428 --+============================================+
60429 --|                                            |
60430 --|  PUBLIC FUNCTION                           |
60431 --|                                            |
60432 --+============================================+
60433 --
60434 FUNCTION CreateJournalEntries
60435        (p_application_id         IN NUMBER
60436        ,p_base_ledger_id         IN NUMBER
60437        ,p_pad_start_date         IN DATE
60438        ,p_pad_end_date           IN DATE
60439        ,p_primary_ledger_id      IN NUMBER)
60440 RETURN NUMBER IS
60441 l_log_module                   VARCHAR2(240);
60442 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
60443 l_temp_result                  BOOLEAN;
60444 l_result                       NUMBER;
60445 BEGIN
60446 --
60447 IF g_log_enabled THEN
60448    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
60449 END IF;
60450 --
60451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60452    trace
60453       (p_msg      => 'BEGIN of CreateJournalEntries'||
60454                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
60455       ,p_level    => C_LEVEL_PROCEDURE
60456       ,p_module   => l_log_module);
60457 
60458 END IF;
60459 
60460 --
60461 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
60462 
60463 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
60464    trace
60465       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
60466       ,p_level    => C_LEVEL_STATEMENT
60467       ,p_module   => l_log_module);
60468 END IF;
60469 --
60470 xla_ae_journal_entry_pkg.SetProductAcctDefinition
60471    (p_product_rule_code      => 'PURCHASING_ENC_AAD'
60472    ,p_product_rule_type_code => 'S'
60473    ,p_product_rule_version   => ''
60474    ,p_product_rule_name      => 'Purchasing Encumbrance Application Accounting Definition'
60475    ,p_amb_context_code       => 'DEFAULT'
60476    );
60477 
60478 l_array_ledgers :=
60479    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
60480       (p_base_ledger_id  => p_base_ledger_id);
60481 
60482 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
60483    l_temp_result :=
60484       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
60485          (p_application_id           => p_application_id
60486          ,p_base_ledger_id           => p_base_ledger_id
60487          ,p_target_ledger_id         => l_array_ledgers(Idx)
60488          ,p_primary_ledger_id        => p_primary_ledger_id
60489          ,p_pad_start_date           => p_pad_start_date
60490          ,p_pad_end_date             => p_pad_end_date);
60491 
60492    l_temp_result :=
60493       l_temp_result AND
60494       CreateHeadersAndLines
60495          (p_application_id             => p_application_id
60496          ,p_base_ledger_id             => p_base_ledger_id
60497          ,p_target_ledger_id           => l_array_ledgers(Idx)
60498          ,p_pad_start_date             => p_pad_start_date
60499          ,p_pad_end_date               => p_pad_end_date
60500          ,p_primary_ledger_id          => p_primary_ledger_id
60501          );
60502 END LOOP;
60503 
60504 
60505 IF (g_diagnostics_mode = 'Y' AND
60506     C_LEVEL_UNEXPECTED >= g_log_level AND
60507     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
60508 
60509    xla_accounting_dump_pkg.acctg_event_extract_log(
60510     p_application_id  => p_application_id
60511     ,p_request_id     => xla_environment_pkg.g_Req_Id
60512    );
60513 
60514 END IF;
60515 
60516 CASE l_temp_result
60517   WHEN TRUE THEN l_result := 0;
60518   ELSE l_result := 2;
60519 END CASE;
60520 
60521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60522    trace
60523       (p_msg      => 'return value. = '||TO_CHAR(l_result)
60524       ,p_level    => C_LEVEL_PROCEDURE
60525       ,p_module   => l_log_module);
60526    trace
60527       (p_msg      => 'END of CreateJournalEntries '
60528       ,p_level    => C_LEVEL_PROCEDURE
60529       ,p_module   => l_log_module);
60530 END IF;
60531 
60532 RETURN l_result;
60533 EXCEPTION
60534 WHEN xla_exceptions_pkg.application_exception THEN
60535    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60536    trace
60537       (p_msg      => 'ERROR. = '||sqlerrm
60538       ,p_level    => C_LEVEL_PROCEDURE
60539       ,p_module   => l_log_module);
60540    END IF;
60541    RAISE;
60542 WHEN OTHERS THEN
60543    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60544    trace
60545       (p_msg      => 'ERROR. = '||sqlerrm
60546       ,p_level    => C_LEVEL_PROCEDURE
60547       ,p_module   => l_log_module);
60548    END IF;
60549    xla_exceptions_pkg.raise_message
60550       (p_location => 'XLA_00201_AAD_S_000005_BC_PKG.CreateJournalEntries');
60551 END CreateJournalEntries;
60552 --
60553 --=============================================================================
60554 --
60555 --
60556 --
60557 --
60558 --
60559 --
60560 --
60561 --
60562 --
60563 --
60564 --
60565 --
60566 --
60567 --
60568 --
60569 --
60570 --
60571 --
60572 --
60573 --
60574 --
60575 --
60576 --=============================================================================
60577 --=============================================================================
60578 --          *********** Initialization routine **********
60579 --=============================================================================
60580 
60581 BEGIN
60582    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
60583    g_log_enabled    := fnd_log.test
60584                           (log_level  => g_log_level
60585                           ,module     => C_DEFAULT_MODULE);
60586 
60587    IF NOT g_log_enabled  THEN
60588       g_log_level := C_LEVEL_LOG_DISABLED;
60589    END IF;
60590 --
60591 END XLA_00201_AAD_S_000005_BC_PKG;
60592 --