DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00201_AAD_S_000004_BC_PKG

Source


1 PACKAGE BODY XLA_00201_AAD_S_000004_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_000004_BC_PKG                                     |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Federal Purchasing Application Accounting Definition   |
14 |      Code    : FV_PURCHASING_AAD                                      |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 06-11-2008 at 02:11:07 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_000004_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_000004_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_000004_BC_PKG.ValidateLookupMeaning');
204        --
205 END ValidateLookupMeaning;
206 --
207 --
208 
209 FUNCTION GetMeaning (
210   p_flex_value_set_id               IN INTEGER
211 , p_flex_value                      IN VARCHAR2
212 , p_source_code                     IN VARCHAR2
213 , p_source_type_code                IN VARCHAR2
214 , p_source_application_id           IN INTEGER
215 )
216 RETURN VARCHAR2
217 IS
218 BEGIN
219 --
220 RETURN NULL ;
221 --
222 EXCEPTION
223   WHEN xla_exceptions_pkg.application_exception THEN
224       RAISE;
225   WHEN OTHERS THEN
226        xla_exceptions_pkg.raise_message
227            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.GetMeaning');
228 END GetMeaning;
229 --
230 
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 --         Description_1
235 --
236 ---------------------------------------
237 FUNCTION Description_1 (
238   p_application_id      IN NUMBER
239 , p_ae_header_id        IN NUMBER DEFAULT NULL 
240 --PO Type
241  , p_source_1            IN VARCHAR2
242 --PO Number
243  , p_source_2            IN VARCHAR2
244 )
245 RETURN VARCHAR2
246 IS
247 l_component_type        VARCHAR2(80)   ;
248 l_component_code        VARCHAR2(30)   ;
249 l_component_type_code   VARCHAR2(1)    ;
250 l_component_appl_id     INTEGER        ;
251 l_amb_context_code      VARCHAR2(30)   ;
252 l_ledger_language       VARCHAR2(30)   ;
253 l_source                VARCHAR2(1996) ;
254 l_description           VARCHAR2(2000) ;
255 l_log_module            VARCHAR2(240)  ;
256 BEGIN
257 IF g_log_enabled THEN
258       l_log_module := C_DEFAULT_MODULE||'.Description_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261       trace
262          (p_msg      => 'BEGIN of Description_1'
263          ,p_level    => C_LEVEL_PROCEDURE
264          ,p_module   => l_log_module);
265 END IF;
266 
267 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
268 l_component_type        := 'AMB_DESCRIPTION';
269 l_component_code        := 'PO_PA_JE_HDR_DESC';
270 l_component_type_code   := 'S';
271 l_component_appl_id     :=  201;
272 l_amb_context_code      := 'DEFAULT';
273 l_source                := NULL;
274 l_description           := NULL;
275 
276 
277  IF NVL(p_source_1,'
278 ') =  'PO' OR 
279 NVL(p_source_1,'
280 ') =  'PA'
281  THEN 
282   
283   l_source := SUBSTR(p_source_1,1,1996);
284   IF l_source IS NOT NULL THEN
285     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
286     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
287   END IF;   
288   l_source := SUBSTR(p_source_2,1,1996);
289   IF l_source IS NOT NULL THEN
290     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
291     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
292   END IF; 
293  l_description := SUBSTR(l_description,1,1996);
294   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
295         trace
296            (p_msg      => 'END of Description_1'
297            ,p_level    => C_LEVEL_PROCEDURE
298            ,p_module   => l_log_module);
299 
300   END IF;
301   RETURN l_description;
302 
303  END IF;
304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
305       trace
306          (p_msg      => 'END of Description_1'
307          ,p_level    => C_LEVEL_PROCEDURE
308          ,p_module   => l_log_module);
309 END IF;
310 RETURN NULL;
311 EXCEPTION
312   WHEN VALUE_ERROR THEN
313      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
314             trace
315                (p_msg      => 'ERROR: '||sqlerrm
316                ,p_level    => C_LEVEL_EXCEPTION
317                ,p_module   => l_log_module);
318      END IF;
319      RAISE;
320  WHEN xla_exceptions_pkg.application_exception THEN
321       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
322       trace
323          (p_msg      => 'ERROR: '||sqlerrm
324          ,p_level    => C_LEVEL_EXCEPTION
325          ,p_module   => l_log_module);
326       END IF;
327       RAISE;
328  WHEN OTHERS THEN
329        xla_exceptions_pkg.raise_message
330            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.Description_1');
331 END Description_1;
332 
333 ---------------------------------------
334 --
335 -- PRIVATE FUNCTION
336 --         Description_2
337 --
338 ---------------------------------------
339 FUNCTION Description_2 (
340   p_application_id      IN NUMBER
341 , p_ae_header_id        IN NUMBER DEFAULT NULL 
342 --Journal entry Line Description
343  , p_source_3            IN VARCHAR2
344 )
345 RETURN VARCHAR2
346 IS
347 l_component_type        VARCHAR2(80)   ;
348 l_component_code        VARCHAR2(30)   ;
349 l_component_type_code   VARCHAR2(1)    ;
350 l_component_appl_id     INTEGER        ;
351 l_amb_context_code      VARCHAR2(30)   ;
352 l_ledger_language       VARCHAR2(30)   ;
353 l_source                VARCHAR2(1996) ;
354 l_description           VARCHAR2(2000) ;
355 l_log_module            VARCHAR2(240)  ;
356 BEGIN
357 IF g_log_enabled THEN
358       l_log_module := C_DEFAULT_MODULE||'.Description_2';
359 END IF;
360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
361       trace
362          (p_msg      => 'BEGIN of Description_2'
363          ,p_level    => C_LEVEL_PROCEDURE
364          ,p_module   => l_log_module);
365 END IF;
366 
367 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
368 l_component_type        := 'AMB_DESCRIPTION';
369 l_component_code        := 'PURCHASING_LINE_DESC';
370 l_component_type_code   := 'S';
371 l_component_appl_id     :=  201;
372 l_amb_context_code      := 'DEFAULT';
373 l_source                := NULL;
374 l_description           := NULL;
375 
376 
377   
378   l_source := SUBSTR(p_source_3,1,1996);
379   IF l_source IS NOT NULL THEN
380     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
381     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
382   END IF; 
383  l_description := SUBSTR(l_description,1,1996);
384   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
385         trace
386            (p_msg      => 'END of Description_2'
387            ,p_level    => C_LEVEL_PROCEDURE
388            ,p_module   => l_log_module);
389 
390   END IF;
391   RETURN l_description;
392 
393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
394       trace
395          (p_msg      => 'END of Description_2'
396          ,p_level    => C_LEVEL_PROCEDURE
397          ,p_module   => l_log_module);
398 END IF;
399 RETURN NULL;
400 EXCEPTION
401   WHEN VALUE_ERROR THEN
402      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
403             trace
404                (p_msg      => 'ERROR: '||sqlerrm
405                ,p_level    => C_LEVEL_EXCEPTION
406                ,p_module   => l_log_module);
407      END IF;
408      RAISE;
409  WHEN xla_exceptions_pkg.application_exception THEN
410       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
411       trace
412          (p_msg      => 'ERROR: '||sqlerrm
413          ,p_level    => C_LEVEL_EXCEPTION
414          ,p_module   => l_log_module);
415       END IF;
416       RAISE;
417  WHEN OTHERS THEN
418        xla_exceptions_pkg.raise_message
419            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.Description_2');
420 END Description_2;
421 
422 ---------------------------------------
423 --
424 -- PRIVATE FUNCTION
425 --         Description_3
426 --
427 ---------------------------------------
428 FUNCTION Description_3 (
429   p_application_id      IN NUMBER
430 , p_ae_header_id        IN NUMBER DEFAULT NULL 
431 --PO Type
432  , p_source_1            IN VARCHAR2
433 --PO Number
434  , p_source_2            IN VARCHAR2
435 --PO Release Number
436  , p_source_4            IN NUMBER
437 )
438 RETURN VARCHAR2
439 IS
440 l_component_type        VARCHAR2(80)   ;
441 l_component_code        VARCHAR2(30)   ;
442 l_component_type_code   VARCHAR2(1)    ;
443 l_component_appl_id     INTEGER        ;
444 l_amb_context_code      VARCHAR2(30)   ;
445 l_ledger_language       VARCHAR2(30)   ;
446 l_source                VARCHAR2(1996) ;
447 l_description           VARCHAR2(2000) ;
448 l_log_module            VARCHAR2(240)  ;
449 BEGIN
450 IF g_log_enabled THEN
451       l_log_module := C_DEFAULT_MODULE||'.Description_3';
452 END IF;
453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
454       trace
455          (p_msg      => 'BEGIN of Description_3'
456          ,p_level    => C_LEVEL_PROCEDURE
457          ,p_module   => l_log_module);
458 END IF;
459 
460 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
461 l_component_type        := 'AMB_DESCRIPTION';
462 l_component_code        := 'RELEASE_JE_HDR_DESC';
463 l_component_type_code   := 'S';
464 l_component_appl_id     :=  201;
465 l_amb_context_code      := 'DEFAULT';
466 l_source                := NULL;
467 l_description           := NULL;
468 
469 
470  IF NVL(p_source_1,'
471 ') =  'REL'
472  THEN 
473   
474   l_source := SUBSTR(p_source_1,1,1996);
475   IF l_source IS NOT NULL THEN
476     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
477     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
478   END IF;   
479   l_source := SUBSTR(p_source_2,1,1996);
480   IF l_source IS NOT NULL THEN
481     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
482     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
483   END IF;  
484  IF 
485 l_ledger_language = 'US' THEN
486     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
487     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
488  END IF;   
489   l_source := SUBSTR(TO_CHAR(p_source_4),1,1996);
490   IF l_source IS NOT NULL THEN
491     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
492     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
493   END IF; 
494  l_description := SUBSTR(l_description,1,1996);
495   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
496         trace
497            (p_msg      => 'END of Description_3'
498            ,p_level    => C_LEVEL_PROCEDURE
499            ,p_module   => l_log_module);
500 
501   END IF;
502   RETURN l_description;
503 
504  END IF;
505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
506       trace
507          (p_msg      => 'END of Description_3'
508          ,p_level    => C_LEVEL_PROCEDURE
509          ,p_module   => l_log_module);
510 END IF;
511 RETURN NULL;
512 EXCEPTION
513   WHEN VALUE_ERROR THEN
514      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
515             trace
516                (p_msg      => 'ERROR: '||sqlerrm
517                ,p_level    => C_LEVEL_EXCEPTION
518                ,p_module   => l_log_module);
519      END IF;
520      RAISE;
521  WHEN xla_exceptions_pkg.application_exception THEN
522       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
523       trace
524          (p_msg      => 'ERROR: '||sqlerrm
525          ,p_level    => C_LEVEL_EXCEPTION
526          ,p_module   => l_log_module);
527       END IF;
528       RAISE;
529  WHEN OTHERS THEN
530        xla_exceptions_pkg.raise_message
531            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.Description_3');
532 END Description_3;
533 
534 ---------------------------------------
535 --
536 -- PRIVATE FUNCTION
537 --         Description_4
538 --
539 ---------------------------------------
540 FUNCTION Description_4 (
541   p_application_id      IN NUMBER
542 , p_ae_header_id        IN NUMBER DEFAULT NULL 
543 --Document Type
544  , p_source_5            IN VARCHAR2
545 --Requisition Number
546  , p_source_6            IN VARCHAR2
547 )
548 RETURN VARCHAR2
549 IS
550 l_component_type        VARCHAR2(80)   ;
551 l_component_code        VARCHAR2(30)   ;
552 l_component_type_code   VARCHAR2(1)    ;
553 l_component_appl_id     INTEGER        ;
554 l_amb_context_code      VARCHAR2(30)   ;
555 l_ledger_language       VARCHAR2(30)   ;
556 l_source                VARCHAR2(1996) ;
557 l_description           VARCHAR2(2000) ;
558 l_log_module            VARCHAR2(240)  ;
559 BEGIN
560 IF g_log_enabled THEN
561       l_log_module := C_DEFAULT_MODULE||'.Description_4';
562 END IF;
563 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
564       trace
565          (p_msg      => 'BEGIN of Description_4'
566          ,p_level    => C_LEVEL_PROCEDURE
567          ,p_module   => l_log_module);
568 END IF;
569 
570 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
571 l_component_type        := 'AMB_DESCRIPTION';
572 l_component_code        := 'REQ_JE_HDR_DESC';
573 l_component_type_code   := 'S';
574 l_component_appl_id     :=  201;
575 l_amb_context_code      := 'DEFAULT';
576 l_source                := NULL;
577 l_description           := NULL;
578 
579 
580  IF p_source_5 IS NOT NULL 
581  THEN 
582   
583   l_source := SUBSTR(p_source_5,1,1996);
584   IF l_source IS NOT NULL THEN
585     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
586     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
587   END IF;   
588   l_source := SUBSTR(p_source_6,1,1996);
589   IF l_source IS NOT NULL THEN
590     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
591     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
592   END IF; 
593  l_description := SUBSTR(l_description,1,1996);
594   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
595         trace
596            (p_msg      => 'END of Description_4'
597            ,p_level    => C_LEVEL_PROCEDURE
598            ,p_module   => l_log_module);
599 
600   END IF;
601   RETURN l_description;
602 
603  END IF;
604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
605       trace
606          (p_msg      => 'END of Description_4'
607          ,p_level    => C_LEVEL_PROCEDURE
608          ,p_module   => l_log_module);
609 END IF;
610 RETURN NULL;
611 EXCEPTION
612   WHEN VALUE_ERROR THEN
613      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
614             trace
615                (p_msg      => 'ERROR: '||sqlerrm
616                ,p_level    => C_LEVEL_EXCEPTION
617                ,p_module   => l_log_module);
618      END IF;
619      RAISE;
620  WHEN xla_exceptions_pkg.application_exception THEN
621       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
622       trace
623          (p_msg      => 'ERROR: '||sqlerrm
624          ,p_level    => C_LEVEL_EXCEPTION
625          ,p_module   => l_log_module);
626       END IF;
627       RAISE;
628  WHEN OTHERS THEN
629        xla_exceptions_pkg.raise_message
630            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.Description_4');
631 END Description_4;
632 
633 ---------------------------------------
634 --
635 -- PRIVATE FUNCTION
636 --         AcctDerRule_5
637 --
638 ---------------------------------------
639 FUNCTION AcctDerRule_5 (
640   p_application_id             IN NUMBER
641 , p_ae_header_id               IN NUMBER
642 , p_side                       IN VARCHAR2
643 , p_override_seg_flag          IN VARCHAR2 
644 --Federal Fund Category
645  , p_source_7            IN VARCHAR2
646 --Federal Fund Expired Status
647  , p_source_8            IN VARCHAR2
648 , x_transaction_coa_id         OUT NOCOPY NUMBER
649 , x_accounting_coa_id          OUT NOCOPY NUMBER
650 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
651 , x_flex_value_set_id          OUT NOCOPY NUMBER
652 , x_value_type_code            OUT NOCOPY VARCHAR2
653 , x_value_combination_id       OUT NOCOPY NUMBER
654 , x_value_segment_code         OUT NOCOPY VARCHAR2
655 )
656 RETURN VARCHAR2
657 IS
658 l_component_type       VARCHAR2(80)  ;
659 l_component_code       VARCHAR2(30)  ;
660 l_component_type_code  VARCHAR2(1)   ;
661 l_component_appl_id    INTEGER       ;
662 l_amb_context_code     VARCHAR2(30)  ;
663 l_log_module           VARCHAR2(240) ;
664 l_output_value         VARCHAR2(30)  ;
665 BEGIN
666 IF g_log_enabled THEN
667       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
668 END IF;
669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
670 
671       trace
672          (p_msg      => 'BEGIN of AcctDerRule_5'
673          ,p_level    => C_LEVEL_PROCEDURE
674          ,p_module   => l_log_module);
675 
676 END IF;
677 
678 l_component_type         := 'AMB_ADR';
679 l_component_code         := 'FV_46X002';
680 l_component_type_code    := 'S';
681 l_component_appl_id      :=  201;
682 l_amb_context_code       := 'DEFAULT';
683 x_transaction_coa_id     :=  null;
684 x_accounting_coa_id      :=  null;
685 x_flexfield_segment_code :=  null;
686 x_flex_value_set_id      := 1009988 ;
687 
688 
689  IF (NVL(p_source_7,'
690 ') =  'A' OR 
691 NVL(p_source_7,'
692 ') =  'B') AND 
693 (NVL(p_source_8,'
694 ') =  'Unexpired' OR 
695 p_source_8 IS NULL )
696  THEN 
697 --
698   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
699 
700       trace
701          (p_msg      => 'END of AcctDerRule_5'
702          ,p_level    => C_LEVEL_PROCEDURE
703          ,p_module   => l_log_module);
704 
705   END IF;
706   x_value_combination_id  :=  null ;
707   x_value_segment_code    :=  null ;
708   x_value_type_code       := 'C';
709   l_output_value          := '461002';
710   RETURN l_output_value;
711 
712  ELSIF NVL(p_source_7,'
713 ') =  'C' AND 
714 (NVL(p_source_8,'
715 ') =  'Unexpired' OR 
716 p_source_8 IS NULL )
717  THEN 
718 --
719   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
720 
721       trace
722          (p_msg      => 'END of AcctDerRule_5'
723          ,p_level    => C_LEVEL_PROCEDURE
724          ,p_module   => l_log_module);
725 
726   END IF;
727   x_value_combination_id  :=  null ;
728   x_value_segment_code    :=  null ;
729   x_value_type_code       := 'C';
730   l_output_value          := '462002';
731   RETURN l_output_value;
732 
733  ELSIF NVL(p_source_8,'
734 ') =  'Expired'
735  THEN 
736 --
737   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
738 
739       trace
740          (p_msg      => 'END of AcctDerRule_5'
741          ,p_level    => C_LEVEL_PROCEDURE
742          ,p_module   => l_log_module);
743 
744   END IF;
745   x_value_combination_id  :=  null ;
746   x_value_segment_code    :=  null ;
747   x_value_type_code       := 'C';
748   l_output_value          := '465002';
749   RETURN l_output_value;
750 
751  ELSE 
752     IF p_override_seg_flag = 'Y' THEN 
753        RETURN '#$NO_OVERRIDE#$';
754     END IF;
755  END IF;
756 
757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
758 
759       trace
760          (p_msg      => 'END of AcctDerRule_5(invalid)'
761          ,p_level    => C_LEVEL_PROCEDURE
762          ,p_module   => l_log_module);
763 
764 END IF;
765 
766 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
767 x_value_combination_id  := null;
768 x_value_segment_code    := null;
769 x_value_type_code       := null;
770 l_output_value          := null;
771 xla_accounting_err_pkg.build_message
772                  (p_appli_s_name            => 'XLA'
773                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
774                  ,p_token_1                 => 'COMPONENT_NAME'
775                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
776                                                             l_component_type
777                                                           , l_component_code
778                                                           , l_component_type_code
779                                                           , l_component_appl_id
780                                                           , l_amb_context_code
781                                                           )
782                  ,p_token_2                 => 'OWNER'
783                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
784                                                         'XLA_OWNER_TYPE'
785                                                         ,l_component_type_code
786                                                         )
787                  ,p_token_3                 => 'PAD_NAME'
788                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
789                  ,p_token_4                 => 'PAD_OWNER'
790                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
791                                                         'XLA_OWNER_TYPE'
792                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
793                                                         )
794                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
795                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
796                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
797                  ,p_ae_header_id            => NULL
798 );
799 RETURN l_output_value;
800 EXCEPTION
801   WHEN xla_exceptions_pkg.application_exception THEN
802       RAISE;
803   WHEN OTHERS THEN
804        xla_exceptions_pkg.raise_message
805            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_5');
806 END AcctDerRule_5;
807 --
808 
809 ---------------------------------------
810 --
811 -- PRIVATE FUNCTION
812 --         AcctDerRule_6
813 --
814 ---------------------------------------
815 FUNCTION AcctDerRule_6 (
816   p_application_id             IN NUMBER
817 , p_ae_header_id               IN NUMBER
818 , p_side                       IN VARCHAR2
819 , p_override_seg_flag          IN VARCHAR2 
820 --Federal Fund Category
821  , p_source_7            IN VARCHAR2
822 , x_transaction_coa_id         OUT NOCOPY NUMBER
823 , x_accounting_coa_id          OUT NOCOPY NUMBER
824 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
825 , x_flex_value_set_id          OUT NOCOPY NUMBER
826 , x_value_type_code            OUT NOCOPY VARCHAR2
827 , x_value_combination_id       OUT NOCOPY NUMBER
828 , x_value_segment_code         OUT NOCOPY VARCHAR2
829 )
830 RETURN VARCHAR2
831 IS
832 l_component_type       VARCHAR2(80)  ;
833 l_component_code       VARCHAR2(30)  ;
834 l_component_type_code  VARCHAR2(1)   ;
835 l_component_appl_id    INTEGER       ;
836 l_amb_context_code     VARCHAR2(30)  ;
837 l_log_module           VARCHAR2(240) ;
838 l_output_value         VARCHAR2(30)  ;
839 BEGIN
840 IF g_log_enabled THEN
841       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
842 END IF;
843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
844 
845       trace
846          (p_msg      => 'BEGIN of AcctDerRule_6'
847          ,p_level    => C_LEVEL_PROCEDURE
848          ,p_module   => l_log_module);
849 
850 END IF;
851 
852 l_component_type         := 'AMB_ADR';
853 l_component_code         := 'FV_47X002_REQUISITION';
854 l_component_type_code    := 'S';
855 l_component_appl_id      :=  201;
856 l_amb_context_code       := 'DEFAULT';
857 x_transaction_coa_id     :=  null;
858 x_accounting_coa_id      :=  null;
859 x_flexfield_segment_code :=  null;
860 x_flex_value_set_id      := 1009988 ;
861 
862 
863  IF (NVL(p_source_7,'
864 ') =  'A' OR 
865 NVL(p_source_7,'
866 ') =  'B')
867  THEN 
868 --
869   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
870 
871       trace
872          (p_msg      => 'END of AcctDerRule_6'
873          ,p_level    => C_LEVEL_PROCEDURE
874          ,p_module   => l_log_module);
875 
876   END IF;
877   x_value_combination_id  :=  null ;
878   x_value_segment_code    :=  null ;
879   x_value_type_code       := 'C';
880   l_output_value          := '470001';
881   RETURN l_output_value;
882 
883  ELSIF NVL(p_source_7,'
884 ') =  'C'
885  THEN 
886 --
887   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
888 
889       trace
890          (p_msg      => 'END of AcctDerRule_6'
891          ,p_level    => C_LEVEL_PROCEDURE
892          ,p_module   => l_log_module);
893 
894   END IF;
895   x_value_combination_id  :=  null ;
896   x_value_segment_code    :=  null ;
897   x_value_type_code       := 'C';
898   l_output_value          := '472001';
899   RETURN l_output_value;
900 
901  ELSE 
902     IF p_override_seg_flag = 'Y' THEN 
903        RETURN '#$NO_OVERRIDE#$';
904     END IF;
905  END IF;
906 
907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
908 
909       trace
910          (p_msg      => 'END of AcctDerRule_6(invalid)'
911          ,p_level    => C_LEVEL_PROCEDURE
912          ,p_module   => l_log_module);
913 
914 END IF;
915 
916 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
917 x_value_combination_id  := null;
918 x_value_segment_code    := null;
919 x_value_type_code       := null;
920 l_output_value          := null;
921 xla_accounting_err_pkg.build_message
922                  (p_appli_s_name            => 'XLA'
923                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
924                  ,p_token_1                 => 'COMPONENT_NAME'
925                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
926                                                             l_component_type
927                                                           , l_component_code
928                                                           , l_component_type_code
929                                                           , l_component_appl_id
930                                                           , l_amb_context_code
931                                                           )
932                  ,p_token_2                 => 'OWNER'
933                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
934                                                         'XLA_OWNER_TYPE'
935                                                         ,l_component_type_code
936                                                         )
937                  ,p_token_3                 => 'PAD_NAME'
938                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
939                  ,p_token_4                 => 'PAD_OWNER'
940                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
941                                                         'XLA_OWNER_TYPE'
942                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
943                                                         )
944                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
945                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
946                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
947                  ,p_ae_header_id            => NULL
948 );
949 RETURN l_output_value;
950 EXCEPTION
951   WHEN xla_exceptions_pkg.application_exception THEN
952       RAISE;
953   WHEN OTHERS THEN
954        xla_exceptions_pkg.raise_message
955            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_6');
956 END AcctDerRule_6;
957 --
958 
959 ---------------------------------------
960 --
961 -- PRIVATE FUNCTION
962 --         AcctDerRule_7
963 --
964 ---------------------------------------
965 FUNCTION AcctDerRule_7 (
966   p_application_id             IN NUMBER
967 , p_ae_header_id               IN NUMBER
968 , p_side                       IN VARCHAR2
969 , p_override_seg_flag          IN VARCHAR2  
970 , x_transaction_coa_id         OUT NOCOPY NUMBER
971 , x_accounting_coa_id          OUT NOCOPY NUMBER
972 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
973 , x_flex_value_set_id          OUT NOCOPY NUMBER
974 , x_value_type_code            OUT NOCOPY VARCHAR2
975 , x_value_combination_id       OUT NOCOPY NUMBER
976 , x_value_segment_code         OUT NOCOPY VARCHAR2
977 )
978 RETURN VARCHAR2
979 IS
980 l_component_type       VARCHAR2(80)  ;
981 l_component_code       VARCHAR2(30)  ;
982 l_component_type_code  VARCHAR2(1)   ;
983 l_component_appl_id    INTEGER       ;
984 l_amb_context_code     VARCHAR2(30)  ;
985 l_log_module           VARCHAR2(240) ;
986 l_output_value         VARCHAR2(30)  ;
987 BEGIN
988 IF g_log_enabled THEN
989       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
990 END IF;
991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
992 
993       trace
994          (p_msg      => 'BEGIN of AcctDerRule_7'
995          ,p_level    => C_LEVEL_PROCEDURE
996          ,p_module   => l_log_module);
997 
998 END IF;
999 
1000 l_component_type         := 'AMB_ADR';
1001 l_component_code         := 'FV_488101_PURCHASING';
1002 l_component_type_code    := 'S';
1003 l_component_appl_id      :=  201;
1004 l_amb_context_code       := 'DEFAULT';
1005 x_transaction_coa_id     :=  null;
1006 x_accounting_coa_id      :=  null;
1007 x_flexfield_segment_code :=  null;
1008 x_flex_value_set_id      := 1009988 ;
1009 
1010 
1011 --
1012   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1013 
1014       trace
1015          (p_msg      => 'END of AcctDerRule_7'
1016          ,p_level    => C_LEVEL_PROCEDURE
1017          ,p_module   => l_log_module);
1018 
1019   END IF;
1020   x_value_combination_id  :=  null ;
1021   x_value_segment_code    :=  null ;
1022   x_value_type_code       := 'C';
1023   l_output_value          := '488101';
1024   RETURN l_output_value;
1025 
1026 
1027 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1028 
1029       trace
1030          (p_msg      => 'END of AcctDerRule_7(invalid)'
1031          ,p_level    => C_LEVEL_PROCEDURE
1032          ,p_module   => l_log_module);
1033 
1034 END IF;
1035 
1036 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1037 x_value_combination_id  := null;
1038 x_value_segment_code    := null;
1039 x_value_type_code       := null;
1040 l_output_value          := null;
1041 xla_accounting_err_pkg.build_message
1042                  (p_appli_s_name            => 'XLA'
1043                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1044                  ,p_token_1                 => 'COMPONENT_NAME'
1045                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1046                                                             l_component_type
1047                                                           , l_component_code
1048                                                           , l_component_type_code
1049                                                           , l_component_appl_id
1050                                                           , l_amb_context_code
1051                                                           )
1052                  ,p_token_2                 => 'OWNER'
1053                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1054                                                         'XLA_OWNER_TYPE'
1055                                                         ,l_component_type_code
1056                                                         )
1057                  ,p_token_3                 => 'PAD_NAME'
1058                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1059                  ,p_token_4                 => 'PAD_OWNER'
1060                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1061                                                         'XLA_OWNER_TYPE'
1062                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1063                                                         )
1064                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1065                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1066                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1067                  ,p_ae_header_id            => NULL
1068 );
1069 RETURN l_output_value;
1070 EXCEPTION
1071   WHEN xla_exceptions_pkg.application_exception THEN
1072       RAISE;
1073   WHEN OTHERS THEN
1074        xla_exceptions_pkg.raise_message
1075            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_7');
1076 END AcctDerRule_7;
1077 --
1078 
1079 ---------------------------------------
1080 --
1081 -- PRIVATE FUNCTION
1082 --         AcctDerRule_8
1083 --
1084 ---------------------------------------
1085 FUNCTION AcctDerRule_8 (
1086   p_application_id             IN NUMBER
1087 , p_ae_header_id               IN NUMBER
1088 , p_side                       IN VARCHAR2
1089 , p_override_seg_flag          IN VARCHAR2  
1090 , x_transaction_coa_id         OUT NOCOPY NUMBER
1091 , x_accounting_coa_id          OUT NOCOPY NUMBER
1092 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1093 , x_flex_value_set_id          OUT NOCOPY NUMBER
1094 , x_value_type_code            OUT NOCOPY VARCHAR2
1095 , x_value_combination_id       OUT NOCOPY NUMBER
1096 , x_value_segment_code         OUT NOCOPY VARCHAR2
1097 )
1098 RETURN VARCHAR2
1099 IS
1100 l_component_type       VARCHAR2(80)  ;
1101 l_component_code       VARCHAR2(30)  ;
1102 l_component_type_code  VARCHAR2(1)   ;
1103 l_component_appl_id    INTEGER       ;
1104 l_amb_context_code     VARCHAR2(30)  ;
1105 l_log_module           VARCHAR2(240) ;
1106 l_output_value         VARCHAR2(30)  ;
1107 BEGIN
1108 IF g_log_enabled THEN
1109       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1110 END IF;
1111 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1112 
1113       trace
1114          (p_msg      => 'BEGIN of AcctDerRule_8'
1115          ,p_level    => C_LEVEL_PROCEDURE
1116          ,p_module   => l_log_module);
1117 
1118 END IF;
1119 
1120 l_component_type         := 'AMB_ADR';
1121 l_component_code         := 'FV_48X101_PURCHASING';
1122 l_component_type_code    := 'S';
1123 l_component_appl_id      :=  201;
1124 l_amb_context_code       := 'DEFAULT';
1125 x_transaction_coa_id     :=  null;
1126 x_accounting_coa_id      :=  null;
1127 x_flexfield_segment_code :=  null;
1128 x_flex_value_set_id      := 1009988 ;
1129 
1130 
1131 --
1132   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1133 
1134       trace
1135          (p_msg      => 'END of AcctDerRule_8'
1136          ,p_level    => C_LEVEL_PROCEDURE
1137          ,p_module   => l_log_module);
1138 
1139   END IF;
1140   x_value_combination_id  :=  null ;
1141   x_value_segment_code    :=  null ;
1142   x_value_type_code       := 'C';
1143   l_output_value          := '480101';
1144   RETURN l_output_value;
1145 
1146 
1147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1148 
1149       trace
1150          (p_msg      => 'END of AcctDerRule_8(invalid)'
1151          ,p_level    => C_LEVEL_PROCEDURE
1152          ,p_module   => l_log_module);
1153 
1154 END IF;
1155 
1156 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1157 x_value_combination_id  := null;
1158 x_value_segment_code    := null;
1159 x_value_type_code       := null;
1160 l_output_value          := null;
1161 xla_accounting_err_pkg.build_message
1162                  (p_appli_s_name            => 'XLA'
1163                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1164                  ,p_token_1                 => 'COMPONENT_NAME'
1165                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1166                                                             l_component_type
1167                                                           , l_component_code
1168                                                           , l_component_type_code
1169                                                           , l_component_appl_id
1170                                                           , l_amb_context_code
1171                                                           )
1172                  ,p_token_2                 => 'OWNER'
1173                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1174                                                         'XLA_OWNER_TYPE'
1175                                                         ,l_component_type_code
1176                                                         )
1177                  ,p_token_3                 => 'PAD_NAME'
1178                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1179                  ,p_token_4                 => 'PAD_OWNER'
1180                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1181                                                         'XLA_OWNER_TYPE'
1182                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1183                                                         )
1184                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1185                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1186                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1187                  ,p_ae_header_id            => NULL
1188 );
1189 RETURN l_output_value;
1190 EXCEPTION
1191   WHEN xla_exceptions_pkg.application_exception THEN
1192       RAISE;
1193   WHEN OTHERS THEN
1194        xla_exceptions_pkg.raise_message
1195            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_8');
1196 END AcctDerRule_8;
1197 --
1198 
1199 ---------------------------------------
1200 --
1201 -- PRIVATE FUNCTION
1202 --         AcctDerRule_9
1203 --
1204 ---------------------------------------
1205 FUNCTION AcctDerRule_9 (
1206   p_application_id              IN NUMBER
1207 , p_ae_header_id                IN NUMBER
1208 , p_side                        IN VARCHAR2 
1209 --Budget Account
1210  , p_source_9            IN NUMBER
1211 , x_transaction_coa_id         OUT NOCOPY NUMBER
1212 , x_accounting_coa_id          OUT NOCOPY NUMBER
1213 , x_value_type_code            OUT NOCOPY VARCHAR2
1214 )
1215 RETURN NUMBER
1216 IS
1217 l_component_type       VARCHAR2(80)  ;
1218 l_component_code       VARCHAR2(30)  ;
1219 l_component_type_code  VARCHAR2(1)   ;
1220 l_component_appl_id    INTEGER       ;
1221 l_amb_context_code     VARCHAR2(30)  ;
1222 l_log_module           VARCHAR2(240) ;
1223 l_output_value         NUMBER        ;
1224 BEGIN
1225 IF g_log_enabled THEN
1226       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_9';
1227 END IF;
1228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1229       trace
1230          (p_msg      => 'BEGIN of AcctDerRule_9'
1231          ,p_level    => C_LEVEL_PROCEDURE
1232          ,p_module   => l_log_module);
1233 END IF;
1234 --
1235 l_component_type         := 'AMB_ADR';
1236 l_component_code         := 'FV_ACCOUNT_RULE';
1237 l_component_type_code    := 'S';
1238 l_component_appl_id      :=  201;
1239 l_amb_context_code       := 'DEFAULT';
1240 x_transaction_coa_id     :=  null;
1241 x_accounting_coa_id      :=  null;
1242 --
1243 
1244  --
1245   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1246       trace
1247          (p_msg      => 'END of AcctDerRule_9'
1248          ,p_level    => C_LEVEL_PROCEDURE
1249          ,p_module   => l_log_module);
1250   END IF;
1251   x_value_type_code := 'S';
1252   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_9));
1253   RETURN l_output_value;
1254 
1255 --
1256 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1257       trace
1258          (p_msg      => 'END of AcctDerRule_9(invalid)'
1259          ,p_level    => C_LEVEL_PROCEDURE
1260          ,p_module   => l_log_module);
1261 END IF;
1262 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1263 x_value_type_code := null;
1264 l_output_value    := null;
1265 xla_accounting_err_pkg.build_message
1266                  (p_appli_s_name            => 'XLA'
1267                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1268                  ,p_token_1                 => 'COMPONENT_NAME'
1269                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1270                                                             l_component_type
1271                                                           , l_component_code
1272                                                           , l_component_type_code
1273                                                           , l_component_appl_id
1274                                                           , l_amb_context_code
1275                                                           )
1276                  ,p_token_2                 => 'OWNER'
1277                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1278                                                         'XLA_OWNER_TYPE'
1279                                                         ,l_component_type_code
1280                                                         )
1281                  ,p_token_3                 => 'PAD_NAME'
1282                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1283                  ,p_token_4                 => 'PAD_OWNER'
1284                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1285                                                         'XLA_OWNER_TYPE'
1286                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1287                                                         )
1288                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1289                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1290                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1291                  ,p_ae_header_id            => NULL
1292 );
1293 RETURN l_output_value;
1294 EXCEPTION
1295   WHEN xla_exceptions_pkg.application_exception THEN
1296       RAISE;
1297   WHEN OTHERS THEN
1298        xla_exceptions_pkg.raise_message
1299            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_9');
1300 END AcctDerRule_9;
1301 --
1302 
1303 ---------------------------------------
1304 --
1305 -- PRIVATE FUNCTION
1306 --         AcctDerRule_10
1307 --
1308 ---------------------------------------
1309 FUNCTION AcctDerRule_10 (
1310   p_application_id             IN NUMBER
1311 , p_ae_header_id               IN NUMBER
1312 , p_side                       IN VARCHAR2
1313 , p_override_seg_flag          IN VARCHAR2  
1314 , x_transaction_coa_id         OUT NOCOPY NUMBER
1315 , x_accounting_coa_id          OUT NOCOPY NUMBER
1316 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1317 , x_flex_value_set_id          OUT NOCOPY NUMBER
1318 , x_value_type_code            OUT NOCOPY VARCHAR2
1319 , x_value_combination_id       OUT NOCOPY NUMBER
1320 , x_value_segment_code         OUT NOCOPY VARCHAR2
1321 )
1322 RETURN VARCHAR2
1323 IS
1324 l_component_type       VARCHAR2(80)  ;
1325 l_component_code       VARCHAR2(30)  ;
1326 l_component_type_code  VARCHAR2(1)   ;
1327 l_component_appl_id    INTEGER       ;
1328 l_amb_context_code     VARCHAR2(30)  ;
1329 l_log_module           VARCHAR2(240) ;
1330 l_output_value         VARCHAR2(30)  ;
1331 BEGIN
1332 IF g_log_enabled THEN
1333       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_10';
1334 END IF;
1335 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1336 
1337       trace
1338          (p_msg      => 'BEGIN of AcctDerRule_10'
1339          ,p_level    => C_LEVEL_PROCEDURE
1340          ,p_module   => l_log_module);
1341 
1342 END IF;
1343 
1344 l_component_type         := 'AMB_ADR';
1345 l_component_code         := 'FV_PYA_431002_ANTCIPATED';
1346 l_component_type_code    := 'S';
1347 l_component_appl_id      :=  201;
1348 l_amb_context_code       := 'DEFAULT';
1349 x_transaction_coa_id     :=  null;
1350 x_accounting_coa_id      :=  null;
1351 x_flexfield_segment_code :=  null;
1352 x_flex_value_set_id      := 1009988 ;
1353 
1354 
1355 --
1356   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1357 
1358       trace
1359          (p_msg      => 'END of AcctDerRule_10'
1360          ,p_level    => C_LEVEL_PROCEDURE
1361          ,p_module   => l_log_module);
1362 
1363   END IF;
1364   x_value_combination_id  :=  null ;
1365   x_value_segment_code    :=  null ;
1366   x_value_type_code       := 'C';
1367   l_output_value          := '431002';
1368   RETURN l_output_value;
1369 
1370 
1371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1372 
1373       trace
1374          (p_msg      => 'END of AcctDerRule_10(invalid)'
1375          ,p_level    => C_LEVEL_PROCEDURE
1376          ,p_module   => l_log_module);
1377 
1378 END IF;
1379 
1380 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1381 x_value_combination_id  := null;
1382 x_value_segment_code    := null;
1383 x_value_type_code       := null;
1384 l_output_value          := null;
1385 xla_accounting_err_pkg.build_message
1386                  (p_appli_s_name            => 'XLA'
1387                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1388                  ,p_token_1                 => 'COMPONENT_NAME'
1389                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1390                                                             l_component_type
1391                                                           , l_component_code
1392                                                           , l_component_type_code
1393                                                           , l_component_appl_id
1394                                                           , l_amb_context_code
1395                                                           )
1396                  ,p_token_2                 => 'OWNER'
1397                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1398                                                         'XLA_OWNER_TYPE'
1399                                                         ,l_component_type_code
1400                                                         )
1401                  ,p_token_3                 => 'PAD_NAME'
1402                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1403                  ,p_token_4                 => 'PAD_OWNER'
1404                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1405                                                         'XLA_OWNER_TYPE'
1406                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1407                                                         )
1408                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1409                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1410                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1411                  ,p_ae_header_id            => NULL
1412 );
1413 RETURN l_output_value;
1414 EXCEPTION
1415   WHEN xla_exceptions_pkg.application_exception THEN
1416       RAISE;
1417   WHEN OTHERS THEN
1418        xla_exceptions_pkg.raise_message
1419            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_10');
1420 END AcctDerRule_10;
1421 --
1422 
1423 ---------------------------------------
1424 --
1425 -- PRIVATE FUNCTION
1426 --         AcctDerRule_11
1427 --
1428 ---------------------------------------
1429 FUNCTION AcctDerRule_11 (
1430   p_application_id             IN NUMBER
1431 , p_ae_header_id               IN NUMBER
1432 , p_side                       IN VARCHAR2
1433 , p_override_seg_flag          IN VARCHAR2 
1434 --Federal Fund Expired Status
1435  , p_source_8            IN VARCHAR2
1436 , x_transaction_coa_id         OUT NOCOPY NUMBER
1437 , x_accounting_coa_id          OUT NOCOPY NUMBER
1438 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1439 , x_flex_value_set_id          OUT NOCOPY NUMBER
1440 , x_value_type_code            OUT NOCOPY VARCHAR2
1441 , x_value_combination_id       OUT NOCOPY NUMBER
1442 , x_value_segment_code         OUT NOCOPY VARCHAR2
1443 )
1444 RETURN VARCHAR2
1445 IS
1446 l_component_type       VARCHAR2(80)  ;
1447 l_component_code       VARCHAR2(30)  ;
1448 l_component_type_code  VARCHAR2(1)   ;
1449 l_component_appl_id    INTEGER       ;
1450 l_amb_context_code     VARCHAR2(30)  ;
1451 l_log_module           VARCHAR2(240) ;
1452 l_output_value         VARCHAR2(30)  ;
1453 BEGIN
1454 IF g_log_enabled THEN
1455       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_11';
1456 END IF;
1457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1458 
1459       trace
1460          (p_msg      => 'BEGIN of AcctDerRule_11'
1461          ,p_level    => C_LEVEL_PROCEDURE
1462          ,p_module   => l_log_module);
1463 
1464 END IF;
1465 
1466 l_component_type         := 'AMB_ADR';
1467 l_component_code         := 'FV_PYA_445002_UNANTICIPATED';
1468 l_component_type_code    := 'S';
1469 l_component_appl_id      :=  201;
1470 l_amb_context_code       := 'DEFAULT';
1471 x_transaction_coa_id     :=  null;
1472 x_accounting_coa_id      :=  null;
1473 x_flexfield_segment_code :=  null;
1474 x_flex_value_set_id      := 1009988 ;
1475 
1476 
1477  IF NVL(p_source_8,'
1478 ') =  'Unexpired'
1479  THEN 
1480 --
1481   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1482 
1483       trace
1484          (p_msg      => 'END of AcctDerRule_11'
1485          ,p_level    => C_LEVEL_PROCEDURE
1486          ,p_module   => l_log_module);
1487 
1488   END IF;
1489   x_value_combination_id  :=  null ;
1490   x_value_segment_code    :=  null ;
1491   x_value_type_code       := 'C';
1492   l_output_value          := '445002';
1493   RETURN l_output_value;
1494 
1495  ELSIF NVL(p_source_8,'
1496 ') =  'Expired'
1497  THEN 
1498 --
1499   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1500 
1501       trace
1502          (p_msg      => 'END of AcctDerRule_11'
1503          ,p_level    => C_LEVEL_PROCEDURE
1504          ,p_module   => l_log_module);
1505 
1506   END IF;
1507   x_value_combination_id  :=  null ;
1508   x_value_segment_code    :=  null ;
1509   x_value_type_code       := 'C';
1510   l_output_value          := '465002';
1511   RETURN l_output_value;
1512 
1513  ELSE 
1514     IF p_override_seg_flag = 'Y' THEN 
1515        RETURN '#$NO_OVERRIDE#$';
1516     END IF;
1517  END IF;
1518 
1519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1520 
1521       trace
1522          (p_msg      => 'END of AcctDerRule_11(invalid)'
1523          ,p_level    => C_LEVEL_PROCEDURE
1524          ,p_module   => l_log_module);
1525 
1526 END IF;
1527 
1528 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1529 x_value_combination_id  := null;
1530 x_value_segment_code    := null;
1531 x_value_type_code       := null;
1532 l_output_value          := null;
1533 xla_accounting_err_pkg.build_message
1534                  (p_appli_s_name            => 'XLA'
1535                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1536                  ,p_token_1                 => 'COMPONENT_NAME'
1537                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1538                                                             l_component_type
1539                                                           , l_component_code
1540                                                           , l_component_type_code
1541                                                           , l_component_appl_id
1542                                                           , l_amb_context_code
1543                                                           )
1544                  ,p_token_2                 => 'OWNER'
1545                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1546                                                         'XLA_OWNER_TYPE'
1547                                                         ,l_component_type_code
1548                                                         )
1549                  ,p_token_3                 => 'PAD_NAME'
1550                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1551                  ,p_token_4                 => 'PAD_OWNER'
1552                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1553                                                         'XLA_OWNER_TYPE'
1554                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1555                                                         )
1556                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1557                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1558                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1559                  ,p_ae_header_id            => NULL
1560 );
1561 RETURN l_output_value;
1562 EXCEPTION
1563   WHEN xla_exceptions_pkg.application_exception THEN
1564       RAISE;
1565   WHEN OTHERS THEN
1566        xla_exceptions_pkg.raise_message
1567            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_11');
1568 END AcctDerRule_11;
1569 --
1570 
1571 ---------------------------------------
1572 --
1573 -- PRIVATE FUNCTION
1574 --         AcctDerRule_12
1575 --
1576 ---------------------------------------
1577 FUNCTION AcctDerRule_12 (
1578   p_application_id             IN NUMBER
1579 , p_ae_header_id               IN NUMBER
1580 , p_side                       IN VARCHAR2
1581 , p_override_seg_flag          IN VARCHAR2 
1582 --Federal Fund Category
1583  , p_source_7            IN VARCHAR2
1584 --Federal Fund Expired Status
1585  , p_source_8            IN VARCHAR2
1586 --Federal Prior Year Flag
1587  , p_source_10            IN VARCHAR2
1588 --Federal Net Pya Adj Amt
1589  , p_source_11            IN NUMBER
1590 , x_transaction_coa_id         OUT NOCOPY NUMBER
1591 , x_accounting_coa_id          OUT NOCOPY NUMBER
1592 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1593 , x_flex_value_set_id          OUT NOCOPY NUMBER
1594 , x_value_type_code            OUT NOCOPY VARCHAR2
1595 , x_value_combination_id       OUT NOCOPY NUMBER
1596 , x_value_segment_code         OUT NOCOPY VARCHAR2
1597 )
1598 RETURN VARCHAR2
1599 IS
1600 l_component_type       VARCHAR2(80)  ;
1601 l_component_code       VARCHAR2(30)  ;
1602 l_component_type_code  VARCHAR2(1)   ;
1603 l_component_appl_id    INTEGER       ;
1604 l_amb_context_code     VARCHAR2(30)  ;
1605 l_log_module           VARCHAR2(240) ;
1606 l_output_value         VARCHAR2(30)  ;
1607 BEGIN
1608 IF g_log_enabled THEN
1609       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1610 END IF;
1611 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1612 
1613       trace
1614          (p_msg      => 'BEGIN of AcctDerRule_12'
1615          ,p_level    => C_LEVEL_PROCEDURE
1616          ,p_module   => l_log_module);
1617 
1618 END IF;
1619 
1620 l_component_type         := 'AMB_ADR';
1621 l_component_code         := 'FV_PYA_46X002_487101';
1622 l_component_type_code    := 'S';
1623 l_component_appl_id      :=  201;
1624 l_amb_context_code       := 'DEFAULT';
1625 x_transaction_coa_id     :=  null;
1626 x_accounting_coa_id      :=  null;
1627 x_flexfield_segment_code :=  null;
1628 x_flex_value_set_id      := 1009988 ;
1629 
1630 
1631  IF (NVL(p_source_10,'
1632 ') =  'Y' AND 
1633 p_source_11 <  0 AND 
1634 NVL(p_source_8,'
1635 ') =  'Unexpired') OR 
1636 NVL(
1637 xla_ae_sources_pkg.GetSystemSourceChar(
1638    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1639  , p_source_type_code      => 'Y'
1640  , p_source_application_id =>  602
1641 ),'
1642 ') =  'PO_PA_CANCELLED' OR 
1643 NVL(
1644 xla_ae_sources_pkg.GetSystemSourceChar(
1645    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1646  , p_source_type_code      => 'Y'
1647  , p_source_application_id =>  602
1648 ),'
1649 ') =  'RELEASE_CANCELLED' OR 
1650 NVL(
1651 xla_ae_sources_pkg.GetSystemSourceChar(
1652    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1653  , p_source_type_code      => 'Y'
1654  , p_source_application_id =>  602
1655 ),'
1656 ') =  'PO_PA_FINAL_CLOSED' OR 
1657 NVL(
1658 xla_ae_sources_pkg.GetSystemSourceChar(
1659    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1660  , p_source_type_code      => 'Y'
1661  , p_source_application_id =>  602
1662 ),'
1663 ') =  'RELEASE_FINAL_CLOSED'
1664  THEN 
1665 --
1666   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1667 
1668       trace
1669          (p_msg      => 'END of AcctDerRule_12'
1670          ,p_level    => C_LEVEL_PROCEDURE
1671          ,p_module   => l_log_module);
1672 
1673   END IF;
1674   x_value_combination_id  :=  null ;
1675   x_value_segment_code    :=  null ;
1676   x_value_type_code       := 'C';
1677   l_output_value          := '487101';
1678   RETURN l_output_value;
1679 
1680  ELSIF (NVL(p_source_7,'
1681 ') =  'A' OR 
1682 NVL(p_source_7,'
1683 ') =  'B') AND 
1684 NVL(p_source_8,'
1685 ') =  'Unexpired' AND 
1686 p_source_11 >  0 AND 
1687 NVL(p_source_10,'
1688 ') =  'Y'
1689  THEN 
1690 --
1691   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1692 
1693       trace
1694          (p_msg      => 'END of AcctDerRule_12'
1695          ,p_level    => C_LEVEL_PROCEDURE
1696          ,p_module   => l_log_module);
1697 
1698   END IF;
1699   x_value_combination_id  :=  null ;
1700   x_value_segment_code    :=  null ;
1701   x_value_type_code       := 'C';
1702   l_output_value          := '461002';
1703   RETURN l_output_value;
1704 
1705  ELSIF NVL(p_source_7,'
1706 ') =  'C' AND 
1707 NVL(p_source_8,'
1708 ') =  'Unexpired' AND 
1709 NVL(p_source_10,'
1710 ') =  'Y' AND 
1711 p_source_11 >  0
1712  THEN 
1713 --
1714   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1715 
1716       trace
1717          (p_msg      => 'END of AcctDerRule_12'
1718          ,p_level    => C_LEVEL_PROCEDURE
1719          ,p_module   => l_log_module);
1720 
1721   END IF;
1722   x_value_combination_id  :=  null ;
1723   x_value_segment_code    :=  null ;
1724   x_value_type_code       := 'C';
1725   l_output_value          := '462002';
1726   RETURN l_output_value;
1727 
1728  ELSIF NVL(p_source_8,'
1729 ') =  'Expired'
1730  THEN 
1731 --
1732   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1733 
1734       trace
1735          (p_msg      => 'END of AcctDerRule_12'
1736          ,p_level    => C_LEVEL_PROCEDURE
1737          ,p_module   => l_log_module);
1738 
1739   END IF;
1740   x_value_combination_id  :=  null ;
1741   x_value_segment_code    :=  null ;
1742   x_value_type_code       := 'C';
1743   l_output_value          := '465002';
1744   RETURN l_output_value;
1745 
1746  ELSE 
1747     IF p_override_seg_flag = 'Y' THEN 
1748        RETURN '#$NO_OVERRIDE#$';
1749     END IF;
1750  END IF;
1751 
1752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1753 
1754       trace
1755          (p_msg      => 'END of AcctDerRule_12(invalid)'
1756          ,p_level    => C_LEVEL_PROCEDURE
1757          ,p_module   => l_log_module);
1758 
1759 END IF;
1760 
1761 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1762 x_value_combination_id  := null;
1763 x_value_segment_code    := null;
1764 x_value_type_code       := null;
1765 l_output_value          := null;
1766 xla_accounting_err_pkg.build_message
1767                  (p_appli_s_name            => 'XLA'
1768                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1769                  ,p_token_1                 => 'COMPONENT_NAME'
1770                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1771                                                             l_component_type
1772                                                           , l_component_code
1773                                                           , l_component_type_code
1774                                                           , l_component_appl_id
1775                                                           , l_amb_context_code
1776                                                           )
1777                  ,p_token_2                 => 'OWNER'
1778                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1779                                                         'XLA_OWNER_TYPE'
1780                                                         ,l_component_type_code
1781                                                         )
1782                  ,p_token_3                 => 'PAD_NAME'
1783                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1784                  ,p_token_4                 => 'PAD_OWNER'
1785                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1786                                                         'XLA_OWNER_TYPE'
1787                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1788                                                         )
1789                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1790                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1791                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1792                  ,p_ae_header_id            => NULL
1793 );
1794 RETURN l_output_value;
1795 EXCEPTION
1796   WHEN xla_exceptions_pkg.application_exception THEN
1797       RAISE;
1798   WHEN OTHERS THEN
1799        xla_exceptions_pkg.raise_message
1800            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_12');
1801 END AcctDerRule_12;
1802 --
1803 
1804 ---------------------------------------
1805 --
1806 -- PRIVATE FUNCTION
1807 --         AcctDerRule_13
1808 --
1809 ---------------------------------------
1810 FUNCTION AcctDerRule_13 (
1811   p_application_id             IN NUMBER
1812 , p_ae_header_id               IN NUMBER
1813 , p_side                       IN VARCHAR2
1814 , p_override_seg_flag          IN VARCHAR2  
1815 , x_transaction_coa_id         OUT NOCOPY NUMBER
1816 , x_accounting_coa_id          OUT NOCOPY NUMBER
1817 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1818 , x_flex_value_set_id          OUT NOCOPY NUMBER
1819 , x_value_type_code            OUT NOCOPY VARCHAR2
1820 , x_value_combination_id       OUT NOCOPY NUMBER
1821 , x_value_segment_code         OUT NOCOPY VARCHAR2
1822 )
1823 RETURN VARCHAR2
1824 IS
1825 l_component_type       VARCHAR2(80)  ;
1826 l_component_code       VARCHAR2(30)  ;
1827 l_component_type_code  VARCHAR2(1)   ;
1828 l_component_appl_id    INTEGER       ;
1829 l_amb_context_code     VARCHAR2(30)  ;
1830 l_log_module           VARCHAR2(240) ;
1831 l_output_value         VARCHAR2(30)  ;
1832 BEGIN
1833 IF g_log_enabled THEN
1834       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1835 END IF;
1836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1837 
1838       trace
1839          (p_msg      => 'BEGIN of AcctDerRule_13'
1840          ,p_level    => C_LEVEL_PROCEDURE
1841          ,p_module   => l_log_module);
1842 
1843 END IF;
1844 
1845 l_component_type         := 'AMB_ADR';
1846 l_component_code         := 'FV_PYA_FINAL_CLOSE_487101';
1847 l_component_type_code    := 'S';
1848 l_component_appl_id      :=  201;
1849 l_amb_context_code       := 'DEFAULT';
1850 x_transaction_coa_id     :=  null;
1851 x_accounting_coa_id      :=  null;
1852 x_flexfield_segment_code :=  null;
1853 x_flex_value_set_id      := 1009988 ;
1854 
1855 
1856 --
1857   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1858 
1859       trace
1860          (p_msg      => 'END of AcctDerRule_13'
1861          ,p_level    => C_LEVEL_PROCEDURE
1862          ,p_module   => l_log_module);
1863 
1864   END IF;
1865   x_value_combination_id  :=  null ;
1866   x_value_segment_code    :=  null ;
1867   x_value_type_code       := 'C';
1868   l_output_value          := '487101';
1869   RETURN l_output_value;
1870 
1871 
1872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1873 
1874       trace
1875          (p_msg      => 'END of AcctDerRule_13(invalid)'
1876          ,p_level    => C_LEVEL_PROCEDURE
1877          ,p_module   => l_log_module);
1878 
1879 END IF;
1880 
1881 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1882 x_value_combination_id  := null;
1883 x_value_segment_code    := null;
1884 x_value_type_code       := null;
1885 l_output_value          := null;
1886 xla_accounting_err_pkg.build_message
1887                  (p_appli_s_name            => 'XLA'
1888                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1889                  ,p_token_1                 => 'COMPONENT_NAME'
1890                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1891                                                             l_component_type
1892                                                           , l_component_code
1893                                                           , l_component_type_code
1894                                                           , l_component_appl_id
1895                                                           , l_amb_context_code
1896                                                           )
1897                  ,p_token_2                 => 'OWNER'
1898                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1899                                                         'XLA_OWNER_TYPE'
1900                                                         ,l_component_type_code
1901                                                         )
1902                  ,p_token_3                 => 'PAD_NAME'
1903                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1904                  ,p_token_4                 => 'PAD_OWNER'
1905                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1906                                                         'XLA_OWNER_TYPE'
1907                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1908                                                         )
1909                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1910                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1911                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1912                  ,p_ae_header_id            => NULL
1913 );
1914 RETURN l_output_value;
1915 EXCEPTION
1916   WHEN xla_exceptions_pkg.application_exception THEN
1917       RAISE;
1918   WHEN OTHERS THEN
1919        xla_exceptions_pkg.raise_message
1920            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctDerRule_13');
1921 END AcctDerRule_13;
1922 --
1923 
1924 ---------------------------------------
1925 --
1926 -- PRIVATE FUNCTION
1927 --         AcctLineType_14
1928 --
1929 ---------------------------------------
1930 PROCEDURE AcctLineType_14 (
1931   p_application_id        IN NUMBER
1932  ,p_event_id              IN NUMBER
1933  ,p_calculate_acctd_flag  IN VARCHAR2
1934  ,p_calculate_g_l_flag    IN VARCHAR2
1935  ,p_actual_flag           IN OUT VARCHAR2
1936  ,p_balance_type_code     OUT VARCHAR2
1937  ,p_gain_or_loss_ref      OUT VARCHAR2
1938  
1939 --Budget Account
1940  , p_source_9            IN NUMBER
1941 --Federal Prior Year Flag
1942  , p_source_10            IN VARCHAR2
1943 --Main Or Backing Code
1944  , p_source_13            IN VARCHAR2
1945 --PO Distribution Type
1946  , p_source_14            IN VARCHAR2
1947 --Accounting Reversal Flag
1948  , p_source_15            IN VARCHAR2
1949 --Distribution Link Type
1950  , p_source_17            IN VARCHAR2
1951 --PO Distribution Identifier
1952  , p_source_19            IN NUMBER
1953 --PO Header Identifier
1954  , p_source_20            IN NUMBER
1955 --Applied To Application Identifier
1956  , p_source_21            IN NUMBER
1957 --Applied To Distribution Link Type
1958  , p_source_22            IN VARCHAR2
1959 --Applied To Entity Code
1960  , p_source_23            IN VARCHAR2
1961 --Applied To Distribution Identifier 1
1962  , p_source_24            IN NUMBER
1963 --Applied To Header Identifier 1
1964  , p_source_25            IN NUMBER
1965 --Entered Amount
1966  , p_source_26            IN NUMBER
1967 --Currency Code
1968  , p_source_27            IN VARCHAR2
1969 --Accounted Amount
1970  , p_source_28            IN NUMBER
1971 --PO Encumbrance Upgrade Option
1972  , p_source_29            IN VARCHAR2
1973 --Federal Unanticipated Amt
1974  , p_source_30            IN NUMBER
1975 --JFMIP Reference
1976  , p_source_31            IN VARCHAR2
1977 --PO Upgrade Encumbrance Type Identifier
1978  , p_source_32            IN NUMBER
1979 )
1980 IS
1981 
1982 l_component_type              VARCHAR2(80);
1983 l_component_code              VARCHAR2(30);
1984 l_component_type_code         VARCHAR2(1);
1985 l_component_appl_id           INTEGER;
1986 l_amb_context_code            VARCHAR2(30);
1987 l_entity_code                 VARCHAR2(30);
1988 l_event_class_code            VARCHAR2(30);
1989 l_ae_header_id                NUMBER;
1990 l_event_type_code             VARCHAR2(30);
1991 l_line_definition_code        VARCHAR2(30);
1992 l_line_definition_owner_code  VARCHAR2(1);
1993 --
1994 -- adr variables
1995 l_segment                     VARCHAR2(30);
1996 l_ccid                        NUMBER;
1997 l_adr_transaction_coa_id      NUMBER;
1998 l_adr_accounting_coa_id       NUMBER;
1999 l_adr_flexfield_segment_code  VARCHAR2(30);
2000 l_adr_flex_value_set_id       NUMBER;
2001 l_adr_value_type_code         VARCHAR2(30);
2002 l_adr_value_combination_id    NUMBER;
2003 l_adr_value_segment_code      VARCHAR2(30);
2004 
2005 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2006 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2007 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2008 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2009 
2010 -- 4262811 Variables ------------------------------------------------------------------------------------------
2011 l_entered_amt_idx             NUMBER;
2012 l_accted_amt_idx              NUMBER;
2013 l_acc_rev_flag                VARCHAR2(1);
2014 l_accrual_line_num            NUMBER;
2015 l_tmp_amt                     NUMBER;
2016 l_acc_rev_natural_side_code   VARCHAR2(1);
2017 
2018 l_num_entries                 NUMBER;
2019 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2020 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2021 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2022 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2023 l_recog_line_1                NUMBER;
2024 l_recog_line_2                NUMBER;
2025 
2026 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2027 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2028 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2029 
2030 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2031 
2032 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2033 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2034 
2035 ---------------------------------------------------------------------------------------------------------------
2036 
2037 
2038 --
2039 -- bulk performance
2040 --
2041 l_balance_type_code           VARCHAR2(1);
2042 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2043 l_log_module                  VARCHAR2(240);
2044 
2045 --
2046 -- Upgrade strategy
2047 --
2048 l_actual_upg_option           VARCHAR2(1);
2049 l_enc_upg_option           VARCHAR2(1);
2050 
2051 --
2052 BEGIN
2053 --
2054 IF g_log_enabled THEN
2055       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
2056 END IF;
2057 --
2058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2059 
2060       trace
2061          (p_msg      => 'BEGIN of AcctLineType_14'
2062          ,p_level    => C_LEVEL_PROCEDURE
2063          ,p_module   => l_log_module);
2064 
2065 END IF;
2066 --
2067 l_component_type             := 'AMB_JLT';
2068 l_component_code             := 'FV_BPA_CANCEL_CR';
2069 l_component_type_code        := 'S';
2070 l_component_appl_id          :=  201;
2071 l_amb_context_code           := 'DEFAULT';
2072 l_entity_code                := 'PURCHASE_ORDER';
2073 l_event_class_code           := 'PO_PA';
2074 l_event_type_code            := 'PO_PA_ALL';
2075 l_line_definition_owner_code := 'S';
2076 l_line_definition_code       := 'FV_PO_ALL';
2077 --
2078 l_balance_type_code          := 'A';
2079 l_segment                     := NULL;
2080 l_ccid                        := NULL;
2081 l_adr_transaction_coa_id      := NULL;
2082 l_adr_accounting_coa_id       := NULL;
2083 l_adr_flexfield_segment_code  := NULL;
2084 l_adr_flex_value_set_id       := NULL;
2085 l_adr_value_type_code         := NULL;
2086 l_adr_value_combination_id    := NULL;
2087 l_adr_value_segment_code      := NULL;
2088 
2089 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2090 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
2091 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
2092 l_budgetary_control_flag     := 'Y';
2093 
2094 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2095 l_bflow_applied_to_amt       := NULL; -- 5132302
2096 l_entered_amt_idx            := NULL;          -- 4262811
2097 l_accted_amt_idx             := NULL;          -- 4262811
2098 l_acc_rev_flag               := NULL;          -- 4262811
2099 l_accrual_line_num           := NULL;          -- 4262811
2100 l_tmp_amt                    := NULL;          -- 4262811
2101 --
2102  
2103 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2104     l_balance_type_code <> 'B' THEN
2105 IF (NVL(
2106 xla_ae_sources_pkg.GetSystemSourceChar(
2107    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2108  , p_source_type_code      => 'Y'
2109  , p_source_application_id =>  602
2110 ),'
2111 ') =  'PO_PA_CANCELLED' OR 
2112 NVL(
2113 xla_ae_sources_pkg.GetSystemSourceChar(
2114    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2115  , p_source_type_code      => 'Y'
2116  , p_source_application_id =>  602
2117 ),'
2118 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
2119 NVL(p_source_13,'
2120 ') =  'M' AND 
2121 NVL(p_source_14,'
2122 ') =  'AGREEMENT' AND 
2123 NVL(p_source_10,'
2124 ') =  'N'
2125  THEN 
2126 
2127    --
2128    XLA_AE_LINES_PKG.SetNewLine;
2129 
2130    p_balance_type_code          := l_balance_type_code;
2131    -- set the flag so later we will know whether the gain loss line needs to be created
2132    
2133    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2134      p_actual_flag :='A';
2135    END IF;
2136 
2137    --
2138    -- bulk performance
2139    --
2140    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2141                                       p_header_num   => 0); -- 4262811
2142    --
2143    -- set accounting line options
2144    --
2145    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2146            p_natural_side_code          => 'C'
2147          , p_gain_or_loss_flag          => 'N'
2148          , p_gl_transfer_mode_code      => 'S'
2149          , p_acct_entry_type_code       => 'A'
2150          , p_switch_side_flag           => 'N'
2151          , p_merge_duplicate_code       => 'N'
2152          );
2153    --
2154    l_acc_rev_natural_side_code := 'D';  -- 4262811
2155    -- 
2156    --
2157    -- set accounting line type info
2158    --
2159    xla_ae_lines_pkg.SetAcctLineType
2160       (p_component_type             => l_component_type
2161       ,p_event_type_code            => l_event_type_code
2162       ,p_line_definition_owner_code => l_line_definition_owner_code
2163       ,p_line_definition_code       => l_line_definition_code
2164       ,p_accounting_line_code       => l_component_code
2165       ,p_accounting_line_type_code  => l_component_type_code
2166       ,p_accounting_line_appl_id    => l_component_appl_id
2167       ,p_amb_context_code           => l_amb_context_code
2168       ,p_entity_code                => l_entity_code
2169       ,p_event_class_code           => l_event_class_code);
2170    --
2171    -- set accounting class
2172    --
2173    xla_ae_lines_pkg.SetAcctClass(
2174            p_accounting_class_code  => 'PURCHASE_ORDER'
2175          , p_ae_header_id           => l_ae_header_id
2176          );
2177 
2178    --
2179    -- set rounding class
2180    --
2181    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2182                       'PURCHASE_ORDER';
2183 
2184    --
2185    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2186    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2187    --
2188    -- bulk performance
2189    --
2190    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2191 
2192    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2193       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2194 
2195    -- 4955764
2196    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2197       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2198 
2199    -- 4458381 Public Sector Enh
2200    
2201    --
2202    -- set accounting attributes for the line type
2203    --
2204    l_entered_amt_idx := 23;
2205    l_accted_amt_idx  := 25;
2206    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2207    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2208    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
2209    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
2210    l_rec_acct_attrs.array_num_value(2)  := 
2211 xla_ae_sources_pkg.GetSystemSourceNum(
2212    p_source_code           => 'XLA_EVENT_APPL_ID'
2213  , p_source_type_code      => 'Y'
2214  , p_source_application_id =>  602
2215 );
2216    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
2217    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
2218    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
2219    l_rec_acct_attrs.array_char_value(4)  := 
2220 xla_ae_sources_pkg.GetSystemSourceChar(
2221    p_source_code           => 'XLA_ENTITY_CODE'
2222  , p_source_type_code      => 'Y'
2223  , p_source_application_id =>  602
2224 );
2225    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
2226    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
2227    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
2228    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
2229    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
2230    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
2231    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2232    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
2233    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
2234    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
2235    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
2236    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
2237    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2238    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
2239    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
2240    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
2241    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
2242    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
2243    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
2244    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
2245    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
2246    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
2247    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
2248    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
2249    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
2250    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
2251    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
2252    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
2253    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
2254    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
2255    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
2256    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
2257    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
2258    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
2259    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
2260    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
2261    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
2262    l_rec_acct_attrs.array_num_value(23)  := p_source_30;
2263    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
2264    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
2265    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
2266    l_rec_acct_attrs.array_num_value(25)  := p_source_30;
2267    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
2268    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
2269    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
2270    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
2271    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
2272    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
2273    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
2274    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
2275    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
2276    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
2277    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
2278    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
2279 
2280    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2281    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2282 
2283    ---------------------------------------------------------------------------------------------------------------
2284    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2285    ---------------------------------------------------------------------------------------------------------------
2286    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2287 
2288    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2289    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2290 
2291    IF xla_accounting_cache_pkg.GetValueChar
2292          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2293          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2294    AND l_bflow_method_code = 'PRIOR_ENTRY'
2295 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2296    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2297          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2298        )
2299    THEN
2300          xla_ae_lines_pkg.BflowUpgEntry
2301            (p_business_method_code    => l_bflow_method_code
2302            ,p_business_class_code     => l_bflow_class_code
2303            ,p_balance_type            => l_balance_type_code);
2304    ELSE
2305       NULL;
2306 XLA_AE_LINES_PKG.business_flow_validation(
2307                                 p_business_method_code     => l_bflow_method_code
2308                                ,p_business_class_code      => l_bflow_class_code
2309                                ,p_inherit_description_flag => l_inherit_desc_flag);
2310    END IF;
2311 
2312    --
2313    -- call analytical criteria
2314    --
2315    -- Inherited Analytical Criteria for business flow method of Prior Entry.
2316    --
2317    -- call description
2318    --
2319    -- No description or it is inherited.
2320    --
2321    -- call ADRs
2322    -- Bug 4922099
2323    --
2324    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2325         (NVL(l_actual_upg_option, 'N') = 'O') OR
2326         (NVL(l_enc_upg_option, 'N') = 'O')
2327       )
2328    THEN
2329    NULL;
2330    --
2331    --
2332    
2333    --
2334    --
2335    END IF;
2336    --
2337    -- Bug 4922099
2338    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2339           (NVL(l_enc_upg_option, 'N') = 'O')
2340         ) AND
2341         (l_bflow_method_code = 'PRIOR_ENTRY')
2342       )
2343    THEN
2344       IF
2345       --
2346       1 = 1
2347       --
2348       THEN
2349       xla_accounting_err_pkg.build_message
2350                                     (p_appli_s_name            => 'XLA'
2351                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2352                                     ,p_token_1                 => 'LINE_NUMBER'
2353                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2354                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2355                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2356                                                                              l_component_type
2357                                                                             ,l_component_code
2358                                                                             ,l_component_type_code
2359                                                                             ,l_component_appl_id
2360                                                                             ,l_amb_context_code
2361                                                                             ,l_entity_code
2362                                                                             ,l_event_class_code
2363                                                                            )
2364                                     ,p_token_3                 => 'OWNER'
2365                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2366                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2367                                                                           ,p_lookup_code    => l_component_type_code
2368                                                                          )
2369                                     ,p_token_4                 => 'PRODUCT_NAME'
2370                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2371                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2372                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2373                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2374                                     ,p_ae_header_id            =>  NULL
2375                                        );
2376 
2377         IF (C_LEVEL_ERROR>= g_log_level) THEN
2378                  trace
2379                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2380                       ,p_level    => C_LEVEL_ERROR
2381                       ,p_module   => l_log_module);
2382         END IF;
2383       END IF;
2384    END IF;
2385    --
2386    --
2387    ------------------------------------------------------------------------------------------------
2388    -- 4219869 Business Flow
2389    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2390    -- Prior Entry.  Currently, the following code is always generated.
2391    ------------------------------------------------------------------------------------------------
2392    -- No ValidateCurrentLine for business flow method of Prior Entry
2393 
2394    ------------------------------------------------------------------------------------
2395    -- 4219869 Business Flow
2396    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2397    ------------------------------------------------------------------------------------
2398    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2399 
2400    ----------------------------------------------------------------------------------
2401    -- 4219869 Business Flow
2402    -- Update journal entry status -- Need to generate this within IF <condition>
2403    ----------------------------------------------------------------------------------
2404    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2405          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2406          ,p_balance_type_code => l_balance_type_code
2407          );
2408 
2409    -------------------------------------------------------------------------------------------
2410    -- 4262811 - Generate the Accrual Reversal lines
2411    -------------------------------------------------------------------------------------------
2412    BEGIN
2413       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2414                               (g_array_event(p_event_id).array_value_num('header_index'));
2415       IF l_acc_rev_flag IS NULL THEN
2416          l_acc_rev_flag := 'N';
2417       END IF;
2418    EXCEPTION
2419       WHEN OTHERS THEN
2420          l_acc_rev_flag := 'N';
2421    END;
2422    --
2423    IF (l_acc_rev_flag = 'Y') THEN
2424 
2425        -- 4645092  ------------------------------------------------------------------------------
2426        -- To allow MPA report to determine if it should generate report process
2427        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2428        ------------------------------------------------------------------------------------------
2429 
2430        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2431        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2432 
2433        --
2434        -- Update the line information that should be overwritten
2435        --
2436        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2437                                          p_header_num   => 1);
2438        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2439 
2440        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2441 
2442        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2443           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2444        END IF;
2445 
2446       --
2447       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2448       --
2449       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2450           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2451       ELSE
2452           ---------------------------------------------------------------------------------------------------
2453           -- 4262811a Switch Sign
2454           ---------------------------------------------------------------------------------------------------
2455           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2456           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2457                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2458           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2459                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2460           -- 5132302
2461           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2462                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2463 
2464       END IF;
2465 
2466       -- 4955764
2467       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2468       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2469 
2470 
2471       XLA_AE_LINES_PKG.ValidateCurrentLine;
2472       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2473 
2474       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2475                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2476                ,p_balance_type_code => l_balance_type_code);
2477 
2478    END IF;
2479 
2480    -----------------------------------------------------------------------------------------
2481    -- 4262811 Multiperiod Accounting
2482    -----------------------------------------------------------------------------------------
2483      -- No MPA option is assigned.
2484 
2485 
2486 END IF;
2487 END IF;
2488 --
2489 
2490 --
2491 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2492    trace
2493       (p_msg      => 'END of AcctLineType_14'
2494       ,p_level    => C_LEVEL_PROCEDURE
2495       ,p_module   => l_log_module);
2496 END IF;
2497 --
2498 EXCEPTION
2499   WHEN xla_exceptions_pkg.application_exception THEN
2500       RAISE;
2501   WHEN OTHERS THEN
2502        xla_exceptions_pkg.raise_message
2503            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_14');
2504 END AcctLineType_14;
2505 --
2506 
2507 ---------------------------------------
2508 --
2509 -- PRIVATE FUNCTION
2510 --         AcctLineType_15
2511 --
2512 ---------------------------------------
2513 PROCEDURE AcctLineType_15 (
2514   p_application_id        IN NUMBER
2515  ,p_event_id              IN NUMBER
2516  ,p_calculate_acctd_flag  IN VARCHAR2
2517  ,p_calculate_g_l_flag    IN VARCHAR2
2518  ,p_actual_flag           IN OUT VARCHAR2
2519  ,p_balance_type_code     OUT VARCHAR2
2520  ,p_gain_or_loss_ref      OUT VARCHAR2
2521  
2522 --Budget Account
2523  , p_source_9            IN NUMBER
2524 --Federal Prior Year Flag
2525  , p_source_10            IN VARCHAR2
2526 --Main Or Backing Code
2527  , p_source_13            IN VARCHAR2
2528 --PO Distribution Type
2529  , p_source_14            IN VARCHAR2
2530 --Accounting Reversal Flag
2531  , p_source_15            IN VARCHAR2
2532 --Distribution Link Type
2533  , p_source_17            IN VARCHAR2
2534 --PO Distribution Identifier
2535  , p_source_19            IN NUMBER
2536 --PO Header Identifier
2537  , p_source_20            IN NUMBER
2538 --Applied To Application Identifier
2539  , p_source_21            IN NUMBER
2540 --Applied To Distribution Link Type
2541  , p_source_22            IN VARCHAR2
2542 --Applied To Entity Code
2543  , p_source_23            IN VARCHAR2
2544 --Applied To Distribution Identifier 1
2545  , p_source_24            IN NUMBER
2546 --Applied To Header Identifier 1
2547  , p_source_25            IN NUMBER
2548 --Entered Amount
2549  , p_source_26            IN NUMBER
2550 --Currency Code
2551  , p_source_27            IN VARCHAR2
2552 --Accounted Amount
2553  , p_source_28            IN NUMBER
2554 --PO Encumbrance Upgrade Option
2555  , p_source_29            IN VARCHAR2
2556 --JFMIP Reference
2557  , p_source_31            IN VARCHAR2
2558 --PO Upgrade Encumbrance Type Identifier
2559  , p_source_32            IN NUMBER
2560 )
2561 IS
2562 
2563 l_component_type              VARCHAR2(80);
2564 l_component_code              VARCHAR2(30);
2565 l_component_type_code         VARCHAR2(1);
2566 l_component_appl_id           INTEGER;
2567 l_amb_context_code            VARCHAR2(30);
2568 l_entity_code                 VARCHAR2(30);
2569 l_event_class_code            VARCHAR2(30);
2570 l_ae_header_id                NUMBER;
2571 l_event_type_code             VARCHAR2(30);
2572 l_line_definition_code        VARCHAR2(30);
2573 l_line_definition_owner_code  VARCHAR2(1);
2574 --
2575 -- adr variables
2576 l_segment                     VARCHAR2(30);
2577 l_ccid                        NUMBER;
2578 l_adr_transaction_coa_id      NUMBER;
2579 l_adr_accounting_coa_id       NUMBER;
2580 l_adr_flexfield_segment_code  VARCHAR2(30);
2581 l_adr_flex_value_set_id       NUMBER;
2582 l_adr_value_type_code         VARCHAR2(30);
2583 l_adr_value_combination_id    NUMBER;
2584 l_adr_value_segment_code      VARCHAR2(30);
2585 
2586 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2587 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2588 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2589 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2590 
2591 -- 4262811 Variables ------------------------------------------------------------------------------------------
2592 l_entered_amt_idx             NUMBER;
2593 l_accted_amt_idx              NUMBER;
2594 l_acc_rev_flag                VARCHAR2(1);
2595 l_accrual_line_num            NUMBER;
2596 l_tmp_amt                     NUMBER;
2597 l_acc_rev_natural_side_code   VARCHAR2(1);
2598 
2599 l_num_entries                 NUMBER;
2600 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2601 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2602 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2603 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2604 l_recog_line_1                NUMBER;
2605 l_recog_line_2                NUMBER;
2606 
2607 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2608 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2609 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2610 
2611 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2612 
2613 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2614 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2615 
2616 ---------------------------------------------------------------------------------------------------------------
2617 
2618 
2619 --
2620 -- bulk performance
2621 --
2622 l_balance_type_code           VARCHAR2(1);
2623 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2624 l_log_module                  VARCHAR2(240);
2625 
2626 --
2627 -- Upgrade strategy
2628 --
2629 l_actual_upg_option           VARCHAR2(1);
2630 l_enc_upg_option           VARCHAR2(1);
2631 
2632 --
2633 BEGIN
2634 --
2635 IF g_log_enabled THEN
2636       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
2637 END IF;
2638 --
2639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2640 
2641       trace
2642          (p_msg      => 'BEGIN of AcctLineType_15'
2643          ,p_level    => C_LEVEL_PROCEDURE
2644          ,p_module   => l_log_module);
2645 
2646 END IF;
2647 --
2648 l_component_type             := 'AMB_JLT';
2649 l_component_code             := 'FV_BPA_CANCEL_DR';
2650 l_component_type_code        := 'S';
2651 l_component_appl_id          :=  201;
2652 l_amb_context_code           := 'DEFAULT';
2653 l_entity_code                := 'PURCHASE_ORDER';
2654 l_event_class_code           := 'PO_PA';
2655 l_event_type_code            := 'PO_PA_ALL';
2656 l_line_definition_owner_code := 'S';
2657 l_line_definition_code       := 'FV_PO_ALL';
2658 --
2659 l_balance_type_code          := 'A';
2660 l_segment                     := NULL;
2661 l_ccid                        := NULL;
2662 l_adr_transaction_coa_id      := NULL;
2663 l_adr_accounting_coa_id       := NULL;
2664 l_adr_flexfield_segment_code  := NULL;
2665 l_adr_flex_value_set_id       := NULL;
2666 l_adr_value_type_code         := NULL;
2667 l_adr_value_combination_id    := NULL;
2668 l_adr_value_segment_code      := NULL;
2669 
2670 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2671 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
2672 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
2673 l_budgetary_control_flag     := 'Y';
2674 
2675 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2676 l_bflow_applied_to_amt       := NULL; -- 5132302
2677 l_entered_amt_idx            := NULL;          -- 4262811
2678 l_accted_amt_idx             := NULL;          -- 4262811
2679 l_acc_rev_flag               := NULL;          -- 4262811
2680 l_accrual_line_num           := NULL;          -- 4262811
2681 l_tmp_amt                    := NULL;          -- 4262811
2682 --
2683  
2684 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2685     l_balance_type_code <> 'B' THEN
2686 IF (NVL(
2687 xla_ae_sources_pkg.GetSystemSourceChar(
2688    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2689  , p_source_type_code      => 'Y'
2690  , p_source_application_id =>  602
2691 ),'
2692 ') =  'PO_PA_CANCELLED' OR 
2693 NVL(
2694 xla_ae_sources_pkg.GetSystemSourceChar(
2695    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2696  , p_source_type_code      => 'Y'
2697  , p_source_application_id =>  602
2698 ),'
2699 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
2700 NVL(p_source_13,'
2701 ') =  'M' AND 
2702 NVL(p_source_14,'
2703 ') =  'AGREEMENT' AND 
2704 NVL(p_source_10,'
2705 ') =  'N'
2706  THEN 
2707 
2708    --
2709    XLA_AE_LINES_PKG.SetNewLine;
2710 
2711    p_balance_type_code          := l_balance_type_code;
2712    -- set the flag so later we will know whether the gain loss line needs to be created
2713    
2714    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2715      p_actual_flag :='A';
2716    END IF;
2717 
2718    --
2719    -- bulk performance
2720    --
2721    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2722                                       p_header_num   => 0); -- 4262811
2723    --
2724    -- set accounting line options
2725    --
2726    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2727            p_natural_side_code          => 'D'
2728          , p_gain_or_loss_flag          => 'N'
2729          , p_gl_transfer_mode_code      => 'S'
2730          , p_acct_entry_type_code       => 'A'
2731          , p_switch_side_flag           => 'N'
2732          , p_merge_duplicate_code       => 'N'
2733          );
2734    --
2735    l_acc_rev_natural_side_code := 'C';  -- 4262811
2736    -- 
2737    --
2738    -- set accounting line type info
2739    --
2740    xla_ae_lines_pkg.SetAcctLineType
2741       (p_component_type             => l_component_type
2742       ,p_event_type_code            => l_event_type_code
2743       ,p_line_definition_owner_code => l_line_definition_owner_code
2744       ,p_line_definition_code       => l_line_definition_code
2745       ,p_accounting_line_code       => l_component_code
2746       ,p_accounting_line_type_code  => l_component_type_code
2747       ,p_accounting_line_appl_id    => l_component_appl_id
2748       ,p_amb_context_code           => l_amb_context_code
2749       ,p_entity_code                => l_entity_code
2750       ,p_event_class_code           => l_event_class_code);
2751    --
2752    -- set accounting class
2753    --
2754    xla_ae_lines_pkg.SetAcctClass(
2755            p_accounting_class_code  => 'PURCHASE_ORDER'
2756          , p_ae_header_id           => l_ae_header_id
2757          );
2758 
2759    --
2760    -- set rounding class
2761    --
2762    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2763                       'PURCHASE_ORDER';
2764 
2765    --
2766    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2767    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2768    --
2769    -- bulk performance
2770    --
2771    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2772 
2773    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2774       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2775 
2776    -- 4955764
2777    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2778       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2779 
2780    -- 4458381 Public Sector Enh
2781    
2782    --
2783    -- set accounting attributes for the line type
2784    --
2785    l_entered_amt_idx := 23;
2786    l_accted_amt_idx  := 25;
2787    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2788    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
2789    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
2790    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
2791    l_rec_acct_attrs.array_num_value(2)  := 
2792 xla_ae_sources_pkg.GetSystemSourceNum(
2793    p_source_code           => 'XLA_EVENT_APPL_ID'
2794  , p_source_type_code      => 'Y'
2795  , p_source_application_id =>  602
2796 );
2797    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
2798    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
2799    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
2800    l_rec_acct_attrs.array_char_value(4)  := 
2801 xla_ae_sources_pkg.GetSystemSourceChar(
2802    p_source_code           => 'XLA_ENTITY_CODE'
2803  , p_source_type_code      => 'Y'
2804  , p_source_application_id =>  602
2805 );
2806    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
2807    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
2808    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
2809    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
2810    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
2811    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
2812    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2813    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
2814    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
2815    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
2816    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
2817    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
2818    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2819    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
2820    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
2821    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
2822    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
2823    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
2824    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
2825    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
2826    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
2827    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
2828    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
2829    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
2830    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
2831    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
2832    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
2833    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
2834    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
2835    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
2836    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
2837    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
2838    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
2839    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
2840    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
2841    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
2842    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
2843    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
2844    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
2845    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
2846    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
2847    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
2848    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
2849    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
2850    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
2851    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
2852    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
2853    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
2854    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
2855    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
2856    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
2857    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
2858    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
2859    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
2860 
2861    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2862    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2863 
2864    ---------------------------------------------------------------------------------------------------------------
2865    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2866    ---------------------------------------------------------------------------------------------------------------
2867    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2868 
2869    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2870    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2871 
2872    IF xla_accounting_cache_pkg.GetValueChar
2873          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2874          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2875    AND l_bflow_method_code = 'PRIOR_ENTRY'
2876 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2877    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2878          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2879        )
2880    THEN
2881          xla_ae_lines_pkg.BflowUpgEntry
2882            (p_business_method_code    => l_bflow_method_code
2883            ,p_business_class_code     => l_bflow_class_code
2884            ,p_balance_type            => l_balance_type_code);
2885    ELSE
2886       NULL;
2887 XLA_AE_LINES_PKG.business_flow_validation(
2888                                 p_business_method_code     => l_bflow_method_code
2889                                ,p_business_class_code      => l_bflow_class_code
2890                                ,p_inherit_description_flag => l_inherit_desc_flag);
2891    END IF;
2892 
2893    --
2894    -- call analytical criteria
2895    --
2896    -- Inherited Analytical Criteria for business flow method of Prior Entry.
2897    --
2898    -- call description
2899    --
2900    -- No description or it is inherited.
2901    --
2902    -- call ADRs
2903    -- Bug 4922099
2904    --
2905    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2906         (NVL(l_actual_upg_option, 'N') = 'O') OR
2907         (NVL(l_enc_upg_option, 'N') = 'O')
2908       )
2909    THEN
2910    NULL;
2911    --
2912    --
2913    
2914    --
2915    --
2916    END IF;
2917    --
2918    -- Bug 4922099
2919    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2920           (NVL(l_enc_upg_option, 'N') = 'O')
2921         ) AND
2922         (l_bflow_method_code = 'PRIOR_ENTRY')
2923       )
2924    THEN
2925       IF
2926       --
2927       1 = 1
2928       --
2929       THEN
2930       xla_accounting_err_pkg.build_message
2931                                     (p_appli_s_name            => 'XLA'
2932                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2933                                     ,p_token_1                 => 'LINE_NUMBER'
2934                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2935                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2936                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2937                                                                              l_component_type
2938                                                                             ,l_component_code
2939                                                                             ,l_component_type_code
2940                                                                             ,l_component_appl_id
2941                                                                             ,l_amb_context_code
2942                                                                             ,l_entity_code
2943                                                                             ,l_event_class_code
2944                                                                            )
2945                                     ,p_token_3                 => 'OWNER'
2946                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2947                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2948                                                                           ,p_lookup_code    => l_component_type_code
2949                                                                          )
2950                                     ,p_token_4                 => 'PRODUCT_NAME'
2951                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2952                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2953                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2954                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2955                                     ,p_ae_header_id            =>  NULL
2956                                        );
2957 
2958         IF (C_LEVEL_ERROR>= g_log_level) THEN
2959                  trace
2960                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2961                       ,p_level    => C_LEVEL_ERROR
2962                       ,p_module   => l_log_module);
2963         END IF;
2964       END IF;
2965    END IF;
2966    --
2967    --
2968    ------------------------------------------------------------------------------------------------
2969    -- 4219869 Business Flow
2970    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2971    -- Prior Entry.  Currently, the following code is always generated.
2972    ------------------------------------------------------------------------------------------------
2973    -- No ValidateCurrentLine for business flow method of Prior Entry
2974 
2975    ------------------------------------------------------------------------------------
2976    -- 4219869 Business Flow
2977    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2978    ------------------------------------------------------------------------------------
2979    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2980 
2981    ----------------------------------------------------------------------------------
2982    -- 4219869 Business Flow
2983    -- Update journal entry status -- Need to generate this within IF <condition>
2984    ----------------------------------------------------------------------------------
2985    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2986          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2987          ,p_balance_type_code => l_balance_type_code
2988          );
2989 
2990    -------------------------------------------------------------------------------------------
2991    -- 4262811 - Generate the Accrual Reversal lines
2992    -------------------------------------------------------------------------------------------
2993    BEGIN
2994       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2995                               (g_array_event(p_event_id).array_value_num('header_index'));
2996       IF l_acc_rev_flag IS NULL THEN
2997          l_acc_rev_flag := 'N';
2998       END IF;
2999    EXCEPTION
3000       WHEN OTHERS THEN
3001          l_acc_rev_flag := 'N';
3002    END;
3003    --
3004    IF (l_acc_rev_flag = 'Y') THEN
3005 
3006        -- 4645092  ------------------------------------------------------------------------------
3007        -- To allow MPA report to determine if it should generate report process
3008        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3009        ------------------------------------------------------------------------------------------
3010 
3011        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3012        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3013 
3014        --
3015        -- Update the line information that should be overwritten
3016        --
3017        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3018                                          p_header_num   => 1);
3019        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3020 
3021        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3022 
3023        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3024           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3025        END IF;
3026 
3027       --
3028       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3029       --
3030       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3031           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3032       ELSE
3033           ---------------------------------------------------------------------------------------------------
3034           -- 4262811a Switch Sign
3035           ---------------------------------------------------------------------------------------------------
3036           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3037           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3038                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3039           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3040                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3041           -- 5132302
3042           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3043                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3044 
3045       END IF;
3046 
3047       -- 4955764
3048       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3049       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3050 
3051 
3052       XLA_AE_LINES_PKG.ValidateCurrentLine;
3053       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3054 
3055       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3056                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3057                ,p_balance_type_code => l_balance_type_code);
3058 
3059    END IF;
3060 
3061    -----------------------------------------------------------------------------------------
3062    -- 4262811 Multiperiod Accounting
3063    -----------------------------------------------------------------------------------------
3064      -- No MPA option is assigned.
3065 
3066 
3067 END IF;
3068 END IF;
3069 --
3070 
3071 --
3072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3073    trace
3074       (p_msg      => 'END of AcctLineType_15'
3075       ,p_level    => C_LEVEL_PROCEDURE
3076       ,p_module   => l_log_module);
3077 END IF;
3078 --
3079 EXCEPTION
3080   WHEN xla_exceptions_pkg.application_exception THEN
3081       RAISE;
3082   WHEN OTHERS THEN
3083        xla_exceptions_pkg.raise_message
3084            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_15');
3085 END AcctLineType_15;
3086 --
3087 
3088 ---------------------------------------
3089 --
3090 -- PRIVATE FUNCTION
3091 --         AcctLineType_16
3092 --
3093 ---------------------------------------
3094 PROCEDURE AcctLineType_16 (
3095   p_application_id        IN NUMBER
3096  ,p_event_id              IN NUMBER
3097  ,p_calculate_acctd_flag  IN VARCHAR2
3098  ,p_calculate_g_l_flag    IN VARCHAR2
3099  ,p_actual_flag           IN OUT VARCHAR2
3100  ,p_balance_type_code     OUT VARCHAR2
3101  ,p_gain_or_loss_ref      OUT VARCHAR2
3102  
3103 --Budget Account
3104  , p_source_9            IN NUMBER
3105 --Main Or Backing Code
3106  , p_source_13            IN VARCHAR2
3107 --Accounting Reversal Flag
3108  , p_source_15            IN VARCHAR2
3109 --Distribution Link Type
3110  , p_source_17            IN VARCHAR2
3111 --PO Distribution Identifier
3112  , p_source_19            IN NUMBER
3113 --PO Header Identifier
3114  , p_source_20            IN NUMBER
3115 --Applied To Application Identifier
3116  , p_source_21            IN NUMBER
3117 --Applied To Distribution Link Type
3118  , p_source_22            IN VARCHAR2
3119 --Applied To Entity Code
3120  , p_source_23            IN VARCHAR2
3121 --Applied To Distribution Identifier 1
3122  , p_source_24            IN NUMBER
3123 --Applied To Header Identifier 1
3124  , p_source_25            IN NUMBER
3125 --Entered Amount
3126  , p_source_26            IN NUMBER
3127 --Currency Code
3128  , p_source_27            IN VARCHAR2
3129 --Accounted Amount
3130  , p_source_28            IN NUMBER
3131 --PO Encumbrance Upgrade Option
3132  , p_source_29            IN VARCHAR2
3133 --JFMIP Reference
3134  , p_source_31            IN VARCHAR2
3135 --PO Upgrade Encumbrance Type Identifier
3136  , p_source_32            IN NUMBER
3137 --Allocated to Main Document Distribution Type
3138  , p_source_33            IN VARCHAR2
3139 --Allocated to Main Document Distribution Identifier
3140  , p_source_34            IN NUMBER
3141 )
3142 IS
3143 
3144 l_component_type              VARCHAR2(80);
3145 l_component_code              VARCHAR2(30);
3146 l_component_type_code         VARCHAR2(1);
3147 l_component_appl_id           INTEGER;
3148 l_amb_context_code            VARCHAR2(30);
3149 l_entity_code                 VARCHAR2(30);
3150 l_event_class_code            VARCHAR2(30);
3151 l_ae_header_id                NUMBER;
3152 l_event_type_code             VARCHAR2(30);
3153 l_line_definition_code        VARCHAR2(30);
3154 l_line_definition_owner_code  VARCHAR2(1);
3155 --
3156 -- adr variables
3157 l_segment                     VARCHAR2(30);
3158 l_ccid                        NUMBER;
3159 l_adr_transaction_coa_id      NUMBER;
3160 l_adr_accounting_coa_id       NUMBER;
3161 l_adr_flexfield_segment_code  VARCHAR2(30);
3162 l_adr_flex_value_set_id       NUMBER;
3163 l_adr_value_type_code         VARCHAR2(30);
3164 l_adr_value_combination_id    NUMBER;
3165 l_adr_value_segment_code      VARCHAR2(30);
3166 
3167 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3168 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3169 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3170 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3171 
3172 -- 4262811 Variables ------------------------------------------------------------------------------------------
3173 l_entered_amt_idx             NUMBER;
3174 l_accted_amt_idx              NUMBER;
3175 l_acc_rev_flag                VARCHAR2(1);
3176 l_accrual_line_num            NUMBER;
3177 l_tmp_amt                     NUMBER;
3178 l_acc_rev_natural_side_code   VARCHAR2(1);
3179 
3180 l_num_entries                 NUMBER;
3181 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3182 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3183 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3184 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3185 l_recog_line_1                NUMBER;
3186 l_recog_line_2                NUMBER;
3187 
3188 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3189 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3190 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3191 
3192 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3193 
3194 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3195 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3196 
3197 ---------------------------------------------------------------------------------------------------------------
3198 
3199 
3200 --
3201 -- bulk performance
3202 --
3203 l_balance_type_code           VARCHAR2(1);
3204 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3205 l_log_module                  VARCHAR2(240);
3206 
3207 --
3208 -- Upgrade strategy
3209 --
3210 l_actual_upg_option           VARCHAR2(1);
3211 l_enc_upg_option           VARCHAR2(1);
3212 
3213 --
3214 BEGIN
3215 --
3216 IF g_log_enabled THEN
3217       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
3218 END IF;
3219 --
3220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3221 
3222       trace
3223          (p_msg      => 'BEGIN of AcctLineType_16'
3224          ,p_level    => C_LEVEL_PROCEDURE
3225          ,p_module   => l_log_module);
3226 
3227 END IF;
3228 --
3229 l_component_type             := 'AMB_JLT';
3230 l_component_code             := 'FV_BPA_RELIEVE_CR';
3231 l_component_type_code        := 'S';
3232 l_component_appl_id          :=  201;
3233 l_amb_context_code           := 'DEFAULT';
3234 l_entity_code                := 'PURCHASE_ORDER';
3235 l_event_class_code           := 'PO_PA';
3236 l_event_type_code            := 'PO_PA_ALL';
3237 l_line_definition_owner_code := 'S';
3238 l_line_definition_code       := 'FV_PO_ALL';
3239 --
3240 l_balance_type_code          := 'A';
3241 l_segment                     := NULL;
3242 l_ccid                        := NULL;
3243 l_adr_transaction_coa_id      := NULL;
3244 l_adr_accounting_coa_id       := NULL;
3245 l_adr_flexfield_segment_code  := NULL;
3246 l_adr_flex_value_set_id       := NULL;
3247 l_adr_value_type_code         := NULL;
3248 l_adr_value_combination_id    := NULL;
3249 l_adr_value_segment_code      := NULL;
3250 
3251 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3252 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
3253 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
3254 l_budgetary_control_flag     := 'Y';
3255 
3256 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3257 l_bflow_applied_to_amt       := NULL; -- 5132302
3258 l_entered_amt_idx            := NULL;          -- 4262811
3259 l_accted_amt_idx             := NULL;          -- 4262811
3260 l_acc_rev_flag               := NULL;          -- 4262811
3261 l_accrual_line_num           := NULL;          -- 4262811
3262 l_tmp_amt                    := NULL;          -- 4262811
3263 --
3264  
3265 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3266     l_balance_type_code <> 'B' THEN
3267 IF NVL(
3268 xla_ae_sources_pkg.GetSystemSourceChar(
3269    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3270  , p_source_type_code      => 'Y'
3271  , p_source_application_id =>  602
3272 ),'
3273 ') =  'PO_PA_RESERVED' AND 
3274 NVL(p_source_13,'
3275 ') =  'B_PA'
3276  THEN 
3277 
3278    --
3279    XLA_AE_LINES_PKG.SetNewLine;
3280 
3281    p_balance_type_code          := l_balance_type_code;
3282    -- set the flag so later we will know whether the gain loss line needs to be created
3283    
3284    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3285      p_actual_flag :='A';
3286    END IF;
3287 
3288    --
3289    -- bulk performance
3290    --
3291    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3292                                       p_header_num   => 0); -- 4262811
3293    --
3294    -- set accounting line options
3295    --
3296    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3297            p_natural_side_code          => 'C'
3298          , p_gain_or_loss_flag          => 'N'
3299          , p_gl_transfer_mode_code      => 'S'
3300          , p_acct_entry_type_code       => 'A'
3301          , p_switch_side_flag           => 'N'
3302          , p_merge_duplicate_code       => 'N'
3303          );
3304    --
3305    l_acc_rev_natural_side_code := 'D';  -- 4262811
3306    -- 
3307    --
3308    -- set accounting line type info
3309    --
3310    xla_ae_lines_pkg.SetAcctLineType
3311       (p_component_type             => l_component_type
3312       ,p_event_type_code            => l_event_type_code
3313       ,p_line_definition_owner_code => l_line_definition_owner_code
3314       ,p_line_definition_code       => l_line_definition_code
3315       ,p_accounting_line_code       => l_component_code
3316       ,p_accounting_line_type_code  => l_component_type_code
3317       ,p_accounting_line_appl_id    => l_component_appl_id
3318       ,p_amb_context_code           => l_amb_context_code
3319       ,p_entity_code                => l_entity_code
3320       ,p_event_class_code           => l_event_class_code);
3321    --
3322    -- set accounting class
3323    --
3324    xla_ae_lines_pkg.SetAcctClass(
3325            p_accounting_class_code  => 'PURCHASE_ORDER'
3326          , p_ae_header_id           => l_ae_header_id
3327          );
3328 
3329    --
3330    -- set rounding class
3331    --
3332    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3333                       'PURCHASE_ORDER';
3334 
3335    --
3336    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3337    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3338    --
3339    -- bulk performance
3340    --
3341    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3342 
3343    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3344       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3345 
3346    -- 4955764
3347    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3348       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3349 
3350    -- 4458381 Public Sector Enh
3351    
3352    --
3353    -- set accounting attributes for the line type
3354    --
3355    l_entered_amt_idx := 23;
3356    l_accted_amt_idx  := 25;
3357    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3358    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3359    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
3360    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
3361    l_rec_acct_attrs.array_num_value(2)  := 
3362 xla_ae_sources_pkg.GetSystemSourceNum(
3363    p_source_code           => 'XLA_EVENT_APPL_ID'
3364  , p_source_type_code      => 'Y'
3365  , p_source_application_id =>  602
3366 );
3367    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
3368    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
3369    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
3370    l_rec_acct_attrs.array_char_value(4)  := 
3371 xla_ae_sources_pkg.GetSystemSourceChar(
3372    p_source_code           => 'XLA_ENTITY_CODE'
3373  , p_source_type_code      => 'Y'
3374  , p_source_application_id =>  602
3375 );
3376    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
3377    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
3378    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
3379    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
3380    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
3381    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
3382    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3383    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
3384    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
3385    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
3386    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
3387    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
3388    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3389    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
3390    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
3391    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
3392    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
3393    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
3394    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
3395    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
3396    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
3397    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
3398    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
3399    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
3400    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
3401    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
3402    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
3403    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
3404    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
3405    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
3406    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
3407    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
3408    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
3409    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
3410    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
3411    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
3412    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
3413    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
3414    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
3415    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
3416    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
3417    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
3418    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
3419    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
3420    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
3421    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
3422    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
3423    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
3424    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
3425    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
3426    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
3427    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
3428    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
3429    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
3430 
3431    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3432    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3433 
3434    ---------------------------------------------------------------------------------------------------------------
3435    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3436    ---------------------------------------------------------------------------------------------------------------
3437    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3438 
3439    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3440    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3441 
3442    IF xla_accounting_cache_pkg.GetValueChar
3443          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3444          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3445    AND l_bflow_method_code = 'PRIOR_ENTRY'
3446 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3447    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3448          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3449        )
3450    THEN
3451          xla_ae_lines_pkg.BflowUpgEntry
3452            (p_business_method_code    => l_bflow_method_code
3453            ,p_business_class_code     => l_bflow_class_code
3454            ,p_balance_type            => l_balance_type_code);
3455    ELSE
3456       NULL;
3457 XLA_AE_LINES_PKG.business_flow_validation(
3458                                 p_business_method_code     => l_bflow_method_code
3459                                ,p_business_class_code      => l_bflow_class_code
3460                                ,p_inherit_description_flag => l_inherit_desc_flag);
3461    END IF;
3462 
3463    --
3464    -- call analytical criteria
3465    --
3466    -- Inherited Analytical Criteria for business flow method of Prior Entry.
3467    --
3468    -- call description
3469    --
3470    -- No description or it is inherited.
3471    --
3472    -- call ADRs
3473    -- Bug 4922099
3474    --
3475    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3476         (NVL(l_actual_upg_option, 'N') = 'O') OR
3477         (NVL(l_enc_upg_option, 'N') = 'O')
3478       )
3479    THEN
3480    NULL;
3481    --
3482    --
3483    
3484    --
3485    --
3486    END IF;
3487    --
3488    -- Bug 4922099
3489    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3490           (NVL(l_enc_upg_option, 'N') = 'O')
3491         ) AND
3492         (l_bflow_method_code = 'PRIOR_ENTRY')
3493       )
3494    THEN
3495       IF
3496       --
3497       1 = 1
3498       --
3499       THEN
3500       xla_accounting_err_pkg.build_message
3501                                     (p_appli_s_name            => 'XLA'
3502                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3503                                     ,p_token_1                 => 'LINE_NUMBER'
3504                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3505                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3506                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3507                                                                              l_component_type
3508                                                                             ,l_component_code
3509                                                                             ,l_component_type_code
3510                                                                             ,l_component_appl_id
3511                                                                             ,l_amb_context_code
3512                                                                             ,l_entity_code
3513                                                                             ,l_event_class_code
3514                                                                            )
3515                                     ,p_token_3                 => 'OWNER'
3516                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3517                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3518                                                                           ,p_lookup_code    => l_component_type_code
3519                                                                          )
3520                                     ,p_token_4                 => 'PRODUCT_NAME'
3521                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3522                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3523                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3524                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3525                                     ,p_ae_header_id            =>  NULL
3526                                        );
3527 
3528         IF (C_LEVEL_ERROR>= g_log_level) THEN
3529                  trace
3530                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3531                       ,p_level    => C_LEVEL_ERROR
3532                       ,p_module   => l_log_module);
3533         END IF;
3534       END IF;
3535    END IF;
3536    --
3537    --
3538    ------------------------------------------------------------------------------------------------
3539    -- 4219869 Business Flow
3540    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3541    -- Prior Entry.  Currently, the following code is always generated.
3542    ------------------------------------------------------------------------------------------------
3543    -- No ValidateCurrentLine for business flow method of Prior Entry
3544 
3545    ------------------------------------------------------------------------------------
3546    -- 4219869 Business Flow
3547    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3548    ------------------------------------------------------------------------------------
3549    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3550 
3551    ----------------------------------------------------------------------------------
3552    -- 4219869 Business Flow
3553    -- Update journal entry status -- Need to generate this within IF <condition>
3554    ----------------------------------------------------------------------------------
3555    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3556          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3557          ,p_balance_type_code => l_balance_type_code
3558          );
3559 
3560    -------------------------------------------------------------------------------------------
3561    -- 4262811 - Generate the Accrual Reversal lines
3562    -------------------------------------------------------------------------------------------
3563    BEGIN
3564       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3565                               (g_array_event(p_event_id).array_value_num('header_index'));
3566       IF l_acc_rev_flag IS NULL THEN
3567          l_acc_rev_flag := 'N';
3568       END IF;
3569    EXCEPTION
3570       WHEN OTHERS THEN
3571          l_acc_rev_flag := 'N';
3572    END;
3573    --
3574    IF (l_acc_rev_flag = 'Y') THEN
3575 
3576        -- 4645092  ------------------------------------------------------------------------------
3577        -- To allow MPA report to determine if it should generate report process
3578        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3579        ------------------------------------------------------------------------------------------
3580 
3581        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3582        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3583 
3584        --
3585        -- Update the line information that should be overwritten
3586        --
3587        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3588                                          p_header_num   => 1);
3589        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3590 
3591        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3592 
3593        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3594           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3595        END IF;
3596 
3597       --
3598       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3599       --
3600       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3601           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3602       ELSE
3603           ---------------------------------------------------------------------------------------------------
3604           -- 4262811a Switch Sign
3605           ---------------------------------------------------------------------------------------------------
3606           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3607           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3608                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3609           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3610                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3611           -- 5132302
3612           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3613                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3614 
3615       END IF;
3616 
3617       -- 4955764
3618       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3619       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3620 
3621 
3622       XLA_AE_LINES_PKG.ValidateCurrentLine;
3623       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3624 
3625       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3626                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3627                ,p_balance_type_code => l_balance_type_code);
3628 
3629    END IF;
3630 
3631    -----------------------------------------------------------------------------------------
3632    -- 4262811 Multiperiod Accounting
3633    -----------------------------------------------------------------------------------------
3634      -- No MPA option is assigned.
3635 
3636 
3637 END IF;
3638 END IF;
3639 --
3640 
3641 --
3642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3643    trace
3644       (p_msg      => 'END of AcctLineType_16'
3645       ,p_level    => C_LEVEL_PROCEDURE
3646       ,p_module   => l_log_module);
3647 END IF;
3648 --
3649 EXCEPTION
3650   WHEN xla_exceptions_pkg.application_exception THEN
3651       RAISE;
3652   WHEN OTHERS THEN
3653        xla_exceptions_pkg.raise_message
3654            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_16');
3655 END AcctLineType_16;
3656 --
3657 
3658 ---------------------------------------
3659 --
3660 -- PRIVATE FUNCTION
3661 --         AcctLineType_17
3662 --
3663 ---------------------------------------
3664 PROCEDURE AcctLineType_17 (
3665   p_application_id        IN NUMBER
3666  ,p_event_id              IN NUMBER
3667  ,p_calculate_acctd_flag  IN VARCHAR2
3668  ,p_calculate_g_l_flag    IN VARCHAR2
3669  ,p_actual_flag           IN OUT VARCHAR2
3670  ,p_balance_type_code     OUT VARCHAR2
3671  ,p_gain_or_loss_ref      OUT VARCHAR2
3672  
3673 --Budget Account
3674  , p_source_9            IN NUMBER
3675 --Main Or Backing Code
3676  , p_source_13            IN VARCHAR2
3677 --Accounting Reversal Flag
3678  , p_source_15            IN VARCHAR2
3679 --Distribution Link Type
3680  , p_source_17            IN VARCHAR2
3681 --PO Distribution Identifier
3682  , p_source_19            IN NUMBER
3683 --PO Header Identifier
3684  , p_source_20            IN NUMBER
3685 --Applied To Application Identifier
3686  , p_source_21            IN NUMBER
3687 --Applied To Distribution Link Type
3688  , p_source_22            IN VARCHAR2
3689 --Applied To Entity Code
3690  , p_source_23            IN VARCHAR2
3691 --Applied To Distribution Identifier 1
3692  , p_source_24            IN NUMBER
3693 --Applied To Header Identifier 1
3694  , p_source_25            IN NUMBER
3695 --Entered Amount
3696  , p_source_26            IN NUMBER
3697 --Currency Code
3698  , p_source_27            IN VARCHAR2
3699 --Accounted Amount
3700  , p_source_28            IN NUMBER
3701 --PO Encumbrance Upgrade Option
3702  , p_source_29            IN VARCHAR2
3703 --JFMIP Reference
3704  , p_source_31            IN VARCHAR2
3705 --PO Upgrade Encumbrance Type Identifier
3706  , p_source_32            IN NUMBER
3707 --Allocated to Main Document Distribution Type
3708  , p_source_33            IN VARCHAR2
3709 --Allocated to Main Document Distribution Identifier
3710  , p_source_34            IN NUMBER
3711 )
3712 IS
3713 
3714 l_component_type              VARCHAR2(80);
3715 l_component_code              VARCHAR2(30);
3716 l_component_type_code         VARCHAR2(1);
3717 l_component_appl_id           INTEGER;
3718 l_amb_context_code            VARCHAR2(30);
3719 l_entity_code                 VARCHAR2(30);
3720 l_event_class_code            VARCHAR2(30);
3721 l_ae_header_id                NUMBER;
3722 l_event_type_code             VARCHAR2(30);
3723 l_line_definition_code        VARCHAR2(30);
3724 l_line_definition_owner_code  VARCHAR2(1);
3725 --
3726 -- adr variables
3727 l_segment                     VARCHAR2(30);
3728 l_ccid                        NUMBER;
3729 l_adr_transaction_coa_id      NUMBER;
3730 l_adr_accounting_coa_id       NUMBER;
3731 l_adr_flexfield_segment_code  VARCHAR2(30);
3732 l_adr_flex_value_set_id       NUMBER;
3733 l_adr_value_type_code         VARCHAR2(30);
3734 l_adr_value_combination_id    NUMBER;
3735 l_adr_value_segment_code      VARCHAR2(30);
3736 
3737 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3738 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3739 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3740 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3741 
3742 -- 4262811 Variables ------------------------------------------------------------------------------------------
3743 l_entered_amt_idx             NUMBER;
3744 l_accted_amt_idx              NUMBER;
3745 l_acc_rev_flag                VARCHAR2(1);
3746 l_accrual_line_num            NUMBER;
3747 l_tmp_amt                     NUMBER;
3748 l_acc_rev_natural_side_code   VARCHAR2(1);
3749 
3750 l_num_entries                 NUMBER;
3751 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3752 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3753 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3754 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3755 l_recog_line_1                NUMBER;
3756 l_recog_line_2                NUMBER;
3757 
3758 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3759 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3760 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3761 
3762 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3763 
3764 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3765 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3766 
3767 ---------------------------------------------------------------------------------------------------------------
3768 
3769 
3770 --
3771 -- bulk performance
3772 --
3773 l_balance_type_code           VARCHAR2(1);
3774 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3775 l_log_module                  VARCHAR2(240);
3776 
3777 --
3778 -- Upgrade strategy
3779 --
3780 l_actual_upg_option           VARCHAR2(1);
3781 l_enc_upg_option           VARCHAR2(1);
3782 
3783 --
3784 BEGIN
3785 --
3786 IF g_log_enabled THEN
3787       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
3788 END IF;
3789 --
3790 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3791 
3792       trace
3793          (p_msg      => 'BEGIN of AcctLineType_17'
3794          ,p_level    => C_LEVEL_PROCEDURE
3795          ,p_module   => l_log_module);
3796 
3797 END IF;
3798 --
3799 l_component_type             := 'AMB_JLT';
3800 l_component_code             := 'FV_BPA_RELIEVE_DR';
3801 l_component_type_code        := 'S';
3802 l_component_appl_id          :=  201;
3803 l_amb_context_code           := 'DEFAULT';
3804 l_entity_code                := 'PURCHASE_ORDER';
3805 l_event_class_code           := 'PO_PA';
3806 l_event_type_code            := 'PO_PA_ALL';
3807 l_line_definition_owner_code := 'S';
3808 l_line_definition_code       := 'FV_PO_ALL';
3809 --
3810 l_balance_type_code          := 'A';
3811 l_segment                     := NULL;
3812 l_ccid                        := NULL;
3813 l_adr_transaction_coa_id      := NULL;
3814 l_adr_accounting_coa_id       := NULL;
3815 l_adr_flexfield_segment_code  := NULL;
3816 l_adr_flex_value_set_id       := NULL;
3817 l_adr_value_type_code         := NULL;
3818 l_adr_value_combination_id    := NULL;
3819 l_adr_value_segment_code      := NULL;
3820 
3821 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3822 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
3823 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
3824 l_budgetary_control_flag     := 'Y';
3825 
3826 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3827 l_bflow_applied_to_amt       := NULL; -- 5132302
3828 l_entered_amt_idx            := NULL;          -- 4262811
3829 l_accted_amt_idx             := NULL;          -- 4262811
3830 l_acc_rev_flag               := NULL;          -- 4262811
3831 l_accrual_line_num           := NULL;          -- 4262811
3832 l_tmp_amt                    := NULL;          -- 4262811
3833 --
3834  
3835 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3836     l_balance_type_code <> 'B' THEN
3837 IF NVL(
3838 xla_ae_sources_pkg.GetSystemSourceChar(
3839    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3840  , p_source_type_code      => 'Y'
3841  , p_source_application_id =>  602
3842 ),'
3843 ') =  'PO_PA_RESERVED' AND 
3844 NVL(p_source_13,'
3845 ') =  'B_PA'
3846  THEN 
3847 
3848    --
3849    XLA_AE_LINES_PKG.SetNewLine;
3850 
3851    p_balance_type_code          := l_balance_type_code;
3852    -- set the flag so later we will know whether the gain loss line needs to be created
3853    
3854    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3855      p_actual_flag :='A';
3856    END IF;
3857 
3858    --
3859    -- bulk performance
3860    --
3861    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3862                                       p_header_num   => 0); -- 4262811
3863    --
3864    -- set accounting line options
3865    --
3866    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3867            p_natural_side_code          => 'D'
3868          , p_gain_or_loss_flag          => 'N'
3869          , p_gl_transfer_mode_code      => 'S'
3870          , p_acct_entry_type_code       => 'A'
3871          , p_switch_side_flag           => 'N'
3872          , p_merge_duplicate_code       => 'N'
3873          );
3874    --
3875    l_acc_rev_natural_side_code := 'C';  -- 4262811
3876    -- 
3877    --
3878    -- set accounting line type info
3879    --
3880    xla_ae_lines_pkg.SetAcctLineType
3881       (p_component_type             => l_component_type
3882       ,p_event_type_code            => l_event_type_code
3883       ,p_line_definition_owner_code => l_line_definition_owner_code
3884       ,p_line_definition_code       => l_line_definition_code
3885       ,p_accounting_line_code       => l_component_code
3886       ,p_accounting_line_type_code  => l_component_type_code
3887       ,p_accounting_line_appl_id    => l_component_appl_id
3888       ,p_amb_context_code           => l_amb_context_code
3889       ,p_entity_code                => l_entity_code
3890       ,p_event_class_code           => l_event_class_code);
3891    --
3892    -- set accounting class
3893    --
3894    xla_ae_lines_pkg.SetAcctClass(
3895            p_accounting_class_code  => 'PURCHASE_ORDER'
3896          , p_ae_header_id           => l_ae_header_id
3897          );
3898 
3899    --
3900    -- set rounding class
3901    --
3902    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3903                       'PURCHASE_ORDER';
3904 
3905    --
3906    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3907    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3908    --
3909    -- bulk performance
3910    --
3911    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3912 
3913    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3914       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3915 
3916    -- 4955764
3917    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3918       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3919 
3920    -- 4458381 Public Sector Enh
3921    
3922    --
3923    -- set accounting attributes for the line type
3924    --
3925    l_entered_amt_idx := 23;
3926    l_accted_amt_idx  := 25;
3927    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3928    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3929    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
3930    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
3931    l_rec_acct_attrs.array_num_value(2)  := 
3932 xla_ae_sources_pkg.GetSystemSourceNum(
3933    p_source_code           => 'XLA_EVENT_APPL_ID'
3934  , p_source_type_code      => 'Y'
3935  , p_source_application_id =>  602
3936 );
3937    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
3938    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
3939    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
3940    l_rec_acct_attrs.array_char_value(4)  := 
3941 xla_ae_sources_pkg.GetSystemSourceChar(
3942    p_source_code           => 'XLA_ENTITY_CODE'
3943  , p_source_type_code      => 'Y'
3944  , p_source_application_id =>  602
3945 );
3946    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
3947    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
3948    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
3949    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
3950    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
3951    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
3952    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3953    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
3954    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
3955    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
3956    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
3957    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
3958    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3959    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
3960    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
3961    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
3962    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
3963    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
3964    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
3965    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
3966    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
3967    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
3968    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
3969    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
3970    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
3971    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
3972    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
3973    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
3974    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
3975    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
3976    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
3977    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
3978    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
3979    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
3980    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
3981    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
3982    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
3983    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
3984    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
3985    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
3986    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
3987    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
3988    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
3989    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
3990    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
3991    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
3992    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
3993    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
3994    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
3995    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
3996    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
3997    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
3998    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
3999    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
4000 
4001    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4002    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4003 
4004    ---------------------------------------------------------------------------------------------------------------
4005    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4006    ---------------------------------------------------------------------------------------------------------------
4007    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4008 
4009    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4010    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4011 
4012    IF xla_accounting_cache_pkg.GetValueChar
4013          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4014          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4015    AND l_bflow_method_code = 'PRIOR_ENTRY'
4016 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4017    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4018          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4019        )
4020    THEN
4021          xla_ae_lines_pkg.BflowUpgEntry
4022            (p_business_method_code    => l_bflow_method_code
4023            ,p_business_class_code     => l_bflow_class_code
4024            ,p_balance_type            => l_balance_type_code);
4025    ELSE
4026       NULL;
4027 XLA_AE_LINES_PKG.business_flow_validation(
4028                                 p_business_method_code     => l_bflow_method_code
4029                                ,p_business_class_code      => l_bflow_class_code
4030                                ,p_inherit_description_flag => l_inherit_desc_flag);
4031    END IF;
4032 
4033    --
4034    -- call analytical criteria
4035    --
4036    -- Inherited Analytical Criteria for business flow method of Prior Entry.
4037    --
4038    -- call description
4039    --
4040    -- No description or it is inherited.
4041    --
4042    -- call ADRs
4043    -- Bug 4922099
4044    --
4045    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4046         (NVL(l_actual_upg_option, 'N') = 'O') OR
4047         (NVL(l_enc_upg_option, 'N') = 'O')
4048       )
4049    THEN
4050    NULL;
4051    --
4052    --
4053    
4054    --
4055    --
4056    END IF;
4057    --
4058    -- Bug 4922099
4059    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4060           (NVL(l_enc_upg_option, 'N') = 'O')
4061         ) AND
4062         (l_bflow_method_code = 'PRIOR_ENTRY')
4063       )
4064    THEN
4065       IF
4066       --
4067       1 = 1
4068       --
4069       THEN
4070       xla_accounting_err_pkg.build_message
4071                                     (p_appli_s_name            => 'XLA'
4072                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4073                                     ,p_token_1                 => 'LINE_NUMBER'
4074                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4075                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4076                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4077                                                                              l_component_type
4078                                                                             ,l_component_code
4079                                                                             ,l_component_type_code
4080                                                                             ,l_component_appl_id
4081                                                                             ,l_amb_context_code
4082                                                                             ,l_entity_code
4083                                                                             ,l_event_class_code
4084                                                                            )
4085                                     ,p_token_3                 => 'OWNER'
4086                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4087                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4088                                                                           ,p_lookup_code    => l_component_type_code
4089                                                                          )
4090                                     ,p_token_4                 => 'PRODUCT_NAME'
4091                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4092                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4093                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4094                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4095                                     ,p_ae_header_id            =>  NULL
4096                                        );
4097 
4098         IF (C_LEVEL_ERROR>= g_log_level) THEN
4099                  trace
4100                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4101                       ,p_level    => C_LEVEL_ERROR
4102                       ,p_module   => l_log_module);
4103         END IF;
4104       END IF;
4105    END IF;
4106    --
4107    --
4108    ------------------------------------------------------------------------------------------------
4109    -- 4219869 Business Flow
4110    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4111    -- Prior Entry.  Currently, the following code is always generated.
4112    ------------------------------------------------------------------------------------------------
4113    -- No ValidateCurrentLine for business flow method of Prior Entry
4114 
4115    ------------------------------------------------------------------------------------
4116    -- 4219869 Business Flow
4117    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4118    ------------------------------------------------------------------------------------
4119    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4120 
4121    ----------------------------------------------------------------------------------
4122    -- 4219869 Business Flow
4123    -- Update journal entry status -- Need to generate this within IF <condition>
4124    ----------------------------------------------------------------------------------
4125    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4126          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4127          ,p_balance_type_code => l_balance_type_code
4128          );
4129 
4130    -------------------------------------------------------------------------------------------
4131    -- 4262811 - Generate the Accrual Reversal lines
4132    -------------------------------------------------------------------------------------------
4133    BEGIN
4134       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4135                               (g_array_event(p_event_id).array_value_num('header_index'));
4136       IF l_acc_rev_flag IS NULL THEN
4137          l_acc_rev_flag := 'N';
4138       END IF;
4139    EXCEPTION
4140       WHEN OTHERS THEN
4141          l_acc_rev_flag := 'N';
4142    END;
4143    --
4144    IF (l_acc_rev_flag = 'Y') THEN
4145 
4146        -- 4645092  ------------------------------------------------------------------------------
4147        -- To allow MPA report to determine if it should generate report process
4148        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4149        ------------------------------------------------------------------------------------------
4150 
4151        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4152        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4153 
4154        --
4155        -- Update the line information that should be overwritten
4156        --
4157        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4158                                          p_header_num   => 1);
4159        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4160 
4161        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4162 
4163        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4164           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4165        END IF;
4166 
4167       --
4168       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4169       --
4170       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4171           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4172       ELSE
4173           ---------------------------------------------------------------------------------------------------
4174           -- 4262811a Switch Sign
4175           ---------------------------------------------------------------------------------------------------
4176           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4177           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4178                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4179           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4180                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4181           -- 5132302
4182           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4183                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4184 
4185       END IF;
4186 
4187       -- 4955764
4188       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4189       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4190 
4191 
4192       XLA_AE_LINES_PKG.ValidateCurrentLine;
4193       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4194 
4195       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4196                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4197                ,p_balance_type_code => l_balance_type_code);
4198 
4199    END IF;
4200 
4201    -----------------------------------------------------------------------------------------
4202    -- 4262811 Multiperiod Accounting
4203    -----------------------------------------------------------------------------------------
4204      -- No MPA option is assigned.
4205 
4206 
4207 END IF;
4208 END IF;
4209 --
4210 
4211 --
4212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4213    trace
4214       (p_msg      => 'END of AcctLineType_17'
4215       ,p_level    => C_LEVEL_PROCEDURE
4216       ,p_module   => l_log_module);
4217 END IF;
4218 --
4219 EXCEPTION
4220   WHEN xla_exceptions_pkg.application_exception THEN
4221       RAISE;
4222   WHEN OTHERS THEN
4223        xla_exceptions_pkg.raise_message
4224            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_17');
4225 END AcctLineType_17;
4226 --
4227 
4228 ---------------------------------------
4229 --
4230 -- PRIVATE FUNCTION
4231 --         AcctLineType_18
4232 --
4233 ---------------------------------------
4234 PROCEDURE AcctLineType_18 (
4235   p_application_id        IN NUMBER
4236  ,p_event_id              IN NUMBER
4237  ,p_calculate_acctd_flag  IN VARCHAR2
4238  ,p_calculate_g_l_flag    IN VARCHAR2
4239  ,p_actual_flag           IN OUT VARCHAR2
4240  ,p_balance_type_code     OUT VARCHAR2
4241  ,p_gain_or_loss_ref      OUT VARCHAR2
4242  
4243 --Journal entry Line Description
4244  , p_source_3            IN VARCHAR2
4245 --Federal Fund Category
4246  , p_source_7            IN VARCHAR2
4247 --Budget Account
4248  , p_source_9            IN NUMBER
4249 --Federal Prior Year Flag
4250  , p_source_10            IN VARCHAR2
4251 --Main Or Backing Code
4252  , p_source_13            IN VARCHAR2
4253 --PO Distribution Type
4254  , p_source_14            IN VARCHAR2
4255 --Accounting Reversal Flag
4256  , p_source_15            IN VARCHAR2
4257 --Distribution Link Type
4258  , p_source_17            IN VARCHAR2
4259 --PO Distribution Identifier
4260  , p_source_19            IN NUMBER
4261 --PO Header Identifier
4262  , p_source_20            IN NUMBER
4263 --Applied To Application Identifier
4264  , p_source_21            IN NUMBER
4265 --Applied To Distribution Link Type
4266  , p_source_22            IN VARCHAR2
4267 --Applied To Entity Code
4268  , p_source_23            IN VARCHAR2
4269 --Applied To Distribution Identifier 1
4270  , p_source_24            IN NUMBER
4271 --Applied To Header Identifier 1
4272  , p_source_25            IN NUMBER
4273 --Entered Amount
4274  , p_source_26            IN NUMBER
4275 --Currency Code
4276  , p_source_27            IN VARCHAR2
4277 --Accounted Amount
4278  , p_source_28            IN NUMBER
4279 --PO Encumbrance Upgrade Option
4280  , p_source_29            IN VARCHAR2
4281 --JFMIP Reference
4282  , p_source_31            IN VARCHAR2
4283 --PO Upgrade Encumbrance Type Identifier
4284  , p_source_32            IN NUMBER
4285 --Currency Conversion Date
4286  , p_source_35            IN DATE
4287 --Currency Conversion Rate
4288  , p_source_36            IN NUMBER
4289 --Currency Conversion Type
4290  , p_source_37            IN VARCHAR2
4291 )
4292 IS
4293 
4294 l_component_type              VARCHAR2(80);
4295 l_component_code              VARCHAR2(30);
4296 l_component_type_code         VARCHAR2(1);
4297 l_component_appl_id           INTEGER;
4298 l_amb_context_code            VARCHAR2(30);
4299 l_entity_code                 VARCHAR2(30);
4300 l_event_class_code            VARCHAR2(30);
4301 l_ae_header_id                NUMBER;
4302 l_event_type_code             VARCHAR2(30);
4303 l_line_definition_code        VARCHAR2(30);
4304 l_line_definition_owner_code  VARCHAR2(1);
4305 --
4306 -- adr variables
4307 l_segment                     VARCHAR2(30);
4308 l_ccid                        NUMBER;
4309 l_adr_transaction_coa_id      NUMBER;
4310 l_adr_accounting_coa_id       NUMBER;
4311 l_adr_flexfield_segment_code  VARCHAR2(30);
4312 l_adr_flex_value_set_id       NUMBER;
4313 l_adr_value_type_code         VARCHAR2(30);
4314 l_adr_value_combination_id    NUMBER;
4315 l_adr_value_segment_code      VARCHAR2(30);
4316 
4317 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4318 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4319 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4320 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4321 
4322 -- 4262811 Variables ------------------------------------------------------------------------------------------
4323 l_entered_amt_idx             NUMBER;
4324 l_accted_amt_idx              NUMBER;
4325 l_acc_rev_flag                VARCHAR2(1);
4326 l_accrual_line_num            NUMBER;
4327 l_tmp_amt                     NUMBER;
4328 l_acc_rev_natural_side_code   VARCHAR2(1);
4329 
4330 l_num_entries                 NUMBER;
4331 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4332 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4333 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4334 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4335 l_recog_line_1                NUMBER;
4336 l_recog_line_2                NUMBER;
4337 
4338 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4339 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4340 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4341 
4342 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4343 
4344 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4345 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4346 
4347 ---------------------------------------------------------------------------------------------------------------
4348 
4349 
4350 --
4351 -- bulk performance
4352 --
4353 l_balance_type_code           VARCHAR2(1);
4354 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4355 l_log_module                  VARCHAR2(240);
4356 
4357 --
4358 -- Upgrade strategy
4359 --
4360 l_actual_upg_option           VARCHAR2(1);
4361 l_enc_upg_option           VARCHAR2(1);
4362 
4363 --
4364 BEGIN
4365 --
4366 IF g_log_enabled THEN
4367       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
4368 END IF;
4369 --
4370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4371 
4372       trace
4373          (p_msg      => 'BEGIN of AcctLineType_18'
4374          ,p_level    => C_LEVEL_PROCEDURE
4375          ,p_module   => l_log_module);
4376 
4377 END IF;
4378 --
4379 l_component_type             := 'AMB_JLT';
4380 l_component_code             := 'FV_BPA_RESERVE_CR';
4381 l_component_type_code        := 'S';
4382 l_component_appl_id          :=  201;
4383 l_amb_context_code           := 'DEFAULT';
4384 l_entity_code                := 'PURCHASE_ORDER';
4385 l_event_class_code           := 'PO_PA';
4386 l_event_type_code            := 'PO_PA_ALL';
4387 l_line_definition_owner_code := 'S';
4388 l_line_definition_code       := 'FV_PO_ALL';
4389 --
4390 l_balance_type_code          := 'A';
4391 l_segment                     := NULL;
4392 l_ccid                        := NULL;
4393 l_adr_transaction_coa_id      := NULL;
4394 l_adr_accounting_coa_id       := NULL;
4395 l_adr_flexfield_segment_code  := NULL;
4396 l_adr_flex_value_set_id       := NULL;
4397 l_adr_value_type_code         := NULL;
4398 l_adr_value_combination_id    := NULL;
4399 l_adr_value_segment_code      := NULL;
4400 
4401 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4402 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
4403 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4404 l_budgetary_control_flag     := 'Y';
4405 
4406 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4407 l_bflow_applied_to_amt       := NULL; -- 5132302
4408 l_entered_amt_idx            := NULL;          -- 4262811
4409 l_accted_amt_idx             := NULL;          -- 4262811
4410 l_acc_rev_flag               := NULL;          -- 4262811
4411 l_accrual_line_num           := NULL;          -- 4262811
4412 l_tmp_amt                    := NULL;          -- 4262811
4413 --
4414  
4415 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4416     l_balance_type_code <> 'B' THEN
4417 IF NVL(
4418 xla_ae_sources_pkg.GetSystemSourceChar(
4419    p_source_code           => 'XLA_EVENT_TYPE_CODE'
4420  , p_source_type_code      => 'Y'
4421  , p_source_application_id =>  602
4422 ),'
4423 ') =  'PO_PA_RESERVED' AND 
4424 NVL(p_source_13,'
4425 ') =  'M' AND 
4426 NVL(p_source_14,'
4427 ') =  'AGREEMENT' AND 
4428 NVL(p_source_10,'
4429 ') =  'N'
4430  THEN 
4431 
4432    --
4433    XLA_AE_LINES_PKG.SetNewLine;
4434 
4435    p_balance_type_code          := l_balance_type_code;
4436    -- set the flag so later we will know whether the gain loss line needs to be created
4437    
4438    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4439      p_actual_flag :='A';
4440    END IF;
4441 
4442    --
4443    -- bulk performance
4444    --
4445    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4446                                       p_header_num   => 0); -- 4262811
4447    --
4448    -- set accounting line options
4449    --
4450    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4451            p_natural_side_code          => 'C'
4452          , p_gain_or_loss_flag          => 'N'
4453          , p_gl_transfer_mode_code      => 'S'
4454          , p_acct_entry_type_code       => 'A'
4455          , p_switch_side_flag           => 'N'
4456          , p_merge_duplicate_code       => 'N'
4457          );
4458    --
4459    l_acc_rev_natural_side_code := 'D';  -- 4262811
4460    -- 
4461    --
4462    -- set accounting line type info
4463    --
4464    xla_ae_lines_pkg.SetAcctLineType
4465       (p_component_type             => l_component_type
4466       ,p_event_type_code            => l_event_type_code
4467       ,p_line_definition_owner_code => l_line_definition_owner_code
4468       ,p_line_definition_code       => l_line_definition_code
4469       ,p_accounting_line_code       => l_component_code
4470       ,p_accounting_line_type_code  => l_component_type_code
4471       ,p_accounting_line_appl_id    => l_component_appl_id
4472       ,p_amb_context_code           => l_amb_context_code
4473       ,p_entity_code                => l_entity_code
4474       ,p_event_class_code           => l_event_class_code);
4475    --
4476    -- set accounting class
4477    --
4478    xla_ae_lines_pkg.SetAcctClass(
4479            p_accounting_class_code  => 'PURCHASE_ORDER'
4480          , p_ae_header_id           => l_ae_header_id
4481          );
4482 
4483    --
4484    -- set rounding class
4485    --
4486    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4487                       'PURCHASE_ORDER';
4488 
4489    --
4490    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4491    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4492    --
4493    -- bulk performance
4494    --
4495    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4496 
4497    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4498       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4499 
4500    -- 4955764
4501    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4502       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4503 
4504    -- 4458381 Public Sector Enh
4505    
4506    --
4507    -- set accounting attributes for the line type
4508    --
4509    l_entered_amt_idx := 23;
4510    l_accted_amt_idx  := 28;
4511    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4512    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4513    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
4514    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
4515    l_rec_acct_attrs.array_num_value(2)  := 
4516 xla_ae_sources_pkg.GetSystemSourceNum(
4517    p_source_code           => 'XLA_EVENT_APPL_ID'
4518  , p_source_type_code      => 'Y'
4519  , p_source_application_id =>  602
4520 );
4521    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
4522    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
4523    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
4524    l_rec_acct_attrs.array_char_value(4)  := 
4525 xla_ae_sources_pkg.GetSystemSourceChar(
4526    p_source_code           => 'XLA_ENTITY_CODE'
4527  , p_source_type_code      => 'Y'
4528  , p_source_application_id =>  602
4529 );
4530    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
4531    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
4532    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
4533    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
4534    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
4535    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
4536    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4537    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
4538    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
4539    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
4540    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
4541    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
4542    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4543    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
4544    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
4545    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
4546    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
4547    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
4548    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
4549    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
4550    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
4551    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
4552    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
4553    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
4554    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
4555    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
4556    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
4557    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
4558    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
4559    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
4560    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
4561    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
4562    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
4563    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
4564    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
4565    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
4566    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
4567    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
4568    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
4569    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
4570    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
4571    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
4572    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
4573    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
4574    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
4575    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
4576    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
4577    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
4578    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
4579    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
4580    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
4581    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
4582    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
4583    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
4584    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
4585    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
4586    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
4587    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
4588    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
4589    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
4590 
4591    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4592    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4593 
4594    ---------------------------------------------------------------------------------------------------------------
4595    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4596    ---------------------------------------------------------------------------------------------------------------
4597    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4598 
4599    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4600    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4601 
4602    IF xla_accounting_cache_pkg.GetValueChar
4603          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4604          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4605    AND l_bflow_method_code = 'PRIOR_ENTRY'
4606 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4607    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4608          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4609        )
4610    THEN
4611          xla_ae_lines_pkg.BflowUpgEntry
4612            (p_business_method_code    => l_bflow_method_code
4613            ,p_business_class_code     => l_bflow_class_code
4614            ,p_balance_type            => l_balance_type_code);
4615    ELSE
4616       NULL;
4617 -- No business flow processing for business flow method of NONE.
4618    END IF;
4619 
4620    --
4621    -- call analytical criteria
4622    --
4623    
4624    --
4625    -- call description
4626    --
4627    
4628 xla_ae_lines_pkg.SetLineDescription(
4629    p_ae_header_id => l_ae_header_id
4630   ,p_description  => Description_2 (
4631      p_application_id         => p_application_id
4632    , p_ae_header_id           => l_ae_header_id 
4633 , p_source_3 => p_source_3
4634    )
4635 );
4636 
4637 
4638    --
4639    -- call ADRs
4640    -- Bug 4922099
4641    --
4642    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4643         (NVL(l_actual_upg_option, 'N') = 'O') OR
4644         (NVL(l_enc_upg_option, 'N') = 'O')
4645       )
4646    THEN
4647    NULL;
4648    --
4649    --
4650    
4651   l_ccid := AcctDerRule_9(
4652            p_application_id           => p_application_id
4653          , p_ae_header_id             => l_ae_header_id 
4654 , p_source_9 => p_source_9
4655          , x_transaction_coa_id       => l_adr_transaction_coa_id
4656          , x_accounting_coa_id        => l_adr_accounting_coa_id
4657          , x_value_type_code          => l_adr_value_type_code
4658          , p_side                     => 'NA'
4659    );
4660 
4661    xla_ae_lines_pkg.set_ccid(
4662     p_code_combination_id          => l_ccid
4663   , p_value_type_code              => l_adr_value_type_code
4664   , p_transaction_coa_id           => l_adr_transaction_coa_id
4665   , p_accounting_coa_id            => l_adr_accounting_coa_id
4666   , p_adr_code                     => 'FV_ACCOUNT_RULE'
4667   , p_adr_type_code                => 'S'
4668   , p_component_type               => l_component_type
4669   , p_component_code               => l_component_code
4670   , p_component_type_code          => l_component_type_code
4671   , p_component_appl_id            => l_component_appl_id
4672   , p_amb_context_code             => l_amb_context_code
4673   , p_side                         => 'NA'
4674   );
4675 
4676 
4677    l_segment := AcctDerRule_6(
4678            p_application_id           => p_application_id
4679          , p_ae_header_id             => l_ae_header_id 
4680 , p_source_7 => p_source_7
4681          , x_transaction_coa_id       => l_adr_transaction_coa_id
4682          , x_accounting_coa_id        => l_adr_accounting_coa_id
4683          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
4684          , x_flex_value_set_id        => l_adr_flex_value_set_id
4685          , x_value_type_code          => l_adr_value_type_code
4686          , x_value_combination_id     => l_adr_value_combination_id
4687          , x_value_segment_code       => l_adr_value_segment_code
4688          , p_side                     => 'NA'
4689          , p_override_seg_flag        => 'Y'
4690    );
4691 
4692    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
4693 
4694       xla_ae_lines_pkg.set_segment(
4695           p_to_segment_code         => 'GL_ACCOUNT'
4696         , p_segment_value           => l_segment
4697         , p_from_segment_code       => l_adr_value_segment_code
4698         , p_from_combination_id     => l_adr_value_combination_id
4699         , p_value_type_code         => l_adr_value_type_code
4700         , p_transaction_coa_id      => l_adr_transaction_coa_id
4701         , p_accounting_coa_id       => l_adr_accounting_coa_id
4702         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
4703         , p_flex_value_set_id       => l_adr_flex_value_set_id
4704         , p_adr_code                => 'FV_47X002_REQUISITION'
4705         , p_adr_type_code           => 'S'
4706         , p_component_type          => l_component_type
4707         , p_component_code          => l_component_code
4708         , p_component_type_code     => l_component_type_code
4709         , p_component_appl_id       => l_component_appl_id
4710         , p_amb_context_code        => l_amb_context_code
4711         , p_entity_code             => 'PURCHASE_ORDER'
4712         , p_event_class_code        => 'PO_PA'
4713         , p_side                    => 'NA'
4714         );
4715 
4716   END IF;
4717 
4718    --
4719    --
4720    END IF;
4721    --
4722    -- Bug 4922099
4723    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4724           (NVL(l_enc_upg_option, 'N') = 'O')
4725         ) AND
4726         (l_bflow_method_code = 'PRIOR_ENTRY')
4727       )
4728    THEN
4729       IF
4730       --
4731       1 = 2
4732       --
4733       THEN
4734       xla_accounting_err_pkg.build_message
4735                                     (p_appli_s_name            => 'XLA'
4736                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4737                                     ,p_token_1                 => 'LINE_NUMBER'
4738                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4739                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4740                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4741                                                                              l_component_type
4742                                                                             ,l_component_code
4743                                                                             ,l_component_type_code
4744                                                                             ,l_component_appl_id
4745                                                                             ,l_amb_context_code
4746                                                                             ,l_entity_code
4747                                                                             ,l_event_class_code
4748                                                                            )
4749                                     ,p_token_3                 => 'OWNER'
4750                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4751                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4752                                                                           ,p_lookup_code    => l_component_type_code
4753                                                                          )
4754                                     ,p_token_4                 => 'PRODUCT_NAME'
4755                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4756                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4757                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4758                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4759                                     ,p_ae_header_id            =>  NULL
4760                                        );
4761 
4762         IF (C_LEVEL_ERROR>= g_log_level) THEN
4763                  trace
4764                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4765                       ,p_level    => C_LEVEL_ERROR
4766                       ,p_module   => l_log_module);
4767         END IF;
4768       END IF;
4769    END IF;
4770    --
4771    --
4772    ------------------------------------------------------------------------------------------------
4773    -- 4219869 Business Flow
4774    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4775    -- Prior Entry.  Currently, the following code is always generated.
4776    ------------------------------------------------------------------------------------------------
4777    XLA_AE_LINES_PKG.ValidateCurrentLine;
4778 
4779    ------------------------------------------------------------------------------------
4780    -- 4219869 Business Flow
4781    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4782    ------------------------------------------------------------------------------------
4783    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4784 
4785    ----------------------------------------------------------------------------------
4786    -- 4219869 Business Flow
4787    -- Update journal entry status -- Need to generate this within IF <condition>
4788    ----------------------------------------------------------------------------------
4789    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4790          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4791          ,p_balance_type_code => l_balance_type_code
4792          );
4793 
4794    -------------------------------------------------------------------------------------------
4795    -- 4262811 - Generate the Accrual Reversal lines
4796    -------------------------------------------------------------------------------------------
4797    BEGIN
4798       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4799                               (g_array_event(p_event_id).array_value_num('header_index'));
4800       IF l_acc_rev_flag IS NULL THEN
4801          l_acc_rev_flag := 'N';
4802       END IF;
4803    EXCEPTION
4804       WHEN OTHERS THEN
4805          l_acc_rev_flag := 'N';
4806    END;
4807    --
4808    IF (l_acc_rev_flag = 'Y') THEN
4809 
4810        -- 4645092  ------------------------------------------------------------------------------
4811        -- To allow MPA report to determine if it should generate report process
4812        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4813        ------------------------------------------------------------------------------------------
4814 
4815        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4816        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4817 
4818        --
4819        -- Update the line information that should be overwritten
4820        --
4821        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4822                                          p_header_num   => 1);
4823        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4824 
4825        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4826 
4827        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4828           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4829        END IF;
4830 
4831       --
4832       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4833       --
4834       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4835           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4836       ELSE
4837           ---------------------------------------------------------------------------------------------------
4838           -- 4262811a Switch Sign
4839           ---------------------------------------------------------------------------------------------------
4840           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4841           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4842                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4843           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4844                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4845           -- 5132302
4846           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4847                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4848 
4849       END IF;
4850 
4851       -- 4955764
4852       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4853       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4854 
4855 
4856       XLA_AE_LINES_PKG.ValidateCurrentLine;
4857       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4858 
4859       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4860                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4861                ,p_balance_type_code => l_balance_type_code);
4862 
4863    END IF;
4864 
4865    -----------------------------------------------------------------------------------------
4866    -- 4262811 Multiperiod Accounting
4867    -----------------------------------------------------------------------------------------
4868      -- No MPA option is assigned.
4869 
4870 
4871 END IF;
4872 END IF;
4873 --
4874 
4875 --
4876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4877    trace
4878       (p_msg      => 'END of AcctLineType_18'
4879       ,p_level    => C_LEVEL_PROCEDURE
4880       ,p_module   => l_log_module);
4881 END IF;
4882 --
4883 EXCEPTION
4884   WHEN xla_exceptions_pkg.application_exception THEN
4885       RAISE;
4886   WHEN OTHERS THEN
4887        xla_exceptions_pkg.raise_message
4888            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_18');
4889 END AcctLineType_18;
4890 --
4891 
4892 ---------------------------------------
4893 --
4894 -- PRIVATE FUNCTION
4895 --         AcctLineType_19
4896 --
4897 ---------------------------------------
4898 PROCEDURE AcctLineType_19 (
4899   p_application_id        IN NUMBER
4900  ,p_event_id              IN NUMBER
4901  ,p_calculate_acctd_flag  IN VARCHAR2
4902  ,p_calculate_g_l_flag    IN VARCHAR2
4903  ,p_actual_flag           IN OUT VARCHAR2
4904  ,p_balance_type_code     OUT VARCHAR2
4905  ,p_gain_or_loss_ref      OUT VARCHAR2
4906  
4907 --Journal entry Line Description
4908  , p_source_3            IN VARCHAR2
4909 --Federal Fund Category
4910  , p_source_7            IN VARCHAR2
4911 --Federal Fund Expired Status
4912  , p_source_8            IN VARCHAR2
4913 --Budget Account
4914  , p_source_9            IN NUMBER
4915 --Federal Prior Year Flag
4916  , p_source_10            IN VARCHAR2
4917 --Main Or Backing Code
4918  , p_source_13            IN VARCHAR2
4919 --PO Distribution Type
4920  , p_source_14            IN VARCHAR2
4921 --Accounting Reversal Flag
4922  , p_source_15            IN VARCHAR2
4923 --Distribution Link Type
4924  , p_source_17            IN VARCHAR2
4925 --PO Distribution Identifier
4926  , p_source_19            IN NUMBER
4927 --PO Header Identifier
4928  , p_source_20            IN NUMBER
4929 --Applied To Application Identifier
4930  , p_source_21            IN NUMBER
4931 --Applied To Distribution Link Type
4932  , p_source_22            IN VARCHAR2
4933 --Applied To Entity Code
4934  , p_source_23            IN VARCHAR2
4935 --Applied To Distribution Identifier 1
4936  , p_source_24            IN NUMBER
4937 --Applied To Header Identifier 1
4938  , p_source_25            IN NUMBER
4939 --Entered Amount
4940  , p_source_26            IN NUMBER
4941 --Currency Code
4942  , p_source_27            IN VARCHAR2
4943 --Accounted Amount
4944  , p_source_28            IN NUMBER
4945 --PO Encumbrance Upgrade Option
4946  , p_source_29            IN VARCHAR2
4947 --JFMIP Reference
4948  , p_source_31            IN VARCHAR2
4949 --PO Upgrade Encumbrance Type Identifier
4950  , p_source_32            IN NUMBER
4951 --Currency Conversion Date
4952  , p_source_35            IN DATE
4953 --Currency Conversion Rate
4954  , p_source_36            IN NUMBER
4955 --Currency Conversion Type
4956  , p_source_37            IN VARCHAR2
4957 )
4958 IS
4959 
4960 l_component_type              VARCHAR2(80);
4961 l_component_code              VARCHAR2(30);
4962 l_component_type_code         VARCHAR2(1);
4963 l_component_appl_id           INTEGER;
4964 l_amb_context_code            VARCHAR2(30);
4965 l_entity_code                 VARCHAR2(30);
4966 l_event_class_code            VARCHAR2(30);
4967 l_ae_header_id                NUMBER;
4968 l_event_type_code             VARCHAR2(30);
4969 l_line_definition_code        VARCHAR2(30);
4970 l_line_definition_owner_code  VARCHAR2(1);
4971 --
4972 -- adr variables
4973 l_segment                     VARCHAR2(30);
4974 l_ccid                        NUMBER;
4975 l_adr_transaction_coa_id      NUMBER;
4976 l_adr_accounting_coa_id       NUMBER;
4977 l_adr_flexfield_segment_code  VARCHAR2(30);
4978 l_adr_flex_value_set_id       NUMBER;
4979 l_adr_value_type_code         VARCHAR2(30);
4980 l_adr_value_combination_id    NUMBER;
4981 l_adr_value_segment_code      VARCHAR2(30);
4982 
4983 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4984 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4985 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4986 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4987 
4988 -- 4262811 Variables ------------------------------------------------------------------------------------------
4989 l_entered_amt_idx             NUMBER;
4990 l_accted_amt_idx              NUMBER;
4991 l_acc_rev_flag                VARCHAR2(1);
4992 l_accrual_line_num            NUMBER;
4993 l_tmp_amt                     NUMBER;
4994 l_acc_rev_natural_side_code   VARCHAR2(1);
4995 
4996 l_num_entries                 NUMBER;
4997 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4998 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4999 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5000 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5001 l_recog_line_1                NUMBER;
5002 l_recog_line_2                NUMBER;
5003 
5004 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5005 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5006 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5007 
5008 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5009 
5010 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5011 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5012 
5013 ---------------------------------------------------------------------------------------------------------------
5014 
5015 
5016 --
5017 -- bulk performance
5018 --
5019 l_balance_type_code           VARCHAR2(1);
5020 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5021 l_log_module                  VARCHAR2(240);
5022 
5023 --
5024 -- Upgrade strategy
5025 --
5026 l_actual_upg_option           VARCHAR2(1);
5027 l_enc_upg_option           VARCHAR2(1);
5028 
5029 --
5030 BEGIN
5031 --
5032 IF g_log_enabled THEN
5033       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
5034 END IF;
5035 --
5036 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5037 
5038       trace
5039          (p_msg      => 'BEGIN of AcctLineType_19'
5040          ,p_level    => C_LEVEL_PROCEDURE
5041          ,p_module   => l_log_module);
5042 
5043 END IF;
5044 --
5045 l_component_type             := 'AMB_JLT';
5046 l_component_code             := 'FV_BPA_RESERVE_DR';
5047 l_component_type_code        := 'S';
5048 l_component_appl_id          :=  201;
5049 l_amb_context_code           := 'DEFAULT';
5050 l_entity_code                := 'PURCHASE_ORDER';
5051 l_event_class_code           := 'PO_PA';
5052 l_event_type_code            := 'PO_PA_ALL';
5053 l_line_definition_owner_code := 'S';
5054 l_line_definition_code       := 'FV_PO_ALL';
5055 --
5056 l_balance_type_code          := 'A';
5057 l_segment                     := NULL;
5058 l_ccid                        := NULL;
5059 l_adr_transaction_coa_id      := NULL;
5060 l_adr_accounting_coa_id       := NULL;
5061 l_adr_flexfield_segment_code  := NULL;
5062 l_adr_flex_value_set_id       := NULL;
5063 l_adr_value_type_code         := NULL;
5064 l_adr_value_combination_id    := NULL;
5065 l_adr_value_segment_code      := NULL;
5066 
5067 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5068 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
5069 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5070 l_budgetary_control_flag     := 'Y';
5071 
5072 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5073 l_bflow_applied_to_amt       := NULL; -- 5132302
5074 l_entered_amt_idx            := NULL;          -- 4262811
5075 l_accted_amt_idx             := NULL;          -- 4262811
5076 l_acc_rev_flag               := NULL;          -- 4262811
5077 l_accrual_line_num           := NULL;          -- 4262811
5078 l_tmp_amt                    := NULL;          -- 4262811
5079 --
5080  
5081 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5082     l_balance_type_code <> 'B' THEN
5083 IF NVL(
5084 xla_ae_sources_pkg.GetSystemSourceChar(
5085    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5086  , p_source_type_code      => 'Y'
5087  , p_source_application_id =>  602
5088 ),'
5089 ') =  'PO_PA_RESERVED' AND 
5090 NVL(p_source_13,'
5091 ') =  'M' AND 
5092 NVL(p_source_14,'
5093 ') =  'AGREEMENT' AND 
5094 NVL(p_source_10,'
5095 ') =  'N'
5096  THEN 
5097 
5098    --
5099    XLA_AE_LINES_PKG.SetNewLine;
5100 
5101    p_balance_type_code          := l_balance_type_code;
5102    -- set the flag so later we will know whether the gain loss line needs to be created
5103    
5104    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5105      p_actual_flag :='A';
5106    END IF;
5107 
5108    --
5109    -- bulk performance
5110    --
5111    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5112                                       p_header_num   => 0); -- 4262811
5113    --
5114    -- set accounting line options
5115    --
5116    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5117            p_natural_side_code          => 'D'
5118          , p_gain_or_loss_flag          => 'N'
5119          , p_gl_transfer_mode_code      => 'S'
5120          , p_acct_entry_type_code       => 'A'
5121          , p_switch_side_flag           => 'N'
5122          , p_merge_duplicate_code       => 'N'
5123          );
5124    --
5125    l_acc_rev_natural_side_code := 'C';  -- 4262811
5126    -- 
5127    --
5128    -- set accounting line type info
5129    --
5130    xla_ae_lines_pkg.SetAcctLineType
5131       (p_component_type             => l_component_type
5132       ,p_event_type_code            => l_event_type_code
5133       ,p_line_definition_owner_code => l_line_definition_owner_code
5134       ,p_line_definition_code       => l_line_definition_code
5135       ,p_accounting_line_code       => l_component_code
5136       ,p_accounting_line_type_code  => l_component_type_code
5137       ,p_accounting_line_appl_id    => l_component_appl_id
5138       ,p_amb_context_code           => l_amb_context_code
5139       ,p_entity_code                => l_entity_code
5140       ,p_event_class_code           => l_event_class_code);
5141    --
5142    -- set accounting class
5143    --
5144    xla_ae_lines_pkg.SetAcctClass(
5145            p_accounting_class_code  => 'PURCHASE_ORDER'
5146          , p_ae_header_id           => l_ae_header_id
5147          );
5148 
5149    --
5150    -- set rounding class
5151    --
5152    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5153                       'PURCHASE_ORDER';
5154 
5155    --
5156    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5157    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5158    --
5159    -- bulk performance
5160    --
5161    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5162 
5163    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5164       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5165 
5166    -- 4955764
5167    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5168       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5169 
5170    -- 4458381 Public Sector Enh
5171    
5172    --
5173    -- set accounting attributes for the line type
5174    --
5175    l_entered_amt_idx := 23;
5176    l_accted_amt_idx  := 28;
5177    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5178    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5179    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
5180    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
5181    l_rec_acct_attrs.array_num_value(2)  := 
5182 xla_ae_sources_pkg.GetSystemSourceNum(
5183    p_source_code           => 'XLA_EVENT_APPL_ID'
5184  , p_source_type_code      => 'Y'
5185  , p_source_application_id =>  602
5186 );
5187    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
5188    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
5189    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
5190    l_rec_acct_attrs.array_char_value(4)  := 
5191 xla_ae_sources_pkg.GetSystemSourceChar(
5192    p_source_code           => 'XLA_ENTITY_CODE'
5193  , p_source_type_code      => 'Y'
5194  , p_source_application_id =>  602
5195 );
5196    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
5197    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
5198    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
5199    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
5200    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
5201    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
5202    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5203    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
5204    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
5205    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
5206    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
5207    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
5208    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5209    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
5210    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
5211    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
5212    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
5213    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
5214    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
5215    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
5216    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
5217    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
5218    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
5219    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
5220    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
5221    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
5222    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
5223    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
5224    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
5225    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
5226    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
5227    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
5228    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
5229    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
5230    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
5231    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
5232    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
5233    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
5234    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
5235    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
5236    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
5237    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
5238    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
5239    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
5240    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
5241    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
5242    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
5243    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
5244    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
5245    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
5246    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
5247    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
5248    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
5249    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
5250    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
5251    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
5252    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
5253    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
5254    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
5255    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
5256 
5257    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5258    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5259 
5260    ---------------------------------------------------------------------------------------------------------------
5261    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5262    ---------------------------------------------------------------------------------------------------------------
5263    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5264 
5265    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5266    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5267 
5268    IF xla_accounting_cache_pkg.GetValueChar
5269          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5270          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5271    AND l_bflow_method_code = 'PRIOR_ENTRY'
5272 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5273    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5274          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5275        )
5276    THEN
5277          xla_ae_lines_pkg.BflowUpgEntry
5278            (p_business_method_code    => l_bflow_method_code
5279            ,p_business_class_code     => l_bflow_class_code
5280            ,p_balance_type            => l_balance_type_code);
5281    ELSE
5282       NULL;
5283 -- No business flow processing for business flow method of NONE.
5284    END IF;
5285 
5286    --
5287    -- call analytical criteria
5288    --
5289    
5290    --
5291    -- call description
5292    --
5293    
5294 xla_ae_lines_pkg.SetLineDescription(
5295    p_ae_header_id => l_ae_header_id
5296   ,p_description  => Description_2 (
5297      p_application_id         => p_application_id
5298    , p_ae_header_id           => l_ae_header_id 
5299 , p_source_3 => p_source_3
5300    )
5301 );
5302 
5303 
5304    --
5305    -- call ADRs
5306    -- Bug 4922099
5307    --
5308    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5309         (NVL(l_actual_upg_option, 'N') = 'O') OR
5310         (NVL(l_enc_upg_option, 'N') = 'O')
5311       )
5312    THEN
5313    NULL;
5314    --
5315    --
5316    
5317   l_ccid := AcctDerRule_9(
5318            p_application_id           => p_application_id
5319          , p_ae_header_id             => l_ae_header_id 
5320 , p_source_9 => p_source_9
5321          , x_transaction_coa_id       => l_adr_transaction_coa_id
5322          , x_accounting_coa_id        => l_adr_accounting_coa_id
5323          , x_value_type_code          => l_adr_value_type_code
5324          , p_side                     => 'NA'
5325    );
5326 
5327    xla_ae_lines_pkg.set_ccid(
5328     p_code_combination_id          => l_ccid
5329   , p_value_type_code              => l_adr_value_type_code
5330   , p_transaction_coa_id           => l_adr_transaction_coa_id
5331   , p_accounting_coa_id            => l_adr_accounting_coa_id
5332   , p_adr_code                     => 'FV_ACCOUNT_RULE'
5333   , p_adr_type_code                => 'S'
5334   , p_component_type               => l_component_type
5335   , p_component_code               => l_component_code
5336   , p_component_type_code          => l_component_type_code
5337   , p_component_appl_id            => l_component_appl_id
5338   , p_amb_context_code             => l_amb_context_code
5339   , p_side                         => 'NA'
5340   );
5341 
5342 
5343    l_segment := AcctDerRule_5(
5344            p_application_id           => p_application_id
5345          , p_ae_header_id             => l_ae_header_id 
5346 , p_source_7 => p_source_7
5347 , p_source_8 => p_source_8
5348          , x_transaction_coa_id       => l_adr_transaction_coa_id
5349          , x_accounting_coa_id        => l_adr_accounting_coa_id
5350          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
5351          , x_flex_value_set_id        => l_adr_flex_value_set_id
5352          , x_value_type_code          => l_adr_value_type_code
5353          , x_value_combination_id     => l_adr_value_combination_id
5354          , x_value_segment_code       => l_adr_value_segment_code
5355          , p_side                     => 'NA'
5356          , p_override_seg_flag        => 'Y'
5357    );
5358 
5359    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
5360 
5361       xla_ae_lines_pkg.set_segment(
5362           p_to_segment_code         => 'GL_ACCOUNT'
5363         , p_segment_value           => l_segment
5364         , p_from_segment_code       => l_adr_value_segment_code
5365         , p_from_combination_id     => l_adr_value_combination_id
5366         , p_value_type_code         => l_adr_value_type_code
5367         , p_transaction_coa_id      => l_adr_transaction_coa_id
5368         , p_accounting_coa_id       => l_adr_accounting_coa_id
5369         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
5370         , p_flex_value_set_id       => l_adr_flex_value_set_id
5371         , p_adr_code                => 'FV_46X002'
5372         , p_adr_type_code           => 'S'
5373         , p_component_type          => l_component_type
5374         , p_component_code          => l_component_code
5375         , p_component_type_code     => l_component_type_code
5376         , p_component_appl_id       => l_component_appl_id
5377         , p_amb_context_code        => l_amb_context_code
5378         , p_entity_code             => 'PURCHASE_ORDER'
5379         , p_event_class_code        => 'PO_PA'
5380         , p_side                    => 'NA'
5381         );
5382 
5383   END IF;
5384 
5385    --
5386    --
5387    END IF;
5388    --
5389    -- Bug 4922099
5390    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5391           (NVL(l_enc_upg_option, 'N') = 'O')
5392         ) AND
5393         (l_bflow_method_code = 'PRIOR_ENTRY')
5394       )
5395    THEN
5396       IF
5397       --
5398       1 = 2
5399       --
5400       THEN
5401       xla_accounting_err_pkg.build_message
5402                                     (p_appli_s_name            => 'XLA'
5403                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5404                                     ,p_token_1                 => 'LINE_NUMBER'
5405                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5406                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5407                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5408                                                                              l_component_type
5409                                                                             ,l_component_code
5410                                                                             ,l_component_type_code
5411                                                                             ,l_component_appl_id
5412                                                                             ,l_amb_context_code
5413                                                                             ,l_entity_code
5414                                                                             ,l_event_class_code
5415                                                                            )
5416                                     ,p_token_3                 => 'OWNER'
5417                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5418                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5419                                                                           ,p_lookup_code    => l_component_type_code
5420                                                                          )
5421                                     ,p_token_4                 => 'PRODUCT_NAME'
5422                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5423                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5424                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5425                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5426                                     ,p_ae_header_id            =>  NULL
5427                                        );
5428 
5429         IF (C_LEVEL_ERROR>= g_log_level) THEN
5430                  trace
5431                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5432                       ,p_level    => C_LEVEL_ERROR
5433                       ,p_module   => l_log_module);
5434         END IF;
5435       END IF;
5436    END IF;
5437    --
5438    --
5439    ------------------------------------------------------------------------------------------------
5440    -- 4219869 Business Flow
5441    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5442    -- Prior Entry.  Currently, the following code is always generated.
5443    ------------------------------------------------------------------------------------------------
5444    XLA_AE_LINES_PKG.ValidateCurrentLine;
5445 
5446    ------------------------------------------------------------------------------------
5447    -- 4219869 Business Flow
5448    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5449    ------------------------------------------------------------------------------------
5450    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5451 
5452    ----------------------------------------------------------------------------------
5453    -- 4219869 Business Flow
5454    -- Update journal entry status -- Need to generate this within IF <condition>
5455    ----------------------------------------------------------------------------------
5456    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5457          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5458          ,p_balance_type_code => l_balance_type_code
5459          );
5460 
5461    -------------------------------------------------------------------------------------------
5462    -- 4262811 - Generate the Accrual Reversal lines
5463    -------------------------------------------------------------------------------------------
5464    BEGIN
5465       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5466                               (g_array_event(p_event_id).array_value_num('header_index'));
5467       IF l_acc_rev_flag IS NULL THEN
5468          l_acc_rev_flag := 'N';
5469       END IF;
5470    EXCEPTION
5471       WHEN OTHERS THEN
5472          l_acc_rev_flag := 'N';
5473    END;
5474    --
5475    IF (l_acc_rev_flag = 'Y') THEN
5476 
5477        -- 4645092  ------------------------------------------------------------------------------
5478        -- To allow MPA report to determine if it should generate report process
5479        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5480        ------------------------------------------------------------------------------------------
5481 
5482        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5483        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5484 
5485        --
5486        -- Update the line information that should be overwritten
5487        --
5488        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5489                                          p_header_num   => 1);
5490        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5491 
5492        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5493 
5494        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5495           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5496        END IF;
5497 
5498       --
5499       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5500       --
5501       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5502           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5503       ELSE
5504           ---------------------------------------------------------------------------------------------------
5505           -- 4262811a Switch Sign
5506           ---------------------------------------------------------------------------------------------------
5507           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5508           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5509                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5510           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5511                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5512           -- 5132302
5513           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5514                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5515 
5516       END IF;
5517 
5518       -- 4955764
5519       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5520       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5521 
5522 
5523       XLA_AE_LINES_PKG.ValidateCurrentLine;
5524       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5525 
5526       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5527                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5528                ,p_balance_type_code => l_balance_type_code);
5529 
5530    END IF;
5531 
5532    -----------------------------------------------------------------------------------------
5533    -- 4262811 Multiperiod Accounting
5534    -----------------------------------------------------------------------------------------
5535      -- No MPA option is assigned.
5536 
5537 
5538 END IF;
5539 END IF;
5540 --
5541 
5542 --
5543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5544    trace
5545       (p_msg      => 'END of AcctLineType_19'
5546       ,p_level    => C_LEVEL_PROCEDURE
5547       ,p_module   => l_log_module);
5548 END IF;
5549 --
5550 EXCEPTION
5551   WHEN xla_exceptions_pkg.application_exception THEN
5552       RAISE;
5553   WHEN OTHERS THEN
5554        xla_exceptions_pkg.raise_message
5555            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_19');
5556 END AcctLineType_19;
5557 --
5558 
5559 ---------------------------------------
5560 --
5561 -- PRIVATE FUNCTION
5562 --         AcctLineType_20
5563 --
5564 ---------------------------------------
5565 PROCEDURE AcctLineType_20 (
5566   p_application_id        IN NUMBER
5567  ,p_event_id              IN NUMBER
5568  ,p_calculate_acctd_flag  IN VARCHAR2
5569  ,p_calculate_g_l_flag    IN VARCHAR2
5570  ,p_actual_flag           IN OUT VARCHAR2
5571  ,p_balance_type_code     OUT VARCHAR2
5572  ,p_gain_or_loss_ref      OUT VARCHAR2
5573  
5574 --Journal entry Line Description
5575  , p_source_3            IN VARCHAR2
5576 --Federal Fund Category
5577  , p_source_7            IN VARCHAR2
5578 --Federal Fund Expired Status
5579  , p_source_8            IN VARCHAR2
5580 --Budget Account
5581  , p_source_9            IN NUMBER
5582 --Federal Prior Year Flag
5583  , p_source_10            IN VARCHAR2
5584 --Main Or Backing Code
5585  , p_source_13            IN VARCHAR2
5586 --PO Distribution Type
5587  , p_source_14            IN VARCHAR2
5588 --Accounting Reversal Flag
5589  , p_source_15            IN VARCHAR2
5590 --Distribution Link Type
5591  , p_source_17            IN VARCHAR2
5592 --PO Distribution Identifier
5593  , p_source_19            IN NUMBER
5594 --PO Header Identifier
5595  , p_source_20            IN NUMBER
5596 --Applied To Application Identifier
5597  , p_source_21            IN NUMBER
5598 --Applied To Distribution Link Type
5599  , p_source_22            IN VARCHAR2
5600 --Applied To Entity Code
5601  , p_source_23            IN VARCHAR2
5602 --Applied To Distribution Identifier 1
5603  , p_source_24            IN NUMBER
5604 --Applied To Header Identifier 1
5605  , p_source_25            IN NUMBER
5606 --Entered Amount
5607  , p_source_26            IN NUMBER
5608 --Currency Code
5609  , p_source_27            IN VARCHAR2
5610 --Accounted Amount
5611  , p_source_28            IN NUMBER
5612 --PO Encumbrance Upgrade Option
5613  , p_source_29            IN VARCHAR2
5614 --JFMIP Reference
5615  , p_source_31            IN VARCHAR2
5616 --PO Upgrade Encumbrance Type Identifier
5617  , p_source_32            IN NUMBER
5618 --Currency Conversion Date
5619  , p_source_35            IN DATE
5620 --Currency Conversion Rate
5621  , p_source_36            IN NUMBER
5622 --Currency Conversion Type
5623  , p_source_37            IN VARCHAR2
5624 )
5625 IS
5626 
5627 l_component_type              VARCHAR2(80);
5628 l_component_code              VARCHAR2(30);
5629 l_component_type_code         VARCHAR2(1);
5630 l_component_appl_id           INTEGER;
5631 l_amb_context_code            VARCHAR2(30);
5632 l_entity_code                 VARCHAR2(30);
5633 l_event_class_code            VARCHAR2(30);
5634 l_ae_header_id                NUMBER;
5635 l_event_type_code             VARCHAR2(30);
5636 l_line_definition_code        VARCHAR2(30);
5637 l_line_definition_owner_code  VARCHAR2(1);
5638 --
5639 -- adr variables
5640 l_segment                     VARCHAR2(30);
5641 l_ccid                        NUMBER;
5642 l_adr_transaction_coa_id      NUMBER;
5643 l_adr_accounting_coa_id       NUMBER;
5644 l_adr_flexfield_segment_code  VARCHAR2(30);
5645 l_adr_flex_value_set_id       NUMBER;
5646 l_adr_value_type_code         VARCHAR2(30);
5647 l_adr_value_combination_id    NUMBER;
5648 l_adr_value_segment_code      VARCHAR2(30);
5649 
5650 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5651 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5652 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5653 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5654 
5655 -- 4262811 Variables ------------------------------------------------------------------------------------------
5656 l_entered_amt_idx             NUMBER;
5657 l_accted_amt_idx              NUMBER;
5658 l_acc_rev_flag                VARCHAR2(1);
5659 l_accrual_line_num            NUMBER;
5660 l_tmp_amt                     NUMBER;
5661 l_acc_rev_natural_side_code   VARCHAR2(1);
5662 
5663 l_num_entries                 NUMBER;
5664 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5665 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5666 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5667 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5668 l_recog_line_1                NUMBER;
5669 l_recog_line_2                NUMBER;
5670 
5671 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5672 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5673 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5674 
5675 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5676 
5677 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5678 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5679 
5680 ---------------------------------------------------------------------------------------------------------------
5681 
5682 
5683 --
5684 -- bulk performance
5685 --
5686 l_balance_type_code           VARCHAR2(1);
5687 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5688 l_log_module                  VARCHAR2(240);
5689 
5690 --
5691 -- Upgrade strategy
5692 --
5693 l_actual_upg_option           VARCHAR2(1);
5694 l_enc_upg_option           VARCHAR2(1);
5695 
5696 --
5697 BEGIN
5698 --
5699 IF g_log_enabled THEN
5700       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
5701 END IF;
5702 --
5703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5704 
5705       trace
5706          (p_msg      => 'BEGIN of AcctLineType_20'
5707          ,p_level    => C_LEVEL_PROCEDURE
5708          ,p_module   => l_log_module);
5709 
5710 END IF;
5711 --
5712 l_component_type             := 'AMB_JLT';
5713 l_component_code             := 'FV_BPA_UNRESERVE_CR';
5714 l_component_type_code        := 'S';
5715 l_component_appl_id          :=  201;
5716 l_amb_context_code           := 'DEFAULT';
5717 l_entity_code                := 'PURCHASE_ORDER';
5718 l_event_class_code           := 'PO_PA';
5719 l_event_type_code            := 'PO_PA_ALL';
5720 l_line_definition_owner_code := 'S';
5721 l_line_definition_code       := 'FV_PO_ALL';
5722 --
5723 l_balance_type_code          := 'A';
5724 l_segment                     := NULL;
5725 l_ccid                        := NULL;
5726 l_adr_transaction_coa_id      := NULL;
5727 l_adr_accounting_coa_id       := NULL;
5728 l_adr_flexfield_segment_code  := NULL;
5729 l_adr_flex_value_set_id       := NULL;
5730 l_adr_value_type_code         := NULL;
5731 l_adr_value_combination_id    := NULL;
5732 l_adr_value_segment_code      := NULL;
5733 
5734 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5735 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
5736 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5737 l_budgetary_control_flag     := 'Y';
5738 
5739 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5740 l_bflow_applied_to_amt       := NULL; -- 5132302
5741 l_entered_amt_idx            := NULL;          -- 4262811
5742 l_accted_amt_idx             := NULL;          -- 4262811
5743 l_acc_rev_flag               := NULL;          -- 4262811
5744 l_accrual_line_num           := NULL;          -- 4262811
5745 l_tmp_amt                    := NULL;          -- 4262811
5746 --
5747  
5748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5749     l_balance_type_code <> 'B' THEN
5750 IF (NVL(
5751 xla_ae_sources_pkg.GetSystemSourceChar(
5752    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5753  , p_source_type_code      => 'Y'
5754  , p_source_application_id =>  602
5755 ),'
5756 ') =  'PO_PA_UNRESERVED' OR 
5757 NVL(
5758 xla_ae_sources_pkg.GetSystemSourceChar(
5759    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5760  , p_source_type_code      => 'Y'
5761  , p_source_application_id =>  602
5762 ),'
5763 ') =  'PO_PA_REJECTED' OR 
5764 NVL(
5765 xla_ae_sources_pkg.GetSystemSourceChar(
5766    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5767  , p_source_type_code      => 'Y'
5768  , p_source_application_id =>  602
5769 ),'
5770 ') =  'PO_PA_INV_CANCELLED' OR 
5771 NVL(
5772 xla_ae_sources_pkg.GetSystemSourceChar(
5773    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5774  , p_source_type_code      => 'Y'
5775  , p_source_application_id =>  602
5776 ),'
5777 ') =  'PO_PA_FINAL_CLOSED') AND 
5778 NVL(p_source_13,'
5779 ') =  'M' AND 
5780 NVL(p_source_14,'
5781 ') =  'AGREEMENT' AND 
5782 NVL(p_source_10,'
5783 ') =  'N'
5784  THEN 
5785 
5786    --
5787    XLA_AE_LINES_PKG.SetNewLine;
5788 
5789    p_balance_type_code          := l_balance_type_code;
5790    -- set the flag so later we will know whether the gain loss line needs to be created
5791    
5792    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5793      p_actual_flag :='A';
5794    END IF;
5795 
5796    --
5797    -- bulk performance
5798    --
5799    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5800                                       p_header_num   => 0); -- 4262811
5801    --
5802    -- set accounting line options
5803    --
5804    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5805            p_natural_side_code          => 'C'
5806          , p_gain_or_loss_flag          => 'N'
5807          , p_gl_transfer_mode_code      => 'S'
5808          , p_acct_entry_type_code       => 'A'
5809          , p_switch_side_flag           => 'N'
5810          , p_merge_duplicate_code       => 'N'
5811          );
5812    --
5813    l_acc_rev_natural_side_code := 'D';  -- 4262811
5814    -- 
5815    --
5816    -- set accounting line type info
5817    --
5818    xla_ae_lines_pkg.SetAcctLineType
5819       (p_component_type             => l_component_type
5820       ,p_event_type_code            => l_event_type_code
5821       ,p_line_definition_owner_code => l_line_definition_owner_code
5822       ,p_line_definition_code       => l_line_definition_code
5823       ,p_accounting_line_code       => l_component_code
5824       ,p_accounting_line_type_code  => l_component_type_code
5825       ,p_accounting_line_appl_id    => l_component_appl_id
5826       ,p_amb_context_code           => l_amb_context_code
5827       ,p_entity_code                => l_entity_code
5828       ,p_event_class_code           => l_event_class_code);
5829    --
5830    -- set accounting class
5831    --
5832    xla_ae_lines_pkg.SetAcctClass(
5833            p_accounting_class_code  => 'PURCHASE_ORDER'
5834          , p_ae_header_id           => l_ae_header_id
5835          );
5836 
5837    --
5838    -- set rounding class
5839    --
5840    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5841                       'PURCHASE_ORDER';
5842 
5843    --
5844    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5845    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5846    --
5847    -- bulk performance
5848    --
5849    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5850 
5851    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5852       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5853 
5854    -- 4955764
5855    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5856       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5857 
5858    -- 4458381 Public Sector Enh
5859    
5860    --
5861    -- set accounting attributes for the line type
5862    --
5863    l_entered_amt_idx := 23;
5864    l_accted_amt_idx  := 28;
5865    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5866    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5867    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
5868    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
5869    l_rec_acct_attrs.array_num_value(2)  := 
5870 xla_ae_sources_pkg.GetSystemSourceNum(
5871    p_source_code           => 'XLA_EVENT_APPL_ID'
5872  , p_source_type_code      => 'Y'
5873  , p_source_application_id =>  602
5874 );
5875    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
5876    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
5877    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
5878    l_rec_acct_attrs.array_char_value(4)  := 
5879 xla_ae_sources_pkg.GetSystemSourceChar(
5880    p_source_code           => 'XLA_ENTITY_CODE'
5881  , p_source_type_code      => 'Y'
5882  , p_source_application_id =>  602
5883 );
5884    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
5885    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
5886    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
5887    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
5888    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
5889    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
5890    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5891    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
5892    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
5893    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
5894    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
5895    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
5896    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5897    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
5898    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
5899    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
5900    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
5901    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
5902    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
5903    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
5904    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
5905    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
5906    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
5907    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
5908    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
5909    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
5910    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
5911    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
5912    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
5913    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
5914    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
5915    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
5916    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
5917    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
5918    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
5919    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
5920    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
5921    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
5922    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
5923    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
5924    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
5925    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
5926    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
5927    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
5928    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
5929    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
5930    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
5931    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
5932    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
5933    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
5934    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
5935    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
5936    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
5937    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
5938    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
5939    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
5940    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
5941    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
5942    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
5943    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
5944 
5945    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5946    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5947 
5948    ---------------------------------------------------------------------------------------------------------------
5949    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5950    ---------------------------------------------------------------------------------------------------------------
5951    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5952 
5953    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5954    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5955 
5956    IF xla_accounting_cache_pkg.GetValueChar
5957          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5958          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5959    AND l_bflow_method_code = 'PRIOR_ENTRY'
5960 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5961    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5962          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5963        )
5964    THEN
5965          xla_ae_lines_pkg.BflowUpgEntry
5966            (p_business_method_code    => l_bflow_method_code
5967            ,p_business_class_code     => l_bflow_class_code
5968            ,p_balance_type            => l_balance_type_code);
5969    ELSE
5970       NULL;
5971 -- No business flow processing for business flow method of NONE.
5972    END IF;
5973 
5974    --
5975    -- call analytical criteria
5976    --
5977    
5978    --
5979    -- call description
5980    --
5981    
5982 xla_ae_lines_pkg.SetLineDescription(
5983    p_ae_header_id => l_ae_header_id
5984   ,p_description  => Description_2 (
5985      p_application_id         => p_application_id
5986    , p_ae_header_id           => l_ae_header_id 
5987 , p_source_3 => p_source_3
5988    )
5989 );
5990 
5991 
5992    --
5993    -- call ADRs
5994    -- Bug 4922099
5995    --
5996    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5997         (NVL(l_actual_upg_option, 'N') = 'O') OR
5998         (NVL(l_enc_upg_option, 'N') = 'O')
5999       )
6000    THEN
6001    NULL;
6002    --
6003    --
6004    
6005   l_ccid := AcctDerRule_9(
6006            p_application_id           => p_application_id
6007          , p_ae_header_id             => l_ae_header_id 
6008 , p_source_9 => p_source_9
6009          , x_transaction_coa_id       => l_adr_transaction_coa_id
6010          , x_accounting_coa_id        => l_adr_accounting_coa_id
6011          , x_value_type_code          => l_adr_value_type_code
6012          , p_side                     => 'NA'
6013    );
6014 
6015    xla_ae_lines_pkg.set_ccid(
6016     p_code_combination_id          => l_ccid
6017   , p_value_type_code              => l_adr_value_type_code
6018   , p_transaction_coa_id           => l_adr_transaction_coa_id
6019   , p_accounting_coa_id            => l_adr_accounting_coa_id
6020   , p_adr_code                     => 'FV_ACCOUNT_RULE'
6021   , p_adr_type_code                => 'S'
6022   , p_component_type               => l_component_type
6023   , p_component_code               => l_component_code
6024   , p_component_type_code          => l_component_type_code
6025   , p_component_appl_id            => l_component_appl_id
6026   , p_amb_context_code             => l_amb_context_code
6027   , p_side                         => 'NA'
6028   );
6029 
6030 
6031    l_segment := AcctDerRule_5(
6032            p_application_id           => p_application_id
6033          , p_ae_header_id             => l_ae_header_id 
6034 , p_source_7 => p_source_7
6035 , p_source_8 => p_source_8
6036          , x_transaction_coa_id       => l_adr_transaction_coa_id
6037          , x_accounting_coa_id        => l_adr_accounting_coa_id
6038          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
6039          , x_flex_value_set_id        => l_adr_flex_value_set_id
6040          , x_value_type_code          => l_adr_value_type_code
6041          , x_value_combination_id     => l_adr_value_combination_id
6042          , x_value_segment_code       => l_adr_value_segment_code
6043          , p_side                     => 'NA'
6044          , p_override_seg_flag        => 'Y'
6045    );
6046 
6047    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
6048 
6049       xla_ae_lines_pkg.set_segment(
6050           p_to_segment_code         => 'GL_ACCOUNT'
6051         , p_segment_value           => l_segment
6052         , p_from_segment_code       => l_adr_value_segment_code
6053         , p_from_combination_id     => l_adr_value_combination_id
6054         , p_value_type_code         => l_adr_value_type_code
6055         , p_transaction_coa_id      => l_adr_transaction_coa_id
6056         , p_accounting_coa_id       => l_adr_accounting_coa_id
6057         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
6058         , p_flex_value_set_id       => l_adr_flex_value_set_id
6059         , p_adr_code                => 'FV_46X002'
6060         , p_adr_type_code           => 'S'
6061         , p_component_type          => l_component_type
6062         , p_component_code          => l_component_code
6063         , p_component_type_code     => l_component_type_code
6064         , p_component_appl_id       => l_component_appl_id
6065         , p_amb_context_code        => l_amb_context_code
6066         , p_entity_code             => 'PURCHASE_ORDER'
6067         , p_event_class_code        => 'PO_PA'
6068         , p_side                    => 'NA'
6069         );
6070 
6071   END IF;
6072 
6073    --
6074    --
6075    END IF;
6076    --
6077    -- Bug 4922099
6078    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6079           (NVL(l_enc_upg_option, 'N') = 'O')
6080         ) AND
6081         (l_bflow_method_code = 'PRIOR_ENTRY')
6082       )
6083    THEN
6084       IF
6085       --
6086       1 = 2
6087       --
6088       THEN
6089       xla_accounting_err_pkg.build_message
6090                                     (p_appli_s_name            => 'XLA'
6091                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6092                                     ,p_token_1                 => 'LINE_NUMBER'
6093                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6094                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6095                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6096                                                                              l_component_type
6097                                                                             ,l_component_code
6098                                                                             ,l_component_type_code
6099                                                                             ,l_component_appl_id
6100                                                                             ,l_amb_context_code
6101                                                                             ,l_entity_code
6102                                                                             ,l_event_class_code
6103                                                                            )
6104                                     ,p_token_3                 => 'OWNER'
6105                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6106                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6107                                                                           ,p_lookup_code    => l_component_type_code
6108                                                                          )
6109                                     ,p_token_4                 => 'PRODUCT_NAME'
6110                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6111                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6112                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6113                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6114                                     ,p_ae_header_id            =>  NULL
6115                                        );
6116 
6117         IF (C_LEVEL_ERROR>= g_log_level) THEN
6118                  trace
6119                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6120                       ,p_level    => C_LEVEL_ERROR
6121                       ,p_module   => l_log_module);
6122         END IF;
6123       END IF;
6124    END IF;
6125    --
6126    --
6127    ------------------------------------------------------------------------------------------------
6128    -- 4219869 Business Flow
6129    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6130    -- Prior Entry.  Currently, the following code is always generated.
6131    ------------------------------------------------------------------------------------------------
6132    XLA_AE_LINES_PKG.ValidateCurrentLine;
6133 
6134    ------------------------------------------------------------------------------------
6135    -- 4219869 Business Flow
6136    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6137    ------------------------------------------------------------------------------------
6138    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6139 
6140    ----------------------------------------------------------------------------------
6141    -- 4219869 Business Flow
6142    -- Update journal entry status -- Need to generate this within IF <condition>
6143    ----------------------------------------------------------------------------------
6144    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6145          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6146          ,p_balance_type_code => l_balance_type_code
6147          );
6148 
6149    -------------------------------------------------------------------------------------------
6150    -- 4262811 - Generate the Accrual Reversal lines
6151    -------------------------------------------------------------------------------------------
6152    BEGIN
6153       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6154                               (g_array_event(p_event_id).array_value_num('header_index'));
6155       IF l_acc_rev_flag IS NULL THEN
6156          l_acc_rev_flag := 'N';
6157       END IF;
6158    EXCEPTION
6159       WHEN OTHERS THEN
6160          l_acc_rev_flag := 'N';
6161    END;
6162    --
6163    IF (l_acc_rev_flag = 'Y') THEN
6164 
6165        -- 4645092  ------------------------------------------------------------------------------
6166        -- To allow MPA report to determine if it should generate report process
6167        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6168        ------------------------------------------------------------------------------------------
6169 
6170        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6171        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6172 
6173        --
6174        -- Update the line information that should be overwritten
6175        --
6176        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6177                                          p_header_num   => 1);
6178        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6179 
6180        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6181 
6182        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6183           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6184        END IF;
6185 
6186       --
6187       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6188       --
6189       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6190           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6191       ELSE
6192           ---------------------------------------------------------------------------------------------------
6193           -- 4262811a Switch Sign
6194           ---------------------------------------------------------------------------------------------------
6195           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6196           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6197                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6198           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6199                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6200           -- 5132302
6201           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6202                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6203 
6204       END IF;
6205 
6206       -- 4955764
6207       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6208       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6209 
6210 
6211       XLA_AE_LINES_PKG.ValidateCurrentLine;
6212       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6213 
6214       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6215                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6216                ,p_balance_type_code => l_balance_type_code);
6217 
6218    END IF;
6219 
6220    -----------------------------------------------------------------------------------------
6221    -- 4262811 Multiperiod Accounting
6222    -----------------------------------------------------------------------------------------
6223      -- No MPA option is assigned.
6224 
6225 
6226 END IF;
6227 END IF;
6228 --
6229 
6230 --
6231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6232    trace
6233       (p_msg      => 'END of AcctLineType_20'
6234       ,p_level    => C_LEVEL_PROCEDURE
6235       ,p_module   => l_log_module);
6236 END IF;
6237 --
6238 EXCEPTION
6239   WHEN xla_exceptions_pkg.application_exception THEN
6240       RAISE;
6241   WHEN OTHERS THEN
6242        xla_exceptions_pkg.raise_message
6243            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_20');
6244 END AcctLineType_20;
6245 --
6246 
6247 ---------------------------------------
6248 --
6249 -- PRIVATE FUNCTION
6250 --         AcctLineType_21
6251 --
6252 ---------------------------------------
6253 PROCEDURE AcctLineType_21 (
6254   p_application_id        IN NUMBER
6255  ,p_event_id              IN NUMBER
6256  ,p_calculate_acctd_flag  IN VARCHAR2
6257  ,p_calculate_g_l_flag    IN VARCHAR2
6258  ,p_actual_flag           IN OUT VARCHAR2
6259  ,p_balance_type_code     OUT VARCHAR2
6260  ,p_gain_or_loss_ref      OUT VARCHAR2
6261  
6262 --Journal entry Line Description
6263  , p_source_3            IN VARCHAR2
6264 --Federal Fund Category
6265  , p_source_7            IN VARCHAR2
6266 --Budget Account
6267  , p_source_9            IN NUMBER
6268 --Federal Prior Year Flag
6269  , p_source_10            IN VARCHAR2
6270 --Main Or Backing Code
6271  , p_source_13            IN VARCHAR2
6272 --PO Distribution Type
6273  , p_source_14            IN VARCHAR2
6274 --Accounting Reversal Flag
6275  , p_source_15            IN VARCHAR2
6276 --Distribution Link Type
6277  , p_source_17            IN VARCHAR2
6278 --PO Distribution Identifier
6279  , p_source_19            IN NUMBER
6280 --PO Header Identifier
6281  , p_source_20            IN NUMBER
6282 --Applied To Application Identifier
6283  , p_source_21            IN NUMBER
6284 --Applied To Distribution Link Type
6285  , p_source_22            IN VARCHAR2
6286 --Applied To Entity Code
6287  , p_source_23            IN VARCHAR2
6288 --Applied To Distribution Identifier 1
6289  , p_source_24            IN NUMBER
6290 --Applied To Header Identifier 1
6291  , p_source_25            IN NUMBER
6292 --Entered Amount
6293  , p_source_26            IN NUMBER
6294 --Currency Code
6295  , p_source_27            IN VARCHAR2
6296 --Accounted Amount
6297  , p_source_28            IN NUMBER
6298 --PO Encumbrance Upgrade Option
6299  , p_source_29            IN VARCHAR2
6300 --JFMIP Reference
6301  , p_source_31            IN VARCHAR2
6302 --PO Upgrade Encumbrance Type Identifier
6303  , p_source_32            IN NUMBER
6304 --Currency Conversion Date
6305  , p_source_35            IN DATE
6306 --Currency Conversion Rate
6307  , p_source_36            IN NUMBER
6308 --Currency Conversion Type
6309  , p_source_37            IN VARCHAR2
6310 )
6311 IS
6312 
6313 l_component_type              VARCHAR2(80);
6314 l_component_code              VARCHAR2(30);
6315 l_component_type_code         VARCHAR2(1);
6316 l_component_appl_id           INTEGER;
6317 l_amb_context_code            VARCHAR2(30);
6318 l_entity_code                 VARCHAR2(30);
6319 l_event_class_code            VARCHAR2(30);
6320 l_ae_header_id                NUMBER;
6321 l_event_type_code             VARCHAR2(30);
6322 l_line_definition_code        VARCHAR2(30);
6323 l_line_definition_owner_code  VARCHAR2(1);
6324 --
6325 -- adr variables
6326 l_segment                     VARCHAR2(30);
6327 l_ccid                        NUMBER;
6328 l_adr_transaction_coa_id      NUMBER;
6329 l_adr_accounting_coa_id       NUMBER;
6330 l_adr_flexfield_segment_code  VARCHAR2(30);
6331 l_adr_flex_value_set_id       NUMBER;
6332 l_adr_value_type_code         VARCHAR2(30);
6333 l_adr_value_combination_id    NUMBER;
6334 l_adr_value_segment_code      VARCHAR2(30);
6335 
6336 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6337 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6338 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6339 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6340 
6341 -- 4262811 Variables ------------------------------------------------------------------------------------------
6342 l_entered_amt_idx             NUMBER;
6343 l_accted_amt_idx              NUMBER;
6344 l_acc_rev_flag                VARCHAR2(1);
6345 l_accrual_line_num            NUMBER;
6346 l_tmp_amt                     NUMBER;
6347 l_acc_rev_natural_side_code   VARCHAR2(1);
6348 
6349 l_num_entries                 NUMBER;
6350 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6351 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6352 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6353 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6354 l_recog_line_1                NUMBER;
6355 l_recog_line_2                NUMBER;
6356 
6357 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6358 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6359 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6360 
6361 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6362 
6363 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6364 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6365 
6366 ---------------------------------------------------------------------------------------------------------------
6367 
6368 
6369 --
6370 -- bulk performance
6371 --
6372 l_balance_type_code           VARCHAR2(1);
6373 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6374 l_log_module                  VARCHAR2(240);
6375 
6376 --
6377 -- Upgrade strategy
6378 --
6379 l_actual_upg_option           VARCHAR2(1);
6380 l_enc_upg_option           VARCHAR2(1);
6381 
6382 --
6383 BEGIN
6384 --
6385 IF g_log_enabled THEN
6386       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
6387 END IF;
6388 --
6389 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6390 
6391       trace
6392          (p_msg      => 'BEGIN of AcctLineType_21'
6393          ,p_level    => C_LEVEL_PROCEDURE
6394          ,p_module   => l_log_module);
6395 
6396 END IF;
6397 --
6398 l_component_type             := 'AMB_JLT';
6399 l_component_code             := 'FV_BPA_UNRESERVE_DR';
6400 l_component_type_code        := 'S';
6401 l_component_appl_id          :=  201;
6402 l_amb_context_code           := 'DEFAULT';
6403 l_entity_code                := 'PURCHASE_ORDER';
6404 l_event_class_code           := 'PO_PA';
6405 l_event_type_code            := 'PO_PA_ALL';
6406 l_line_definition_owner_code := 'S';
6407 l_line_definition_code       := 'FV_PO_ALL';
6408 --
6409 l_balance_type_code          := 'A';
6410 l_segment                     := NULL;
6411 l_ccid                        := NULL;
6412 l_adr_transaction_coa_id      := NULL;
6413 l_adr_accounting_coa_id       := NULL;
6414 l_adr_flexfield_segment_code  := NULL;
6415 l_adr_flex_value_set_id       := NULL;
6416 l_adr_value_type_code         := NULL;
6417 l_adr_value_combination_id    := NULL;
6418 l_adr_value_segment_code      := NULL;
6419 
6420 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6421 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
6422 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6423 l_budgetary_control_flag     := 'Y';
6424 
6425 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6426 l_bflow_applied_to_amt       := NULL; -- 5132302
6427 l_entered_amt_idx            := NULL;          -- 4262811
6428 l_accted_amt_idx             := NULL;          -- 4262811
6429 l_acc_rev_flag               := NULL;          -- 4262811
6430 l_accrual_line_num           := NULL;          -- 4262811
6431 l_tmp_amt                    := NULL;          -- 4262811
6432 --
6433  
6434 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6435     l_balance_type_code <> 'B' THEN
6436 IF (NVL(
6437 xla_ae_sources_pkg.GetSystemSourceChar(
6438    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6439  , p_source_type_code      => 'Y'
6440  , p_source_application_id =>  602
6441 ),'
6442 ') =  'PO_PA_UNRESERVED' OR 
6443 NVL(
6444 xla_ae_sources_pkg.GetSystemSourceChar(
6445    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6446  , p_source_type_code      => 'Y'
6447  , p_source_application_id =>  602
6448 ),'
6449 ') =  'PO_PA_REJECTED' OR 
6450 NVL(
6451 xla_ae_sources_pkg.GetSystemSourceChar(
6452    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6453  , p_source_type_code      => 'Y'
6454  , p_source_application_id =>  602
6455 ),'
6456 ') =  'PO_PA_INV_CANCELLED' OR 
6457 NVL(
6458 xla_ae_sources_pkg.GetSystemSourceChar(
6459    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6460  , p_source_type_code      => 'Y'
6461  , p_source_application_id =>  602
6462 ),'
6463 ') =  'PO_PA_FINAL_CLOSe') AND 
6464 NVL(p_source_13,'
6465 ') =  'M' AND 
6466 NVL(p_source_14,'
6467 ') =  'AGREEMENT' AND 
6468 NVL(p_source_10,'
6469 ') =  'N'
6470  THEN 
6471 
6472    --
6473    XLA_AE_LINES_PKG.SetNewLine;
6474 
6475    p_balance_type_code          := l_balance_type_code;
6476    -- set the flag so later we will know whether the gain loss line needs to be created
6477    
6478    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6479      p_actual_flag :='A';
6480    END IF;
6481 
6482    --
6483    -- bulk performance
6484    --
6485    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6486                                       p_header_num   => 0); -- 4262811
6487    --
6488    -- set accounting line options
6489    --
6490    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6491            p_natural_side_code          => 'D'
6492          , p_gain_or_loss_flag          => 'N'
6493          , p_gl_transfer_mode_code      => 'S'
6494          , p_acct_entry_type_code       => 'A'
6495          , p_switch_side_flag           => 'N'
6496          , p_merge_duplicate_code       => 'N'
6497          );
6498    --
6499    l_acc_rev_natural_side_code := 'C';  -- 4262811
6500    -- 
6501    --
6502    -- set accounting line type info
6503    --
6504    xla_ae_lines_pkg.SetAcctLineType
6505       (p_component_type             => l_component_type
6506       ,p_event_type_code            => l_event_type_code
6507       ,p_line_definition_owner_code => l_line_definition_owner_code
6508       ,p_line_definition_code       => l_line_definition_code
6509       ,p_accounting_line_code       => l_component_code
6510       ,p_accounting_line_type_code  => l_component_type_code
6511       ,p_accounting_line_appl_id    => l_component_appl_id
6512       ,p_amb_context_code           => l_amb_context_code
6513       ,p_entity_code                => l_entity_code
6514       ,p_event_class_code           => l_event_class_code);
6515    --
6516    -- set accounting class
6517    --
6518    xla_ae_lines_pkg.SetAcctClass(
6519            p_accounting_class_code  => 'PURCHASE_ORDER'
6520          , p_ae_header_id           => l_ae_header_id
6521          );
6522 
6523    --
6524    -- set rounding class
6525    --
6526    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6527                       'PURCHASE_ORDER';
6528 
6529    --
6530    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6531    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6532    --
6533    -- bulk performance
6534    --
6535    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6536 
6537    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6538       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6539 
6540    -- 4955764
6541    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6543 
6544    -- 4458381 Public Sector Enh
6545    
6546    --
6547    -- set accounting attributes for the line type
6548    --
6549    l_entered_amt_idx := 23;
6550    l_accted_amt_idx  := 28;
6551    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6552    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6553    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
6554    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
6555    l_rec_acct_attrs.array_num_value(2)  := 
6556 xla_ae_sources_pkg.GetSystemSourceNum(
6557    p_source_code           => 'XLA_EVENT_APPL_ID'
6558  , p_source_type_code      => 'Y'
6559  , p_source_application_id =>  602
6560 );
6561    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
6562    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
6563    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
6564    l_rec_acct_attrs.array_char_value(4)  := 
6565 xla_ae_sources_pkg.GetSystemSourceChar(
6566    p_source_code           => 'XLA_ENTITY_CODE'
6567  , p_source_type_code      => 'Y'
6568  , p_source_application_id =>  602
6569 );
6570    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
6571    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
6572    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
6573    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
6574    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
6575    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
6576    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6577    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
6578    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
6579    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
6580    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
6581    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
6582    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6583    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
6584    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
6585    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
6586    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
6587    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
6588    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
6589    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
6590    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
6591    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
6592    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
6593    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
6594    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
6595    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
6596    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
6597    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
6598    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
6599    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
6600    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
6601    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
6602    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
6603    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
6604    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
6605    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
6606    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
6607    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
6608    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
6609    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
6610    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
6611    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
6612    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
6613    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
6614    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
6615    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
6616    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
6617    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
6618    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
6619    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
6620    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
6621    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
6622    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
6623    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
6624    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
6625    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
6626    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
6627    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
6628    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
6629    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
6630 
6631    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6632    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6633 
6634    ---------------------------------------------------------------------------------------------------------------
6635    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6636    ---------------------------------------------------------------------------------------------------------------
6637    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6638 
6639    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6640    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6641 
6642    IF xla_accounting_cache_pkg.GetValueChar
6643          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6644          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6645    AND l_bflow_method_code = 'PRIOR_ENTRY'
6646 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6647    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6648          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6649        )
6650    THEN
6651          xla_ae_lines_pkg.BflowUpgEntry
6652            (p_business_method_code    => l_bflow_method_code
6653            ,p_business_class_code     => l_bflow_class_code
6654            ,p_balance_type            => l_balance_type_code);
6655    ELSE
6656       NULL;
6657 -- No business flow processing for business flow method of NONE.
6658    END IF;
6659 
6660    --
6661    -- call analytical criteria
6662    --
6663    
6664    --
6665    -- call description
6666    --
6667    
6668 xla_ae_lines_pkg.SetLineDescription(
6669    p_ae_header_id => l_ae_header_id
6670   ,p_description  => Description_2 (
6671      p_application_id         => p_application_id
6672    , p_ae_header_id           => l_ae_header_id 
6673 , p_source_3 => p_source_3
6674    )
6675 );
6676 
6677 
6678    --
6679    -- call ADRs
6680    -- Bug 4922099
6681    --
6682    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6683         (NVL(l_actual_upg_option, 'N') = 'O') OR
6684         (NVL(l_enc_upg_option, 'N') = 'O')
6685       )
6686    THEN
6687    NULL;
6688    --
6689    --
6690    
6691   l_ccid := AcctDerRule_9(
6692            p_application_id           => p_application_id
6693          , p_ae_header_id             => l_ae_header_id 
6694 , p_source_9 => p_source_9
6695          , x_transaction_coa_id       => l_adr_transaction_coa_id
6696          , x_accounting_coa_id        => l_adr_accounting_coa_id
6697          , x_value_type_code          => l_adr_value_type_code
6698          , p_side                     => 'NA'
6699    );
6700 
6701    xla_ae_lines_pkg.set_ccid(
6702     p_code_combination_id          => l_ccid
6703   , p_value_type_code              => l_adr_value_type_code
6704   , p_transaction_coa_id           => l_adr_transaction_coa_id
6705   , p_accounting_coa_id            => l_adr_accounting_coa_id
6706   , p_adr_code                     => 'FV_ACCOUNT_RULE'
6707   , p_adr_type_code                => 'S'
6708   , p_component_type               => l_component_type
6709   , p_component_code               => l_component_code
6710   , p_component_type_code          => l_component_type_code
6711   , p_component_appl_id            => l_component_appl_id
6712   , p_amb_context_code             => l_amb_context_code
6713   , p_side                         => 'NA'
6714   );
6715 
6716 
6717    l_segment := AcctDerRule_6(
6718            p_application_id           => p_application_id
6719          , p_ae_header_id             => l_ae_header_id 
6720 , p_source_7 => p_source_7
6721          , x_transaction_coa_id       => l_adr_transaction_coa_id
6722          , x_accounting_coa_id        => l_adr_accounting_coa_id
6723          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
6724          , x_flex_value_set_id        => l_adr_flex_value_set_id
6725          , x_value_type_code          => l_adr_value_type_code
6726          , x_value_combination_id     => l_adr_value_combination_id
6727          , x_value_segment_code       => l_adr_value_segment_code
6728          , p_side                     => 'NA'
6729          , p_override_seg_flag        => 'Y'
6730    );
6731 
6732    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
6733 
6734       xla_ae_lines_pkg.set_segment(
6735           p_to_segment_code         => 'GL_ACCOUNT'
6736         , p_segment_value           => l_segment
6737         , p_from_segment_code       => l_adr_value_segment_code
6738         , p_from_combination_id     => l_adr_value_combination_id
6739         , p_value_type_code         => l_adr_value_type_code
6740         , p_transaction_coa_id      => l_adr_transaction_coa_id
6741         , p_accounting_coa_id       => l_adr_accounting_coa_id
6742         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
6743         , p_flex_value_set_id       => l_adr_flex_value_set_id
6744         , p_adr_code                => 'FV_47X002_REQUISITION'
6745         , p_adr_type_code           => 'S'
6746         , p_component_type          => l_component_type
6747         , p_component_code          => l_component_code
6748         , p_component_type_code     => l_component_type_code
6749         , p_component_appl_id       => l_component_appl_id
6750         , p_amb_context_code        => l_amb_context_code
6751         , p_entity_code             => 'PURCHASE_ORDER'
6752         , p_event_class_code        => 'PO_PA'
6753         , p_side                    => 'NA'
6754         );
6755 
6756   END IF;
6757 
6758    --
6759    --
6760    END IF;
6761    --
6762    -- Bug 4922099
6763    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6764           (NVL(l_enc_upg_option, 'N') = 'O')
6765         ) AND
6766         (l_bflow_method_code = 'PRIOR_ENTRY')
6767       )
6768    THEN
6769       IF
6770       --
6771       1 = 2
6772       --
6773       THEN
6774       xla_accounting_err_pkg.build_message
6775                                     (p_appli_s_name            => 'XLA'
6776                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6777                                     ,p_token_1                 => 'LINE_NUMBER'
6778                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6779                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6780                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6781                                                                              l_component_type
6782                                                                             ,l_component_code
6783                                                                             ,l_component_type_code
6784                                                                             ,l_component_appl_id
6785                                                                             ,l_amb_context_code
6786                                                                             ,l_entity_code
6787                                                                             ,l_event_class_code
6788                                                                            )
6789                                     ,p_token_3                 => 'OWNER'
6790                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6791                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6792                                                                           ,p_lookup_code    => l_component_type_code
6793                                                                          )
6794                                     ,p_token_4                 => 'PRODUCT_NAME'
6795                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6796                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6797                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6798                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6799                                     ,p_ae_header_id            =>  NULL
6800                                        );
6801 
6802         IF (C_LEVEL_ERROR>= g_log_level) THEN
6803                  trace
6804                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6805                       ,p_level    => C_LEVEL_ERROR
6806                       ,p_module   => l_log_module);
6807         END IF;
6808       END IF;
6809    END IF;
6810    --
6811    --
6812    ------------------------------------------------------------------------------------------------
6813    -- 4219869 Business Flow
6814    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6815    -- Prior Entry.  Currently, the following code is always generated.
6816    ------------------------------------------------------------------------------------------------
6817    XLA_AE_LINES_PKG.ValidateCurrentLine;
6818 
6819    ------------------------------------------------------------------------------------
6820    -- 4219869 Business Flow
6821    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6822    ------------------------------------------------------------------------------------
6823    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6824 
6825    ----------------------------------------------------------------------------------
6826    -- 4219869 Business Flow
6827    -- Update journal entry status -- Need to generate this within IF <condition>
6828    ----------------------------------------------------------------------------------
6829    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6830          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6831          ,p_balance_type_code => l_balance_type_code
6832          );
6833 
6834    -------------------------------------------------------------------------------------------
6835    -- 4262811 - Generate the Accrual Reversal lines
6836    -------------------------------------------------------------------------------------------
6837    BEGIN
6838       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6839                               (g_array_event(p_event_id).array_value_num('header_index'));
6840       IF l_acc_rev_flag IS NULL THEN
6841          l_acc_rev_flag := 'N';
6842       END IF;
6843    EXCEPTION
6844       WHEN OTHERS THEN
6845          l_acc_rev_flag := 'N';
6846    END;
6847    --
6848    IF (l_acc_rev_flag = 'Y') THEN
6849 
6850        -- 4645092  ------------------------------------------------------------------------------
6851        -- To allow MPA report to determine if it should generate report process
6852        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6853        ------------------------------------------------------------------------------------------
6854 
6855        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6856        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6857 
6858        --
6859        -- Update the line information that should be overwritten
6860        --
6861        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6862                                          p_header_num   => 1);
6863        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6864 
6865        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6866 
6867        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6868           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6869        END IF;
6870 
6871       --
6872       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6873       --
6874       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6875           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6876       ELSE
6877           ---------------------------------------------------------------------------------------------------
6878           -- 4262811a Switch Sign
6879           ---------------------------------------------------------------------------------------------------
6880           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6881           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6882                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6883           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6884                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6885           -- 5132302
6886           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6887                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6888 
6889       END IF;
6890 
6891       -- 4955764
6892       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6893       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6894 
6895 
6896       XLA_AE_LINES_PKG.ValidateCurrentLine;
6897       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6898 
6899       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6900                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6901                ,p_balance_type_code => l_balance_type_code);
6902 
6903    END IF;
6904 
6905    -----------------------------------------------------------------------------------------
6906    -- 4262811 Multiperiod Accounting
6907    -----------------------------------------------------------------------------------------
6908      -- No MPA option is assigned.
6909 
6910 
6911 END IF;
6912 END IF;
6913 --
6914 
6915 --
6916 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6917    trace
6918       (p_msg      => 'END of AcctLineType_21'
6919       ,p_level    => C_LEVEL_PROCEDURE
6920       ,p_module   => l_log_module);
6921 END IF;
6922 --
6923 EXCEPTION
6924   WHEN xla_exceptions_pkg.application_exception THEN
6925       RAISE;
6926   WHEN OTHERS THEN
6927        xla_exceptions_pkg.raise_message
6928            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_21');
6929 END AcctLineType_21;
6930 --
6931 
6932 ---------------------------------------
6933 --
6934 -- PRIVATE FUNCTION
6935 --         AcctLineType_22
6936 --
6937 ---------------------------------------
6938 PROCEDURE AcctLineType_22 (
6939   p_application_id        IN NUMBER
6940  ,p_event_id              IN NUMBER
6941  ,p_calculate_acctd_flag  IN VARCHAR2
6942  ,p_calculate_g_l_flag    IN VARCHAR2
6943  ,p_actual_flag           IN OUT VARCHAR2
6944  ,p_balance_type_code     OUT VARCHAR2
6945  ,p_gain_or_loss_ref      OUT VARCHAR2
6946  
6947 --Journal entry Line Description
6948  , p_source_3            IN VARCHAR2
6949 --Budget Account
6950  , p_source_9            IN NUMBER
6951 --Federal Prior Year Flag
6952  , p_source_10            IN VARCHAR2
6953 --Main Or Backing Code
6954  , p_source_13            IN VARCHAR2
6955 --PO Distribution Type
6956  , p_source_14            IN VARCHAR2
6957 --Accounting Reversal Flag
6958  , p_source_15            IN VARCHAR2
6959 --Distribution Link Type
6960  , p_source_17            IN VARCHAR2
6961 --PO Distribution Identifier
6962  , p_source_19            IN NUMBER
6963 --PO Header Identifier
6964  , p_source_20            IN NUMBER
6965 --Applied To Application Identifier
6966  , p_source_21            IN NUMBER
6967 --Applied To Distribution Link Type
6968  , p_source_22            IN VARCHAR2
6969 --Applied To Entity Code
6970  , p_source_23            IN VARCHAR2
6971 --Applied To Distribution Identifier 1
6972  , p_source_24            IN NUMBER
6973 --Applied To Header Identifier 1
6974  , p_source_25            IN NUMBER
6975 --Entered Amount
6976  , p_source_26            IN NUMBER
6977 --Currency Code
6978  , p_source_27            IN VARCHAR2
6979 --Accounted Amount
6980  , p_source_28            IN NUMBER
6981 --PO Encumbrance Upgrade Option
6982  , p_source_29            IN VARCHAR2
6983 --JFMIP Reference
6984  , p_source_31            IN VARCHAR2
6985 --PO Upgrade Encumbrance Type Identifier
6986  , p_source_32            IN NUMBER
6987 --Currency Conversion Date
6988  , p_source_35            IN DATE
6989 --Currency Conversion Rate
6990  , p_source_36            IN NUMBER
6991 --Currency Conversion Type
6992  , p_source_37            IN VARCHAR2
6993 )
6994 IS
6995 
6996 l_component_type              VARCHAR2(80);
6997 l_component_code              VARCHAR2(30);
6998 l_component_type_code         VARCHAR2(1);
6999 l_component_appl_id           INTEGER;
7000 l_amb_context_code            VARCHAR2(30);
7001 l_entity_code                 VARCHAR2(30);
7002 l_event_class_code            VARCHAR2(30);
7003 l_ae_header_id                NUMBER;
7004 l_event_type_code             VARCHAR2(30);
7005 l_line_definition_code        VARCHAR2(30);
7006 l_line_definition_owner_code  VARCHAR2(1);
7007 --
7008 -- adr variables
7009 l_segment                     VARCHAR2(30);
7010 l_ccid                        NUMBER;
7011 l_adr_transaction_coa_id      NUMBER;
7012 l_adr_accounting_coa_id       NUMBER;
7013 l_adr_flexfield_segment_code  VARCHAR2(30);
7014 l_adr_flex_value_set_id       NUMBER;
7015 l_adr_value_type_code         VARCHAR2(30);
7016 l_adr_value_combination_id    NUMBER;
7017 l_adr_value_segment_code      VARCHAR2(30);
7018 
7019 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7020 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7021 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7022 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7023 
7024 -- 4262811 Variables ------------------------------------------------------------------------------------------
7025 l_entered_amt_idx             NUMBER;
7026 l_accted_amt_idx              NUMBER;
7027 l_acc_rev_flag                VARCHAR2(1);
7028 l_accrual_line_num            NUMBER;
7029 l_tmp_amt                     NUMBER;
7030 l_acc_rev_natural_side_code   VARCHAR2(1);
7031 
7032 l_num_entries                 NUMBER;
7033 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7034 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7035 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7036 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7037 l_recog_line_1                NUMBER;
7038 l_recog_line_2                NUMBER;
7039 
7040 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7041 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7042 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7043 
7044 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7045 
7046 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7047 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7048 
7049 ---------------------------------------------------------------------------------------------------------------
7050 
7051 
7052 --
7053 -- bulk performance
7054 --
7055 l_balance_type_code           VARCHAR2(1);
7056 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7057 l_log_module                  VARCHAR2(240);
7058 
7059 --
7060 -- Upgrade strategy
7061 --
7062 l_actual_upg_option           VARCHAR2(1);
7063 l_enc_upg_option           VARCHAR2(1);
7064 
7065 --
7066 BEGIN
7067 --
7068 IF g_log_enabled THEN
7069       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
7070 END IF;
7071 --
7072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7073 
7074       trace
7075          (p_msg      => 'BEGIN of AcctLineType_22'
7076          ,p_level    => C_LEVEL_PROCEDURE
7077          ,p_module   => l_log_module);
7078 
7079 END IF;
7080 --
7081 l_component_type             := 'AMB_JLT';
7082 l_component_code             := 'FV_PO_PA_RESERVE_CR';
7083 l_component_type_code        := 'S';
7084 l_component_appl_id          :=  201;
7085 l_amb_context_code           := 'DEFAULT';
7086 l_entity_code                := 'PURCHASE_ORDER';
7087 l_event_class_code           := 'PO_PA';
7088 l_event_type_code            := 'PO_PA_ALL';
7089 l_line_definition_owner_code := 'S';
7090 l_line_definition_code       := 'FV_PO_ALL';
7091 --
7092 l_balance_type_code          := 'A';
7093 l_segment                     := NULL;
7094 l_ccid                        := NULL;
7095 l_adr_transaction_coa_id      := NULL;
7096 l_adr_accounting_coa_id       := NULL;
7097 l_adr_flexfield_segment_code  := NULL;
7098 l_adr_flex_value_set_id       := NULL;
7099 l_adr_value_type_code         := NULL;
7100 l_adr_value_combination_id    := NULL;
7101 l_adr_value_segment_code      := NULL;
7102 
7103 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7104 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
7105 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7106 l_budgetary_control_flag     := 'Y';
7107 
7108 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7109 l_bflow_applied_to_amt       := NULL; -- 5132302
7110 l_entered_amt_idx            := NULL;          -- 4262811
7111 l_accted_amt_idx             := NULL;          -- 4262811
7112 l_acc_rev_flag               := NULL;          -- 4262811
7113 l_accrual_line_num           := NULL;          -- 4262811
7114 l_tmp_amt                    := NULL;          -- 4262811
7115 --
7116  
7117 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7118     l_balance_type_code <> 'B' THEN
7119 IF NVL(
7120 xla_ae_sources_pkg.GetSystemSourceChar(
7121    p_source_code           => 'XLA_EVENT_TYPE_CODE'
7122  , p_source_type_code      => 'Y'
7123  , p_source_application_id =>  602
7124 ),'
7125 ') =  'PO_PA_RESERVED' AND 
7126 NVL(p_source_13,'
7127 ') =  'M' AND 
7128 (NVL(p_source_14,'
7129 ') <>  'AGREEMENT' OR 
7130 p_source_14 IS NULL ) AND 
7131 NVL(p_source_10,'
7132 ') =  'N'
7133  THEN 
7134 
7135    --
7136    XLA_AE_LINES_PKG.SetNewLine;
7137 
7138    p_balance_type_code          := l_balance_type_code;
7139    -- set the flag so later we will know whether the gain loss line needs to be created
7140    
7141    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7142      p_actual_flag :='A';
7143    END IF;
7144 
7145    --
7146    -- bulk performance
7147    --
7148    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7149                                       p_header_num   => 0); -- 4262811
7150    --
7151    -- set accounting line options
7152    --
7153    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7154            p_natural_side_code          => 'C'
7155          , p_gain_or_loss_flag          => 'N'
7156          , p_gl_transfer_mode_code      => 'S'
7157          , p_acct_entry_type_code       => 'A'
7158          , p_switch_side_flag           => 'N'
7159          , p_merge_duplicate_code       => 'N'
7160          );
7161    --
7162    l_acc_rev_natural_side_code := 'D';  -- 4262811
7163    -- 
7164    --
7165    -- set accounting line type info
7166    --
7167    xla_ae_lines_pkg.SetAcctLineType
7168       (p_component_type             => l_component_type
7169       ,p_event_type_code            => l_event_type_code
7170       ,p_line_definition_owner_code => l_line_definition_owner_code
7171       ,p_line_definition_code       => l_line_definition_code
7172       ,p_accounting_line_code       => l_component_code
7173       ,p_accounting_line_type_code  => l_component_type_code
7174       ,p_accounting_line_appl_id    => l_component_appl_id
7175       ,p_amb_context_code           => l_amb_context_code
7176       ,p_entity_code                => l_entity_code
7177       ,p_event_class_code           => l_event_class_code);
7178    --
7179    -- set accounting class
7180    --
7181    xla_ae_lines_pkg.SetAcctClass(
7182            p_accounting_class_code  => 'PURCHASE_ORDER'
7183          , p_ae_header_id           => l_ae_header_id
7184          );
7185 
7186    --
7187    -- set rounding class
7188    --
7189    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7190                       'PURCHASE_ORDER';
7191 
7192    --
7193    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7194    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7195    --
7196    -- bulk performance
7197    --
7198    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7199 
7200    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7201       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7202 
7203    -- 4955764
7204    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7205       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7206 
7207    -- 4458381 Public Sector Enh
7208    
7209    --
7210    -- set accounting attributes for the line type
7211    --
7212    l_entered_amt_idx := 23;
7213    l_accted_amt_idx  := 28;
7214    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7215    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7216    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
7217    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
7218    l_rec_acct_attrs.array_num_value(2)  := 
7219 xla_ae_sources_pkg.GetSystemSourceNum(
7220    p_source_code           => 'XLA_EVENT_APPL_ID'
7221  , p_source_type_code      => 'Y'
7222  , p_source_application_id =>  602
7223 );
7224    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
7225    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
7226    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
7227    l_rec_acct_attrs.array_char_value(4)  := 
7228 xla_ae_sources_pkg.GetSystemSourceChar(
7229    p_source_code           => 'XLA_ENTITY_CODE'
7230  , p_source_type_code      => 'Y'
7231  , p_source_application_id =>  602
7232 );
7233    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
7234    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
7235    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
7236    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
7237    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
7238    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
7239    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7240    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
7241    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
7242    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
7243    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
7244    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
7245    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7246    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
7247    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
7248    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
7249    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
7250    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
7251    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
7252    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
7253    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
7254    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
7255    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
7256    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
7257    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
7258    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
7259    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
7260    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
7261    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
7262    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
7263    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
7264    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
7265    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
7266    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
7267    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
7268    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
7269    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
7270    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
7271    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
7272    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
7273    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
7274    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
7275    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
7276    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
7277    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
7278    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
7279    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
7280    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
7281    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
7282    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
7283    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
7284    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
7285    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
7286    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
7287    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
7288    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
7289    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
7290    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
7291    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
7292    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
7293 
7294    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7295    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7296 
7297    ---------------------------------------------------------------------------------------------------------------
7298    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7299    ---------------------------------------------------------------------------------------------------------------
7300    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7301 
7302    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7303    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7304 
7305    IF xla_accounting_cache_pkg.GetValueChar
7306          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7307          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7308    AND l_bflow_method_code = 'PRIOR_ENTRY'
7309 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7310    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7311          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7312        )
7313    THEN
7314          xla_ae_lines_pkg.BflowUpgEntry
7315            (p_business_method_code    => l_bflow_method_code
7316            ,p_business_class_code     => l_bflow_class_code
7317            ,p_balance_type            => l_balance_type_code);
7318    ELSE
7319       NULL;
7320 -- No business flow processing for business flow method of NONE.
7321    END IF;
7322 
7323    --
7324    -- call analytical criteria
7325    --
7326    
7327    --
7328    -- call description
7329    --
7330    
7331 xla_ae_lines_pkg.SetLineDescription(
7332    p_ae_header_id => l_ae_header_id
7333   ,p_description  => Description_2 (
7334      p_application_id         => p_application_id
7335    , p_ae_header_id           => l_ae_header_id 
7336 , p_source_3 => p_source_3
7337    )
7338 );
7339 
7340 
7341    --
7342    -- call ADRs
7343    -- Bug 4922099
7344    --
7345    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7346         (NVL(l_actual_upg_option, 'N') = 'O') OR
7347         (NVL(l_enc_upg_option, 'N') = 'O')
7348       )
7349    THEN
7350    NULL;
7351    --
7352    --
7353    
7354   l_ccid := AcctDerRule_9(
7355            p_application_id           => p_application_id
7356          , p_ae_header_id             => l_ae_header_id 
7357 , p_source_9 => p_source_9
7358          , x_transaction_coa_id       => l_adr_transaction_coa_id
7359          , x_accounting_coa_id        => l_adr_accounting_coa_id
7360          , x_value_type_code          => l_adr_value_type_code
7361          , p_side                     => 'NA'
7362    );
7363 
7364    xla_ae_lines_pkg.set_ccid(
7365     p_code_combination_id          => l_ccid
7366   , p_value_type_code              => l_adr_value_type_code
7367   , p_transaction_coa_id           => l_adr_transaction_coa_id
7368   , p_accounting_coa_id            => l_adr_accounting_coa_id
7369   , p_adr_code                     => 'FV_ACCOUNT_RULE'
7370   , p_adr_type_code                => 'S'
7371   , p_component_type               => l_component_type
7372   , p_component_code               => l_component_code
7373   , p_component_type_code          => l_component_type_code
7374   , p_component_appl_id            => l_component_appl_id
7375   , p_amb_context_code             => l_amb_context_code
7376   , p_side                         => 'NA'
7377   );
7378 
7379 
7380    l_segment := AcctDerRule_8(
7381            p_application_id           => p_application_id
7382          , p_ae_header_id             => l_ae_header_id 
7383          , x_transaction_coa_id       => l_adr_transaction_coa_id
7384          , x_accounting_coa_id        => l_adr_accounting_coa_id
7385          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
7386          , x_flex_value_set_id        => l_adr_flex_value_set_id
7387          , x_value_type_code          => l_adr_value_type_code
7388          , x_value_combination_id     => l_adr_value_combination_id
7389          , x_value_segment_code       => l_adr_value_segment_code
7390          , p_side                     => 'NA'
7391          , p_override_seg_flag        => 'Y'
7392    );
7393 
7394    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
7395 
7396       xla_ae_lines_pkg.set_segment(
7397           p_to_segment_code         => 'GL_ACCOUNT'
7398         , p_segment_value           => l_segment
7399         , p_from_segment_code       => l_adr_value_segment_code
7400         , p_from_combination_id     => l_adr_value_combination_id
7401         , p_value_type_code         => l_adr_value_type_code
7402         , p_transaction_coa_id      => l_adr_transaction_coa_id
7403         , p_accounting_coa_id       => l_adr_accounting_coa_id
7404         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
7405         , p_flex_value_set_id       => l_adr_flex_value_set_id
7406         , p_adr_code                => 'FV_48X101_PURCHASING'
7407         , p_adr_type_code           => 'S'
7408         , p_component_type          => l_component_type
7409         , p_component_code          => l_component_code
7410         , p_component_type_code     => l_component_type_code
7411         , p_component_appl_id       => l_component_appl_id
7412         , p_amb_context_code        => l_amb_context_code
7413         , p_entity_code             => 'PURCHASE_ORDER'
7414         , p_event_class_code        => 'PO_PA'
7415         , p_side                    => 'NA'
7416         );
7417 
7418   END IF;
7419 
7420    --
7421    --
7422    END IF;
7423    --
7424    -- Bug 4922099
7425    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7426           (NVL(l_enc_upg_option, 'N') = 'O')
7427         ) AND
7428         (l_bflow_method_code = 'PRIOR_ENTRY')
7429       )
7430    THEN
7431       IF
7432       --
7433       1 = 2
7434       --
7435       THEN
7436       xla_accounting_err_pkg.build_message
7437                                     (p_appli_s_name            => 'XLA'
7438                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7439                                     ,p_token_1                 => 'LINE_NUMBER'
7440                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7441                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7442                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7443                                                                              l_component_type
7444                                                                             ,l_component_code
7445                                                                             ,l_component_type_code
7446                                                                             ,l_component_appl_id
7447                                                                             ,l_amb_context_code
7448                                                                             ,l_entity_code
7449                                                                             ,l_event_class_code
7450                                                                            )
7451                                     ,p_token_3                 => 'OWNER'
7452                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7453                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7454                                                                           ,p_lookup_code    => l_component_type_code
7455                                                                          )
7456                                     ,p_token_4                 => 'PRODUCT_NAME'
7457                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7458                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7459                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7460                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7461                                     ,p_ae_header_id            =>  NULL
7462                                        );
7463 
7464         IF (C_LEVEL_ERROR>= g_log_level) THEN
7465                  trace
7466                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7467                       ,p_level    => C_LEVEL_ERROR
7468                       ,p_module   => l_log_module);
7469         END IF;
7470       END IF;
7471    END IF;
7472    --
7473    --
7474    ------------------------------------------------------------------------------------------------
7475    -- 4219869 Business Flow
7476    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7477    -- Prior Entry.  Currently, the following code is always generated.
7478    ------------------------------------------------------------------------------------------------
7479    XLA_AE_LINES_PKG.ValidateCurrentLine;
7480 
7481    ------------------------------------------------------------------------------------
7482    -- 4219869 Business Flow
7483    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7484    ------------------------------------------------------------------------------------
7485    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7486 
7487    ----------------------------------------------------------------------------------
7488    -- 4219869 Business Flow
7489    -- Update journal entry status -- Need to generate this within IF <condition>
7490    ----------------------------------------------------------------------------------
7491    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7492          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7493          ,p_balance_type_code => l_balance_type_code
7494          );
7495 
7496    -------------------------------------------------------------------------------------------
7497    -- 4262811 - Generate the Accrual Reversal lines
7498    -------------------------------------------------------------------------------------------
7499    BEGIN
7500       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7501                               (g_array_event(p_event_id).array_value_num('header_index'));
7502       IF l_acc_rev_flag IS NULL THEN
7503          l_acc_rev_flag := 'N';
7504       END IF;
7505    EXCEPTION
7506       WHEN OTHERS THEN
7507          l_acc_rev_flag := 'N';
7508    END;
7509    --
7510    IF (l_acc_rev_flag = 'Y') THEN
7511 
7512        -- 4645092  ------------------------------------------------------------------------------
7513        -- To allow MPA report to determine if it should generate report process
7514        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7515        ------------------------------------------------------------------------------------------
7516 
7517        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7518        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7519 
7520        --
7521        -- Update the line information that should be overwritten
7522        --
7523        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7524                                          p_header_num   => 1);
7525        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7526 
7527        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7528 
7529        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7530           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7531        END IF;
7532 
7533       --
7534       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7535       --
7536       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7537           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7538       ELSE
7539           ---------------------------------------------------------------------------------------------------
7540           -- 4262811a Switch Sign
7541           ---------------------------------------------------------------------------------------------------
7542           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7543           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7544                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7545           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7546                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7547           -- 5132302
7548           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7549                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7550 
7551       END IF;
7552 
7553       -- 4955764
7554       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7555       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7556 
7557 
7558       XLA_AE_LINES_PKG.ValidateCurrentLine;
7559       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7560 
7561       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7562                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7563                ,p_balance_type_code => l_balance_type_code);
7564 
7565    END IF;
7566 
7567    -----------------------------------------------------------------------------------------
7568    -- 4262811 Multiperiod Accounting
7569    -----------------------------------------------------------------------------------------
7570      -- No MPA option is assigned.
7571 
7572 
7573 END IF;
7574 END IF;
7575 --
7576 
7577 --
7578 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7579    trace
7580       (p_msg      => 'END of AcctLineType_22'
7581       ,p_level    => C_LEVEL_PROCEDURE
7582       ,p_module   => l_log_module);
7583 END IF;
7584 --
7585 EXCEPTION
7586   WHEN xla_exceptions_pkg.application_exception THEN
7587       RAISE;
7588   WHEN OTHERS THEN
7589        xla_exceptions_pkg.raise_message
7590            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_22');
7591 END AcctLineType_22;
7592 --
7593 
7594 ---------------------------------------
7595 --
7596 -- PRIVATE FUNCTION
7597 --         AcctLineType_23
7598 --
7599 ---------------------------------------
7600 PROCEDURE AcctLineType_23 (
7601   p_application_id        IN NUMBER
7602  ,p_event_id              IN NUMBER
7603  ,p_calculate_acctd_flag  IN VARCHAR2
7604  ,p_calculate_g_l_flag    IN VARCHAR2
7605  ,p_actual_flag           IN OUT VARCHAR2
7606  ,p_balance_type_code     OUT VARCHAR2
7607  ,p_gain_or_loss_ref      OUT VARCHAR2
7608  
7609 --Journal entry Line Description
7610  , p_source_3            IN VARCHAR2
7611 --Federal Fund Category
7612  , p_source_7            IN VARCHAR2
7613 --Federal Fund Expired Status
7614  , p_source_8            IN VARCHAR2
7615 --Budget Account
7616  , p_source_9            IN NUMBER
7617 --Federal Prior Year Flag
7618  , p_source_10            IN VARCHAR2
7619 --Main Or Backing Code
7620  , p_source_13            IN VARCHAR2
7621 --PO Distribution Type
7622  , p_source_14            IN VARCHAR2
7623 --Accounting Reversal Flag
7624  , p_source_15            IN VARCHAR2
7625 --Distribution Link Type
7626  , p_source_17            IN VARCHAR2
7627 --PO Distribution Identifier
7628  , p_source_19            IN NUMBER
7629 --PO Header Identifier
7630  , p_source_20            IN NUMBER
7631 --Applied To Application Identifier
7632  , p_source_21            IN NUMBER
7633 --Applied To Distribution Link Type
7634  , p_source_22            IN VARCHAR2
7635 --Applied To Entity Code
7636  , p_source_23            IN VARCHAR2
7637 --Applied To Distribution Identifier 1
7638  , p_source_24            IN NUMBER
7639 --Applied To Header Identifier 1
7640  , p_source_25            IN NUMBER
7641 --Entered Amount
7642  , p_source_26            IN NUMBER
7643 --Currency Code
7644  , p_source_27            IN VARCHAR2
7645 --Accounted Amount
7646  , p_source_28            IN NUMBER
7647 --PO Encumbrance Upgrade Option
7648  , p_source_29            IN VARCHAR2
7649 --JFMIP Reference
7650  , p_source_31            IN VARCHAR2
7651 --PO Upgrade Encumbrance Type Identifier
7652  , p_source_32            IN NUMBER
7653 --Currency Conversion Date
7654  , p_source_35            IN DATE
7655 --Currency Conversion Rate
7656  , p_source_36            IN NUMBER
7657 --Currency Conversion Type
7658  , p_source_37            IN VARCHAR2
7659 )
7660 IS
7661 
7662 l_component_type              VARCHAR2(80);
7663 l_component_code              VARCHAR2(30);
7664 l_component_type_code         VARCHAR2(1);
7665 l_component_appl_id           INTEGER;
7666 l_amb_context_code            VARCHAR2(30);
7667 l_entity_code                 VARCHAR2(30);
7668 l_event_class_code            VARCHAR2(30);
7669 l_ae_header_id                NUMBER;
7670 l_event_type_code             VARCHAR2(30);
7671 l_line_definition_code        VARCHAR2(30);
7672 l_line_definition_owner_code  VARCHAR2(1);
7673 --
7674 -- adr variables
7675 l_segment                     VARCHAR2(30);
7676 l_ccid                        NUMBER;
7677 l_adr_transaction_coa_id      NUMBER;
7678 l_adr_accounting_coa_id       NUMBER;
7679 l_adr_flexfield_segment_code  VARCHAR2(30);
7680 l_adr_flex_value_set_id       NUMBER;
7681 l_adr_value_type_code         VARCHAR2(30);
7682 l_adr_value_combination_id    NUMBER;
7683 l_adr_value_segment_code      VARCHAR2(30);
7684 
7685 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7686 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7687 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7688 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7689 
7690 -- 4262811 Variables ------------------------------------------------------------------------------------------
7691 l_entered_amt_idx             NUMBER;
7692 l_accted_amt_idx              NUMBER;
7693 l_acc_rev_flag                VARCHAR2(1);
7694 l_accrual_line_num            NUMBER;
7695 l_tmp_amt                     NUMBER;
7696 l_acc_rev_natural_side_code   VARCHAR2(1);
7697 
7698 l_num_entries                 NUMBER;
7699 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7700 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7701 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7702 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7703 l_recog_line_1                NUMBER;
7704 l_recog_line_2                NUMBER;
7705 
7706 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7707 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7708 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7709 
7710 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7711 
7712 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7713 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7714 
7715 ---------------------------------------------------------------------------------------------------------------
7716 
7717 
7718 --
7719 -- bulk performance
7720 --
7721 l_balance_type_code           VARCHAR2(1);
7722 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7723 l_log_module                  VARCHAR2(240);
7724 
7725 --
7726 -- Upgrade strategy
7727 --
7728 l_actual_upg_option           VARCHAR2(1);
7729 l_enc_upg_option           VARCHAR2(1);
7730 
7731 --
7732 BEGIN
7733 --
7734 IF g_log_enabled THEN
7735       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
7736 END IF;
7737 --
7738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7739 
7740       trace
7741          (p_msg      => 'BEGIN of AcctLineType_23'
7742          ,p_level    => C_LEVEL_PROCEDURE
7743          ,p_module   => l_log_module);
7744 
7745 END IF;
7746 --
7747 l_component_type             := 'AMB_JLT';
7748 l_component_code             := 'FV_PO_PA_RESERVE_DR';
7749 l_component_type_code        := 'S';
7750 l_component_appl_id          :=  201;
7751 l_amb_context_code           := 'DEFAULT';
7752 l_entity_code                := 'PURCHASE_ORDER';
7753 l_event_class_code           := 'PO_PA';
7754 l_event_type_code            := 'PO_PA_ALL';
7755 l_line_definition_owner_code := 'S';
7756 l_line_definition_code       := 'FV_PO_ALL';
7757 --
7758 l_balance_type_code          := 'A';
7759 l_segment                     := NULL;
7760 l_ccid                        := NULL;
7761 l_adr_transaction_coa_id      := NULL;
7762 l_adr_accounting_coa_id       := NULL;
7763 l_adr_flexfield_segment_code  := NULL;
7764 l_adr_flex_value_set_id       := NULL;
7765 l_adr_value_type_code         := NULL;
7766 l_adr_value_combination_id    := NULL;
7767 l_adr_value_segment_code      := NULL;
7768 
7769 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7770 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
7771 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7772 l_budgetary_control_flag     := 'Y';
7773 
7774 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7775 l_bflow_applied_to_amt       := NULL; -- 5132302
7776 l_entered_amt_idx            := NULL;          -- 4262811
7777 l_accted_amt_idx             := NULL;          -- 4262811
7778 l_acc_rev_flag               := NULL;          -- 4262811
7779 l_accrual_line_num           := NULL;          -- 4262811
7780 l_tmp_amt                    := NULL;          -- 4262811
7781 --
7782  
7783 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7784     l_balance_type_code <> 'B' THEN
7785 IF NVL(
7786 xla_ae_sources_pkg.GetSystemSourceChar(
7787    p_source_code           => 'XLA_EVENT_TYPE_CODE'
7788  , p_source_type_code      => 'Y'
7789  , p_source_application_id =>  602
7790 ),'
7791 ') =  'PO_PA_RESERVED' AND 
7792 NVL(p_source_13,'
7793 ') =  'M' AND 
7794 (NVL(p_source_14,'
7795 ') <>  'AGREEMENT' OR 
7796 p_source_14 IS NULL ) AND 
7797 NVL(p_source_10,'
7798 ') =  'N'
7799  THEN 
7800 
7801    --
7802    XLA_AE_LINES_PKG.SetNewLine;
7803 
7804    p_balance_type_code          := l_balance_type_code;
7805    -- set the flag so later we will know whether the gain loss line needs to be created
7806    
7807    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7808      p_actual_flag :='A';
7809    END IF;
7810 
7811    --
7812    -- bulk performance
7813    --
7814    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7815                                       p_header_num   => 0); -- 4262811
7816    --
7817    -- set accounting line options
7818    --
7819    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7820            p_natural_side_code          => 'D'
7821          , p_gain_or_loss_flag          => 'N'
7822          , p_gl_transfer_mode_code      => 'S'
7823          , p_acct_entry_type_code       => 'A'
7824          , p_switch_side_flag           => 'N'
7825          , p_merge_duplicate_code       => 'N'
7826          );
7827    --
7828    l_acc_rev_natural_side_code := 'C';  -- 4262811
7829    -- 
7830    --
7831    -- set accounting line type info
7832    --
7833    xla_ae_lines_pkg.SetAcctLineType
7834       (p_component_type             => l_component_type
7835       ,p_event_type_code            => l_event_type_code
7836       ,p_line_definition_owner_code => l_line_definition_owner_code
7837       ,p_line_definition_code       => l_line_definition_code
7838       ,p_accounting_line_code       => l_component_code
7839       ,p_accounting_line_type_code  => l_component_type_code
7840       ,p_accounting_line_appl_id    => l_component_appl_id
7841       ,p_amb_context_code           => l_amb_context_code
7842       ,p_entity_code                => l_entity_code
7843       ,p_event_class_code           => l_event_class_code);
7844    --
7845    -- set accounting class
7846    --
7847    xla_ae_lines_pkg.SetAcctClass(
7848            p_accounting_class_code  => 'PURCHASE_ORDER'
7849          , p_ae_header_id           => l_ae_header_id
7850          );
7851 
7852    --
7853    -- set rounding class
7854    --
7855    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7856                       'PURCHASE_ORDER';
7857 
7858    --
7859    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7860    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7861    --
7862    -- bulk performance
7863    --
7864    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7865 
7866    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7867       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7868 
7869    -- 4955764
7870    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7871       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7872 
7873    -- 4458381 Public Sector Enh
7874    
7875    --
7876    -- set accounting attributes for the line type
7877    --
7878    l_entered_amt_idx := 23;
7879    l_accted_amt_idx  := 28;
7880    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7881    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7882    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
7883    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
7884    l_rec_acct_attrs.array_num_value(2)  := 
7885 xla_ae_sources_pkg.GetSystemSourceNum(
7886    p_source_code           => 'XLA_EVENT_APPL_ID'
7887  , p_source_type_code      => 'Y'
7888  , p_source_application_id =>  602
7889 );
7890    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
7891    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
7892    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
7893    l_rec_acct_attrs.array_char_value(4)  := 
7894 xla_ae_sources_pkg.GetSystemSourceChar(
7895    p_source_code           => 'XLA_ENTITY_CODE'
7896  , p_source_type_code      => 'Y'
7897  , p_source_application_id =>  602
7898 );
7899    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
7900    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
7901    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
7902    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
7903    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
7904    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
7905    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7906    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
7907    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
7908    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
7909    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
7910    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
7911    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7912    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
7913    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
7914    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
7915    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
7916    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
7917    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
7918    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
7919    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
7920    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
7921    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
7922    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
7923    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
7924    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
7925    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
7926    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
7927    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
7928    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
7929    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
7930    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
7931    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
7932    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
7933    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
7934    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
7935    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
7936    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
7937    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
7938    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
7939    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
7940    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
7941    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
7942    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
7943    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
7944    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
7945    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
7946    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
7947    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
7948    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
7949    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
7950    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
7951    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
7952    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
7953    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
7954    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
7955    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
7956    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
7957    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
7958    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
7959 
7960    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7961    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7962 
7963    ---------------------------------------------------------------------------------------------------------------
7964    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7965    ---------------------------------------------------------------------------------------------------------------
7966    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7967 
7968    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7969    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7970 
7971    IF xla_accounting_cache_pkg.GetValueChar
7972          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7973          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7974    AND l_bflow_method_code = 'PRIOR_ENTRY'
7975 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7976    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7977          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7978        )
7979    THEN
7980          xla_ae_lines_pkg.BflowUpgEntry
7981            (p_business_method_code    => l_bflow_method_code
7982            ,p_business_class_code     => l_bflow_class_code
7983            ,p_balance_type            => l_balance_type_code);
7984    ELSE
7985       NULL;
7986 -- No business flow processing for business flow method of NONE.
7987    END IF;
7988 
7989    --
7990    -- call analytical criteria
7991    --
7992    
7993    --
7994    -- call description
7995    --
7996    
7997 xla_ae_lines_pkg.SetLineDescription(
7998    p_ae_header_id => l_ae_header_id
7999   ,p_description  => Description_2 (
8000      p_application_id         => p_application_id
8001    , p_ae_header_id           => l_ae_header_id 
8002 , p_source_3 => p_source_3
8003    )
8004 );
8005 
8006 
8007    --
8008    -- call ADRs
8009    -- Bug 4922099
8010    --
8011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8012         (NVL(l_actual_upg_option, 'N') = 'O') OR
8013         (NVL(l_enc_upg_option, 'N') = 'O')
8014       )
8015    THEN
8016    NULL;
8017    --
8018    --
8019    
8020   l_ccid := AcctDerRule_9(
8021            p_application_id           => p_application_id
8022          , p_ae_header_id             => l_ae_header_id 
8023 , p_source_9 => p_source_9
8024          , x_transaction_coa_id       => l_adr_transaction_coa_id
8025          , x_accounting_coa_id        => l_adr_accounting_coa_id
8026          , x_value_type_code          => l_adr_value_type_code
8027          , p_side                     => 'NA'
8028    );
8029 
8030    xla_ae_lines_pkg.set_ccid(
8031     p_code_combination_id          => l_ccid
8032   , p_value_type_code              => l_adr_value_type_code
8033   , p_transaction_coa_id           => l_adr_transaction_coa_id
8034   , p_accounting_coa_id            => l_adr_accounting_coa_id
8035   , p_adr_code                     => 'FV_ACCOUNT_RULE'
8036   , p_adr_type_code                => 'S'
8037   , p_component_type               => l_component_type
8038   , p_component_code               => l_component_code
8039   , p_component_type_code          => l_component_type_code
8040   , p_component_appl_id            => l_component_appl_id
8041   , p_amb_context_code             => l_amb_context_code
8042   , p_side                         => 'NA'
8043   );
8044 
8045 
8046    l_segment := AcctDerRule_5(
8047            p_application_id           => p_application_id
8048          , p_ae_header_id             => l_ae_header_id 
8049 , p_source_7 => p_source_7
8050 , p_source_8 => p_source_8
8051          , x_transaction_coa_id       => l_adr_transaction_coa_id
8052          , x_accounting_coa_id        => l_adr_accounting_coa_id
8053          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
8054          , x_flex_value_set_id        => l_adr_flex_value_set_id
8055          , x_value_type_code          => l_adr_value_type_code
8056          , x_value_combination_id     => l_adr_value_combination_id
8057          , x_value_segment_code       => l_adr_value_segment_code
8058          , p_side                     => 'NA'
8059          , p_override_seg_flag        => 'Y'
8060    );
8061 
8062    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
8063 
8064       xla_ae_lines_pkg.set_segment(
8065           p_to_segment_code         => 'GL_ACCOUNT'
8066         , p_segment_value           => l_segment
8067         , p_from_segment_code       => l_adr_value_segment_code
8068         , p_from_combination_id     => l_adr_value_combination_id
8069         , p_value_type_code         => l_adr_value_type_code
8070         , p_transaction_coa_id      => l_adr_transaction_coa_id
8071         , p_accounting_coa_id       => l_adr_accounting_coa_id
8072         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
8073         , p_flex_value_set_id       => l_adr_flex_value_set_id
8074         , p_adr_code                => 'FV_46X002'
8075         , p_adr_type_code           => 'S'
8076         , p_component_type          => l_component_type
8077         , p_component_code          => l_component_code
8078         , p_component_type_code     => l_component_type_code
8079         , p_component_appl_id       => l_component_appl_id
8080         , p_amb_context_code        => l_amb_context_code
8081         , p_entity_code             => 'PURCHASE_ORDER'
8082         , p_event_class_code        => 'PO_PA'
8083         , p_side                    => 'NA'
8084         );
8085 
8086   END IF;
8087 
8088    --
8089    --
8090    END IF;
8091    --
8092    -- Bug 4922099
8093    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8094           (NVL(l_enc_upg_option, 'N') = 'O')
8095         ) AND
8096         (l_bflow_method_code = 'PRIOR_ENTRY')
8097       )
8098    THEN
8099       IF
8100       --
8101       1 = 2
8102       --
8103       THEN
8104       xla_accounting_err_pkg.build_message
8105                                     (p_appli_s_name            => 'XLA'
8106                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8107                                     ,p_token_1                 => 'LINE_NUMBER'
8108                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8109                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8110                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8111                                                                              l_component_type
8112                                                                             ,l_component_code
8113                                                                             ,l_component_type_code
8114                                                                             ,l_component_appl_id
8115                                                                             ,l_amb_context_code
8116                                                                             ,l_entity_code
8117                                                                             ,l_event_class_code
8118                                                                            )
8119                                     ,p_token_3                 => 'OWNER'
8120                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8121                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8122                                                                           ,p_lookup_code    => l_component_type_code
8123                                                                          )
8124                                     ,p_token_4                 => 'PRODUCT_NAME'
8125                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8126                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8127                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8128                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8129                                     ,p_ae_header_id            =>  NULL
8130                                        );
8131 
8132         IF (C_LEVEL_ERROR>= g_log_level) THEN
8133                  trace
8134                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8135                       ,p_level    => C_LEVEL_ERROR
8136                       ,p_module   => l_log_module);
8137         END IF;
8138       END IF;
8139    END IF;
8140    --
8141    --
8142    ------------------------------------------------------------------------------------------------
8143    -- 4219869 Business Flow
8144    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8145    -- Prior Entry.  Currently, the following code is always generated.
8146    ------------------------------------------------------------------------------------------------
8147    XLA_AE_LINES_PKG.ValidateCurrentLine;
8148 
8149    ------------------------------------------------------------------------------------
8150    -- 4219869 Business Flow
8151    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8152    ------------------------------------------------------------------------------------
8153    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8154 
8155    ----------------------------------------------------------------------------------
8156    -- 4219869 Business Flow
8157    -- Update journal entry status -- Need to generate this within IF <condition>
8158    ----------------------------------------------------------------------------------
8159    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8160          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8161          ,p_balance_type_code => l_balance_type_code
8162          );
8163 
8164    -------------------------------------------------------------------------------------------
8165    -- 4262811 - Generate the Accrual Reversal lines
8166    -------------------------------------------------------------------------------------------
8167    BEGIN
8168       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8169                               (g_array_event(p_event_id).array_value_num('header_index'));
8170       IF l_acc_rev_flag IS NULL THEN
8171          l_acc_rev_flag := 'N';
8172       END IF;
8173    EXCEPTION
8174       WHEN OTHERS THEN
8175          l_acc_rev_flag := 'N';
8176    END;
8177    --
8178    IF (l_acc_rev_flag = 'Y') THEN
8179 
8180        -- 4645092  ------------------------------------------------------------------------------
8181        -- To allow MPA report to determine if it should generate report process
8182        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8183        ------------------------------------------------------------------------------------------
8184 
8185        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8186        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8187 
8188        --
8189        -- Update the line information that should be overwritten
8190        --
8191        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8192                                          p_header_num   => 1);
8193        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8194 
8195        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8196 
8197        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8198           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8199        END IF;
8200 
8201       --
8202       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8203       --
8204       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8205           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8206       ELSE
8207           ---------------------------------------------------------------------------------------------------
8208           -- 4262811a Switch Sign
8209           ---------------------------------------------------------------------------------------------------
8210           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8211           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8212                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8213           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8214                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8215           -- 5132302
8216           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8217                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8218 
8219       END IF;
8220 
8221       -- 4955764
8222       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8223       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8224 
8225 
8226       XLA_AE_LINES_PKG.ValidateCurrentLine;
8227       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8228 
8229       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8230                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8231                ,p_balance_type_code => l_balance_type_code);
8232 
8233    END IF;
8234 
8235    -----------------------------------------------------------------------------------------
8236    -- 4262811 Multiperiod Accounting
8237    -----------------------------------------------------------------------------------------
8238      -- No MPA option is assigned.
8239 
8240 
8241 END IF;
8242 END IF;
8243 --
8244 
8245 --
8246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8247    trace
8248       (p_msg      => 'END of AcctLineType_23'
8249       ,p_level    => C_LEVEL_PROCEDURE
8250       ,p_module   => l_log_module);
8251 END IF;
8252 --
8253 EXCEPTION
8254   WHEN xla_exceptions_pkg.application_exception THEN
8255       RAISE;
8256   WHEN OTHERS THEN
8257        xla_exceptions_pkg.raise_message
8258            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_23');
8259 END AcctLineType_23;
8260 --
8261 
8262 ---------------------------------------
8263 --
8264 -- PRIVATE FUNCTION
8265 --         AcctLineType_24
8266 --
8267 ---------------------------------------
8268 PROCEDURE AcctLineType_24 (
8269   p_application_id        IN NUMBER
8270  ,p_event_id              IN NUMBER
8271  ,p_calculate_acctd_flag  IN VARCHAR2
8272  ,p_calculate_g_l_flag    IN VARCHAR2
8273  ,p_actual_flag           IN OUT VARCHAR2
8274  ,p_balance_type_code     OUT VARCHAR2
8275  ,p_gain_or_loss_ref      OUT VARCHAR2
8276  
8277 --Journal entry Line Description
8278  , p_source_3            IN VARCHAR2
8279 --Budget Account
8280  , p_source_9            IN NUMBER
8281 --Federal Prior Year Flag
8282  , p_source_10            IN VARCHAR2
8283 --Federal Net Pya Adj Amt
8284  , p_source_11            IN NUMBER
8285 --Main Or Backing Code
8286  , p_source_13            IN VARCHAR2
8287 --PO Distribution Type
8288  , p_source_14            IN VARCHAR2
8289 --Accounting Reversal Flag
8290  , p_source_15            IN VARCHAR2
8291 --Distribution Link Type
8292  , p_source_17            IN VARCHAR2
8293 --PO Distribution Identifier
8294  , p_source_19            IN NUMBER
8295 --PO Header Identifier
8296  , p_source_20            IN NUMBER
8297 --Applied To Application Identifier
8298  , p_source_21            IN NUMBER
8299 --Applied To Distribution Link Type
8300  , p_source_22            IN VARCHAR2
8301 --Applied To Entity Code
8302  , p_source_23            IN VARCHAR2
8303 --Applied To Distribution Identifier 1
8304  , p_source_24            IN NUMBER
8305 --Applied To Header Identifier 1
8306  , p_source_25            IN NUMBER
8307 --Entered Amount
8308  , p_source_26            IN NUMBER
8309 --Currency Code
8310  , p_source_27            IN VARCHAR2
8311 --Accounted Amount
8312  , p_source_28            IN NUMBER
8313 --PO Encumbrance Upgrade Option
8314  , p_source_29            IN VARCHAR2
8315 --JFMIP Reference
8316  , p_source_31            IN VARCHAR2
8317 --PO Upgrade Encumbrance Type Identifier
8318  , p_source_32            IN NUMBER
8319 --Currency Conversion Date
8320  , p_source_35            IN DATE
8321 --Currency Conversion Rate
8322  , p_source_36            IN NUMBER
8323 --Currency Conversion Type
8324  , p_source_37            IN VARCHAR2
8325 --Federal Pya Differential Amt
8326  , p_source_38            IN NUMBER
8327 )
8328 IS
8329 
8330 l_component_type              VARCHAR2(80);
8331 l_component_code              VARCHAR2(30);
8332 l_component_type_code         VARCHAR2(1);
8333 l_component_appl_id           INTEGER;
8334 l_amb_context_code            VARCHAR2(30);
8335 l_entity_code                 VARCHAR2(30);
8336 l_event_class_code            VARCHAR2(30);
8337 l_ae_header_id                NUMBER;
8338 l_event_type_code             VARCHAR2(30);
8339 l_line_definition_code        VARCHAR2(30);
8340 l_line_definition_owner_code  VARCHAR2(1);
8341 --
8342 -- adr variables
8343 l_segment                     VARCHAR2(30);
8344 l_ccid                        NUMBER;
8345 l_adr_transaction_coa_id      NUMBER;
8346 l_adr_accounting_coa_id       NUMBER;
8347 l_adr_flexfield_segment_code  VARCHAR2(30);
8348 l_adr_flex_value_set_id       NUMBER;
8349 l_adr_value_type_code         VARCHAR2(30);
8350 l_adr_value_combination_id    NUMBER;
8351 l_adr_value_segment_code      VARCHAR2(30);
8352 
8353 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8354 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8355 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8356 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8357 
8358 -- 4262811 Variables ------------------------------------------------------------------------------------------
8359 l_entered_amt_idx             NUMBER;
8360 l_accted_amt_idx              NUMBER;
8361 l_acc_rev_flag                VARCHAR2(1);
8362 l_accrual_line_num            NUMBER;
8363 l_tmp_amt                     NUMBER;
8364 l_acc_rev_natural_side_code   VARCHAR2(1);
8365 
8366 l_num_entries                 NUMBER;
8367 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8368 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8369 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8370 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8371 l_recog_line_1                NUMBER;
8372 l_recog_line_2                NUMBER;
8373 
8374 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8375 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8376 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8377 
8378 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8379 
8380 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8381 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8382 
8383 ---------------------------------------------------------------------------------------------------------------
8384 
8385 
8386 --
8387 -- bulk performance
8388 --
8389 l_balance_type_code           VARCHAR2(1);
8390 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8391 l_log_module                  VARCHAR2(240);
8392 
8393 --
8394 -- Upgrade strategy
8395 --
8396 l_actual_upg_option           VARCHAR2(1);
8397 l_enc_upg_option           VARCHAR2(1);
8398 
8399 --
8400 BEGIN
8401 --
8402 IF g_log_enabled THEN
8403       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
8404 END IF;
8405 --
8406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8407 
8408       trace
8409          (p_msg      => 'BEGIN of AcctLineType_24'
8410          ,p_level    => C_LEVEL_PROCEDURE
8411          ,p_module   => l_log_module);
8412 
8413 END IF;
8414 --
8415 l_component_type             := 'AMB_JLT';
8416 l_component_code             := 'FV_PO_PYA_DIFF_RESERVE_CR';
8417 l_component_type_code        := 'S';
8418 l_component_appl_id          :=  201;
8419 l_amb_context_code           := 'DEFAULT';
8420 l_entity_code                := 'PURCHASE_ORDER';
8421 l_event_class_code           := 'PO_PA';
8422 l_event_type_code            := 'PO_PA_ALL';
8423 l_line_definition_owner_code := 'S';
8424 l_line_definition_code       := 'FV_PO_ALL';
8425 --
8426 l_balance_type_code          := 'A';
8427 l_segment                     := NULL;
8428 l_ccid                        := NULL;
8429 l_adr_transaction_coa_id      := NULL;
8430 l_adr_accounting_coa_id       := NULL;
8431 l_adr_flexfield_segment_code  := NULL;
8432 l_adr_flex_value_set_id       := NULL;
8433 l_adr_value_type_code         := NULL;
8434 l_adr_value_combination_id    := NULL;
8435 l_adr_value_segment_code      := NULL;
8436 
8437 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8438 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
8439 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8440 l_budgetary_control_flag     := 'Y';
8441 
8442 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8443 l_bflow_applied_to_amt       := NULL; -- 5132302
8444 l_entered_amt_idx            := NULL;          -- 4262811
8445 l_accted_amt_idx             := NULL;          -- 4262811
8446 l_acc_rev_flag               := NULL;          -- 4262811
8447 l_accrual_line_num           := NULL;          -- 4262811
8448 l_tmp_amt                    := NULL;          -- 4262811
8449 --
8450  
8451 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8452     l_balance_type_code <> 'B' THEN
8453 IF NVL(
8454 xla_ae_sources_pkg.GetSystemSourceChar(
8455    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8456  , p_source_type_code      => 'Y'
8457  , p_source_application_id =>  602
8458 ),'
8459 ') =  'PO_PA_RESERVED' AND 
8460 NVL(p_source_13,'
8461 ') =  'M' AND 
8462 (NVL(p_source_14,'
8463 ') <>  'AGREEMENT' OR 
8464 p_source_14 IS NULL ) AND 
8465 NVL(p_source_10,'
8466 ') =  'Y' AND 
8467 p_source_11 >  0
8468  THEN 
8469 
8470    --
8471    XLA_AE_LINES_PKG.SetNewLine;
8472 
8473    p_balance_type_code          := l_balance_type_code;
8474    -- set the flag so later we will know whether the gain loss line needs to be created
8475    
8476    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8477      p_actual_flag :='A';
8478    END IF;
8479 
8480    --
8481    -- bulk performance
8482    --
8483    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8484                                       p_header_num   => 0); -- 4262811
8485    --
8486    -- set accounting line options
8487    --
8488    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8489            p_natural_side_code          => 'C'
8490          , p_gain_or_loss_flag          => 'N'
8491          , p_gl_transfer_mode_code      => 'S'
8492          , p_acct_entry_type_code       => 'A'
8493          , p_switch_side_flag           => 'Y'
8494          , p_merge_duplicate_code       => 'N'
8495          );
8496    --
8497    l_acc_rev_natural_side_code := 'D';  -- 4262811
8498    -- 
8499    --
8500    -- set accounting line type info
8501    --
8502    xla_ae_lines_pkg.SetAcctLineType
8503       (p_component_type             => l_component_type
8504       ,p_event_type_code            => l_event_type_code
8505       ,p_line_definition_owner_code => l_line_definition_owner_code
8506       ,p_line_definition_code       => l_line_definition_code
8507       ,p_accounting_line_code       => l_component_code
8508       ,p_accounting_line_type_code  => l_component_type_code
8509       ,p_accounting_line_appl_id    => l_component_appl_id
8510       ,p_amb_context_code           => l_amb_context_code
8511       ,p_entity_code                => l_entity_code
8512       ,p_event_class_code           => l_event_class_code);
8513    --
8514    -- set accounting class
8515    --
8516    xla_ae_lines_pkg.SetAcctClass(
8517            p_accounting_class_code  => 'PURCHASE_ORDER'
8518          , p_ae_header_id           => l_ae_header_id
8519          );
8520 
8521    --
8522    -- set rounding class
8523    --
8524    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8525                       'PURCHASE_ORDER';
8526 
8527    --
8528    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8529    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8530    --
8531    -- bulk performance
8532    --
8533    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8534 
8535    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8536       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8537 
8538    -- 4955764
8539    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8540       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8541 
8542    -- 4458381 Public Sector Enh
8543    
8544    --
8545    -- set accounting attributes for the line type
8546    --
8547    l_entered_amt_idx := 23;
8548    l_accted_amt_idx  := 28;
8549    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8550    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8551    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
8552    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
8553    l_rec_acct_attrs.array_num_value(2)  := 
8554 xla_ae_sources_pkg.GetSystemSourceNum(
8555    p_source_code           => 'XLA_EVENT_APPL_ID'
8556  , p_source_type_code      => 'Y'
8557  , p_source_application_id =>  602
8558 );
8559    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
8560    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
8561    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
8562    l_rec_acct_attrs.array_char_value(4)  := 
8563 xla_ae_sources_pkg.GetSystemSourceChar(
8564    p_source_code           => 'XLA_ENTITY_CODE'
8565  , p_source_type_code      => 'Y'
8566  , p_source_application_id =>  602
8567 );
8568    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
8569    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
8570    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
8571    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
8572    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
8573    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
8574    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8575    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
8576    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
8577    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
8578    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
8579    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
8580    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8581    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
8582    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
8583    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
8584    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
8585    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
8586    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
8587    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
8588    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
8589    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
8590    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
8591    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
8592    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
8593    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
8594    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
8595    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
8596    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
8597    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
8598    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
8599    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
8600    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
8601    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
8602    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
8603    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
8604    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
8605    l_rec_acct_attrs.array_num_value(23)  := p_source_38;
8606    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
8607    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
8608    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
8609    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
8610    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
8611    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
8612    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
8613    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
8614    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
8615    l_rec_acct_attrs.array_num_value(28)  := p_source_38;
8616    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
8617    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
8618    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
8619    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
8620    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
8621    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
8622    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
8623    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
8624    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
8625    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
8626    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
8627    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
8628 
8629    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8630    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8631 
8632    ---------------------------------------------------------------------------------------------------------------
8633    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8634    ---------------------------------------------------------------------------------------------------------------
8635    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8636 
8637    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8638    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8639 
8640    IF xla_accounting_cache_pkg.GetValueChar
8641          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8642          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8643    AND l_bflow_method_code = 'PRIOR_ENTRY'
8644 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8645    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8646          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8647        )
8648    THEN
8649          xla_ae_lines_pkg.BflowUpgEntry
8650            (p_business_method_code    => l_bflow_method_code
8651            ,p_business_class_code     => l_bflow_class_code
8652            ,p_balance_type            => l_balance_type_code);
8653    ELSE
8654       NULL;
8655 -- No business flow processing for business flow method of NONE.
8656    END IF;
8657 
8658    --
8659    -- call analytical criteria
8660    --
8661    
8662    --
8663    -- call description
8664    --
8665    
8666 xla_ae_lines_pkg.SetLineDescription(
8667    p_ae_header_id => l_ae_header_id
8668   ,p_description  => Description_2 (
8669      p_application_id         => p_application_id
8670    , p_ae_header_id           => l_ae_header_id 
8671 , p_source_3 => p_source_3
8672    )
8673 );
8674 
8675 
8676    --
8677    -- call ADRs
8678    -- Bug 4922099
8679    --
8680    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8681         (NVL(l_actual_upg_option, 'N') = 'O') OR
8682         (NVL(l_enc_upg_option, 'N') = 'O')
8683       )
8684    THEN
8685    NULL;
8686    --
8687    --
8688    
8689   l_ccid := AcctDerRule_9(
8690            p_application_id           => p_application_id
8691          , p_ae_header_id             => l_ae_header_id 
8692 , p_source_9 => p_source_9
8693          , x_transaction_coa_id       => l_adr_transaction_coa_id
8694          , x_accounting_coa_id        => l_adr_accounting_coa_id
8695          , x_value_type_code          => l_adr_value_type_code
8696          , p_side                     => 'NA'
8697    );
8698 
8699    xla_ae_lines_pkg.set_ccid(
8700     p_code_combination_id          => l_ccid
8701   , p_value_type_code              => l_adr_value_type_code
8702   , p_transaction_coa_id           => l_adr_transaction_coa_id
8703   , p_accounting_coa_id            => l_adr_accounting_coa_id
8704   , p_adr_code                     => 'FV_ACCOUNT_RULE'
8705   , p_adr_type_code                => 'S'
8706   , p_component_type               => l_component_type
8707   , p_component_code               => l_component_code
8708   , p_component_type_code          => l_component_type_code
8709   , p_component_appl_id            => l_component_appl_id
8710   , p_amb_context_code             => l_amb_context_code
8711   , p_side                         => 'NA'
8712   );
8713 
8714 
8715    l_segment := AcctDerRule_7(
8716            p_application_id           => p_application_id
8717          , p_ae_header_id             => l_ae_header_id 
8718          , x_transaction_coa_id       => l_adr_transaction_coa_id
8719          , x_accounting_coa_id        => l_adr_accounting_coa_id
8720          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
8721          , x_flex_value_set_id        => l_adr_flex_value_set_id
8722          , x_value_type_code          => l_adr_value_type_code
8723          , x_value_combination_id     => l_adr_value_combination_id
8724          , x_value_segment_code       => l_adr_value_segment_code
8725          , p_side                     => 'NA'
8726          , p_override_seg_flag        => 'Y'
8727    );
8728 
8729    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
8730 
8731       xla_ae_lines_pkg.set_segment(
8732           p_to_segment_code         => 'GL_ACCOUNT'
8733         , p_segment_value           => l_segment
8734         , p_from_segment_code       => l_adr_value_segment_code
8735         , p_from_combination_id     => l_adr_value_combination_id
8736         , p_value_type_code         => l_adr_value_type_code
8737         , p_transaction_coa_id      => l_adr_transaction_coa_id
8738         , p_accounting_coa_id       => l_adr_accounting_coa_id
8739         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
8740         , p_flex_value_set_id       => l_adr_flex_value_set_id
8741         , p_adr_code                => 'FV_488101_PURCHASING'
8742         , p_adr_type_code           => 'S'
8743         , p_component_type          => l_component_type
8744         , p_component_code          => l_component_code
8745         , p_component_type_code     => l_component_type_code
8746         , p_component_appl_id       => l_component_appl_id
8747         , p_amb_context_code        => l_amb_context_code
8748         , p_entity_code             => 'PURCHASE_ORDER'
8749         , p_event_class_code        => 'PO_PA'
8750         , p_side                    => 'NA'
8751         );
8752 
8753   END IF;
8754 
8755    --
8756    --
8757    END IF;
8758    --
8759    -- Bug 4922099
8760    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8761           (NVL(l_enc_upg_option, 'N') = 'O')
8762         ) AND
8763         (l_bflow_method_code = 'PRIOR_ENTRY')
8764       )
8765    THEN
8766       IF
8767       --
8768       1 = 2
8769       --
8770       THEN
8771       xla_accounting_err_pkg.build_message
8772                                     (p_appli_s_name            => 'XLA'
8773                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8774                                     ,p_token_1                 => 'LINE_NUMBER'
8775                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8776                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8777                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8778                                                                              l_component_type
8779                                                                             ,l_component_code
8780                                                                             ,l_component_type_code
8781                                                                             ,l_component_appl_id
8782                                                                             ,l_amb_context_code
8783                                                                             ,l_entity_code
8784                                                                             ,l_event_class_code
8785                                                                            )
8786                                     ,p_token_3                 => 'OWNER'
8787                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8788                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8789                                                                           ,p_lookup_code    => l_component_type_code
8790                                                                          )
8791                                     ,p_token_4                 => 'PRODUCT_NAME'
8792                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8793                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8794                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8795                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8796                                     ,p_ae_header_id            =>  NULL
8797                                        );
8798 
8799         IF (C_LEVEL_ERROR>= g_log_level) THEN
8800                  trace
8801                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8802                       ,p_level    => C_LEVEL_ERROR
8803                       ,p_module   => l_log_module);
8804         END IF;
8805       END IF;
8806    END IF;
8807    --
8808    --
8809    ------------------------------------------------------------------------------------------------
8810    -- 4219869 Business Flow
8811    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8812    -- Prior Entry.  Currently, the following code is always generated.
8813    ------------------------------------------------------------------------------------------------
8814    XLA_AE_LINES_PKG.ValidateCurrentLine;
8815 
8816    ------------------------------------------------------------------------------------
8817    -- 4219869 Business Flow
8818    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8819    ------------------------------------------------------------------------------------
8820    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8821 
8822    ----------------------------------------------------------------------------------
8823    -- 4219869 Business Flow
8824    -- Update journal entry status -- Need to generate this within IF <condition>
8825    ----------------------------------------------------------------------------------
8826    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8827          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8828          ,p_balance_type_code => l_balance_type_code
8829          );
8830 
8831    -------------------------------------------------------------------------------------------
8832    -- 4262811 - Generate the Accrual Reversal lines
8833    -------------------------------------------------------------------------------------------
8834    BEGIN
8835       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8836                               (g_array_event(p_event_id).array_value_num('header_index'));
8837       IF l_acc_rev_flag IS NULL THEN
8838          l_acc_rev_flag := 'N';
8839       END IF;
8840    EXCEPTION
8841       WHEN OTHERS THEN
8842          l_acc_rev_flag := 'N';
8843    END;
8844    --
8845    IF (l_acc_rev_flag = 'Y') THEN
8846 
8847        -- 4645092  ------------------------------------------------------------------------------
8848        -- To allow MPA report to determine if it should generate report process
8849        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8850        ------------------------------------------------------------------------------------------
8851 
8852        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8853        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8854 
8855        --
8856        -- Update the line information that should be overwritten
8857        --
8858        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8859                                          p_header_num   => 1);
8860        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8861 
8862        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8863 
8864        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8865           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8866        END IF;
8867 
8868       --
8869       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8870       --
8871       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8872           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8873       ELSE
8874           ---------------------------------------------------------------------------------------------------
8875           -- 4262811a Switch Sign
8876           ---------------------------------------------------------------------------------------------------
8877           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8878           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8879                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8880           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8881                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8882           -- 5132302
8883           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8884                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8885 
8886       END IF;
8887 
8888       -- 4955764
8889       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8890       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8891 
8892 
8893       XLA_AE_LINES_PKG.ValidateCurrentLine;
8894       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8895 
8896       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8897                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8898                ,p_balance_type_code => l_balance_type_code);
8899 
8900    END IF;
8901 
8902    -----------------------------------------------------------------------------------------
8903    -- 4262811 Multiperiod Accounting
8904    -----------------------------------------------------------------------------------------
8905      -- No MPA option is assigned.
8906 
8907 
8908 END IF;
8909 END IF;
8910 --
8911 
8912 --
8913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8914    trace
8915       (p_msg      => 'END of AcctLineType_24'
8916       ,p_level    => C_LEVEL_PROCEDURE
8917       ,p_module   => l_log_module);
8918 END IF;
8919 --
8920 EXCEPTION
8921   WHEN xla_exceptions_pkg.application_exception THEN
8922       RAISE;
8923   WHEN OTHERS THEN
8924        xla_exceptions_pkg.raise_message
8925            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_24');
8926 END AcctLineType_24;
8927 --
8928 
8929 ---------------------------------------
8930 --
8931 -- PRIVATE FUNCTION
8932 --         AcctLineType_25
8933 --
8934 ---------------------------------------
8935 PROCEDURE AcctLineType_25 (
8936   p_application_id        IN NUMBER
8937  ,p_event_id              IN NUMBER
8938  ,p_calculate_acctd_flag  IN VARCHAR2
8939  ,p_calculate_g_l_flag    IN VARCHAR2
8940  ,p_actual_flag           IN OUT VARCHAR2
8941  ,p_balance_type_code     OUT VARCHAR2
8942  ,p_gain_or_loss_ref      OUT VARCHAR2
8943  
8944 --Journal entry Line Description
8945  , p_source_3            IN VARCHAR2
8946 --Federal Fund Category
8947  , p_source_7            IN VARCHAR2
8948 --Federal Fund Expired Status
8949  , p_source_8            IN VARCHAR2
8950 --Budget Account
8951  , p_source_9            IN NUMBER
8952 --Federal Prior Year Flag
8953  , p_source_10            IN VARCHAR2
8954 --Federal Net Pya Adj Amt
8955  , p_source_11            IN NUMBER
8956 --Main Or Backing Code
8957  , p_source_13            IN VARCHAR2
8958 --PO Distribution Type
8959  , p_source_14            IN VARCHAR2
8960 --Accounting Reversal Flag
8961  , p_source_15            IN VARCHAR2
8962 --Distribution Link Type
8963  , p_source_17            IN VARCHAR2
8964 --PO Distribution Identifier
8965  , p_source_19            IN NUMBER
8966 --PO Header Identifier
8967  , p_source_20            IN NUMBER
8968 --Applied To Application Identifier
8969  , p_source_21            IN NUMBER
8970 --Applied To Distribution Link Type
8971  , p_source_22            IN VARCHAR2
8972 --Applied To Entity Code
8973  , p_source_23            IN VARCHAR2
8974 --Applied To Distribution Identifier 1
8975  , p_source_24            IN NUMBER
8976 --Applied To Header Identifier 1
8977  , p_source_25            IN NUMBER
8978 --Entered Amount
8979  , p_source_26            IN NUMBER
8980 --Currency Code
8981  , p_source_27            IN VARCHAR2
8982 --Accounted Amount
8983  , p_source_28            IN NUMBER
8984 --PO Encumbrance Upgrade Option
8985  , p_source_29            IN VARCHAR2
8986 --JFMIP Reference
8987  , p_source_31            IN VARCHAR2
8988 --PO Upgrade Encumbrance Type Identifier
8989  , p_source_32            IN NUMBER
8990 --Currency Conversion Date
8991  , p_source_35            IN DATE
8992 --Currency Conversion Rate
8993  , p_source_36            IN NUMBER
8994 --Currency Conversion Type
8995  , p_source_37            IN VARCHAR2
8996 --Federal Pya Differential Amt
8997  , p_source_38            IN NUMBER
8998 )
8999 IS
9000 
9001 l_component_type              VARCHAR2(80);
9002 l_component_code              VARCHAR2(30);
9003 l_component_type_code         VARCHAR2(1);
9004 l_component_appl_id           INTEGER;
9005 l_amb_context_code            VARCHAR2(30);
9006 l_entity_code                 VARCHAR2(30);
9007 l_event_class_code            VARCHAR2(30);
9008 l_ae_header_id                NUMBER;
9009 l_event_type_code             VARCHAR2(30);
9010 l_line_definition_code        VARCHAR2(30);
9011 l_line_definition_owner_code  VARCHAR2(1);
9012 --
9013 -- adr variables
9014 l_segment                     VARCHAR2(30);
9015 l_ccid                        NUMBER;
9016 l_adr_transaction_coa_id      NUMBER;
9017 l_adr_accounting_coa_id       NUMBER;
9018 l_adr_flexfield_segment_code  VARCHAR2(30);
9019 l_adr_flex_value_set_id       NUMBER;
9020 l_adr_value_type_code         VARCHAR2(30);
9021 l_adr_value_combination_id    NUMBER;
9022 l_adr_value_segment_code      VARCHAR2(30);
9023 
9024 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9025 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9026 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9027 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9028 
9029 -- 4262811 Variables ------------------------------------------------------------------------------------------
9030 l_entered_amt_idx             NUMBER;
9031 l_accted_amt_idx              NUMBER;
9032 l_acc_rev_flag                VARCHAR2(1);
9033 l_accrual_line_num            NUMBER;
9034 l_tmp_amt                     NUMBER;
9035 l_acc_rev_natural_side_code   VARCHAR2(1);
9036 
9037 l_num_entries                 NUMBER;
9038 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9039 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9040 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9041 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9042 l_recog_line_1                NUMBER;
9043 l_recog_line_2                NUMBER;
9044 
9045 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9046 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9047 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9048 
9049 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9050 
9051 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9052 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9053 
9054 ---------------------------------------------------------------------------------------------------------------
9055 
9056 
9057 --
9058 -- bulk performance
9059 --
9060 l_balance_type_code           VARCHAR2(1);
9061 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9062 l_log_module                  VARCHAR2(240);
9063 
9064 --
9065 -- Upgrade strategy
9066 --
9067 l_actual_upg_option           VARCHAR2(1);
9068 l_enc_upg_option           VARCHAR2(1);
9069 
9070 --
9071 BEGIN
9072 --
9073 IF g_log_enabled THEN
9074       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
9075 END IF;
9076 --
9077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9078 
9079       trace
9080          (p_msg      => 'BEGIN of AcctLineType_25'
9081          ,p_level    => C_LEVEL_PROCEDURE
9082          ,p_module   => l_log_module);
9083 
9084 END IF;
9085 --
9086 l_component_type             := 'AMB_JLT';
9087 l_component_code             := 'FV_PO_PYA_DIFF_RESERVE_DR';
9088 l_component_type_code        := 'S';
9089 l_component_appl_id          :=  201;
9090 l_amb_context_code           := 'DEFAULT';
9091 l_entity_code                := 'PURCHASE_ORDER';
9092 l_event_class_code           := 'PO_PA';
9093 l_event_type_code            := 'PO_PA_ALL';
9094 l_line_definition_owner_code := 'S';
9095 l_line_definition_code       := 'FV_PO_ALL';
9096 --
9097 l_balance_type_code          := 'A';
9098 l_segment                     := NULL;
9099 l_ccid                        := NULL;
9100 l_adr_transaction_coa_id      := NULL;
9101 l_adr_accounting_coa_id       := NULL;
9102 l_adr_flexfield_segment_code  := NULL;
9103 l_adr_flex_value_set_id       := NULL;
9104 l_adr_value_type_code         := NULL;
9105 l_adr_value_combination_id    := NULL;
9106 l_adr_value_segment_code      := NULL;
9107 
9108 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9109 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
9110 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9111 l_budgetary_control_flag     := 'Y';
9112 
9113 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9114 l_bflow_applied_to_amt       := NULL; -- 5132302
9115 l_entered_amt_idx            := NULL;          -- 4262811
9116 l_accted_amt_idx             := NULL;          -- 4262811
9117 l_acc_rev_flag               := NULL;          -- 4262811
9118 l_accrual_line_num           := NULL;          -- 4262811
9119 l_tmp_amt                    := NULL;          -- 4262811
9120 --
9121  
9122 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9123     l_balance_type_code <> 'B' THEN
9124 IF NVL(
9125 xla_ae_sources_pkg.GetSystemSourceChar(
9126    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9127  , p_source_type_code      => 'Y'
9128  , p_source_application_id =>  602
9129 ),'
9130 ') =  'PO_PA_RESERVED' AND 
9131 NVL(p_source_13,'
9132 ') =  'M' AND 
9133 (NVL(p_source_14,'
9134 ') <>  'AGREEMENT' OR 
9135 p_source_14 IS NULL ) AND 
9136 NVL(p_source_10,'
9137 ') =  'Y' AND 
9138 NVL(p_source_11,9E125) <>  0 AND 
9139 p_source_11 IS NOT NULL 
9140  THEN 
9141 
9142    --
9143    XLA_AE_LINES_PKG.SetNewLine;
9144 
9145    p_balance_type_code          := l_balance_type_code;
9146    -- set the flag so later we will know whether the gain loss line needs to be created
9147    
9148    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9149      p_actual_flag :='A';
9150    END IF;
9151 
9152    --
9153    -- bulk performance
9154    --
9155    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9156                                       p_header_num   => 0); -- 4262811
9157    --
9158    -- set accounting line options
9159    --
9160    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9161            p_natural_side_code          => 'D'
9162          , p_gain_or_loss_flag          => 'N'
9163          , p_gl_transfer_mode_code      => 'S'
9164          , p_acct_entry_type_code       => 'A'
9165          , p_switch_side_flag           => 'Y'
9166          , p_merge_duplicate_code       => 'N'
9167          );
9168    --
9169    l_acc_rev_natural_side_code := 'C';  -- 4262811
9170    -- 
9171    --
9172    -- set accounting line type info
9173    --
9174    xla_ae_lines_pkg.SetAcctLineType
9175       (p_component_type             => l_component_type
9176       ,p_event_type_code            => l_event_type_code
9177       ,p_line_definition_owner_code => l_line_definition_owner_code
9178       ,p_line_definition_code       => l_line_definition_code
9179       ,p_accounting_line_code       => l_component_code
9180       ,p_accounting_line_type_code  => l_component_type_code
9181       ,p_accounting_line_appl_id    => l_component_appl_id
9182       ,p_amb_context_code           => l_amb_context_code
9183       ,p_entity_code                => l_entity_code
9184       ,p_event_class_code           => l_event_class_code);
9185    --
9186    -- set accounting class
9187    --
9188    xla_ae_lines_pkg.SetAcctClass(
9189            p_accounting_class_code  => 'PURCHASE_ORDER'
9190          , p_ae_header_id           => l_ae_header_id
9191          );
9192 
9193    --
9194    -- set rounding class
9195    --
9196    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9197                       'PURCHASE_ORDER';
9198 
9199    --
9200    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9201    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9202    --
9203    -- bulk performance
9204    --
9205    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9206 
9207    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9208       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9209 
9210    -- 4955764
9211    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9212       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9213 
9214    -- 4458381 Public Sector Enh
9215    
9216    --
9217    -- set accounting attributes for the line type
9218    --
9219    l_entered_amt_idx := 23;
9220    l_accted_amt_idx  := 28;
9221    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9222    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9223    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
9224    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
9225    l_rec_acct_attrs.array_num_value(2)  := 
9226 xla_ae_sources_pkg.GetSystemSourceNum(
9227    p_source_code           => 'XLA_EVENT_APPL_ID'
9228  , p_source_type_code      => 'Y'
9229  , p_source_application_id =>  602
9230 );
9231    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
9232    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
9233    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
9234    l_rec_acct_attrs.array_char_value(4)  := 
9235 xla_ae_sources_pkg.GetSystemSourceChar(
9236    p_source_code           => 'XLA_ENTITY_CODE'
9237  , p_source_type_code      => 'Y'
9238  , p_source_application_id =>  602
9239 );
9240    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
9241    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
9242    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
9243    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
9244    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
9245    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
9246    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9247    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
9248    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
9249    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
9250    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
9251    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
9252    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9253    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
9254    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
9255    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
9256    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
9257    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
9258    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
9259    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
9260    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
9261    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
9262    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
9263    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
9264    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
9265    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
9266    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
9267    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
9268    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
9269    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
9270    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
9271    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
9272    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
9273    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
9274    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
9275    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
9276    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
9277    l_rec_acct_attrs.array_num_value(23)  := p_source_38;
9278    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
9279    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
9280    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
9281    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
9282    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
9283    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
9284    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
9285    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
9286    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
9287    l_rec_acct_attrs.array_num_value(28)  := p_source_38;
9288    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
9289    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
9290    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
9291    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
9292    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
9293    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
9294    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
9295    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
9296    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
9297    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
9298    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
9299    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
9300 
9301    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9302    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9303 
9304    ---------------------------------------------------------------------------------------------------------------
9305    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9306    ---------------------------------------------------------------------------------------------------------------
9307    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9308 
9309    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9310    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9311 
9312    IF xla_accounting_cache_pkg.GetValueChar
9313          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9314          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9315    AND l_bflow_method_code = 'PRIOR_ENTRY'
9316 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9317    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9318          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9319        )
9320    THEN
9321          xla_ae_lines_pkg.BflowUpgEntry
9322            (p_business_method_code    => l_bflow_method_code
9323            ,p_business_class_code     => l_bflow_class_code
9324            ,p_balance_type            => l_balance_type_code);
9325    ELSE
9326       NULL;
9327 -- No business flow processing for business flow method of NONE.
9328    END IF;
9329 
9330    --
9331    -- call analytical criteria
9332    --
9333    
9334    --
9335    -- call description
9336    --
9337    
9338 xla_ae_lines_pkg.SetLineDescription(
9339    p_ae_header_id => l_ae_header_id
9340   ,p_description  => Description_2 (
9341      p_application_id         => p_application_id
9342    , p_ae_header_id           => l_ae_header_id 
9343 , p_source_3 => p_source_3
9344    )
9345 );
9346 
9347 
9348    --
9349    -- call ADRs
9350    -- Bug 4922099
9351    --
9352    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9353         (NVL(l_actual_upg_option, 'N') = 'O') OR
9354         (NVL(l_enc_upg_option, 'N') = 'O')
9355       )
9356    THEN
9357    NULL;
9358    --
9359    --
9360    
9361   l_ccid := AcctDerRule_9(
9362            p_application_id           => p_application_id
9363          , p_ae_header_id             => l_ae_header_id 
9364 , p_source_9 => p_source_9
9365          , x_transaction_coa_id       => l_adr_transaction_coa_id
9366          , x_accounting_coa_id        => l_adr_accounting_coa_id
9367          , x_value_type_code          => l_adr_value_type_code
9368          , p_side                     => 'NA'
9369    );
9370 
9371    xla_ae_lines_pkg.set_ccid(
9372     p_code_combination_id          => l_ccid
9373   , p_value_type_code              => l_adr_value_type_code
9374   , p_transaction_coa_id           => l_adr_transaction_coa_id
9375   , p_accounting_coa_id            => l_adr_accounting_coa_id
9376   , p_adr_code                     => 'FV_ACCOUNT_RULE'
9377   , p_adr_type_code                => 'S'
9378   , p_component_type               => l_component_type
9379   , p_component_code               => l_component_code
9380   , p_component_type_code          => l_component_type_code
9381   , p_component_appl_id            => l_component_appl_id
9382   , p_amb_context_code             => l_amb_context_code
9383   , p_side                         => 'NA'
9384   );
9385 
9386 
9387    l_segment := AcctDerRule_12(
9388            p_application_id           => p_application_id
9389          , p_ae_header_id             => l_ae_header_id 
9390 , p_source_7 => p_source_7
9391 , p_source_8 => p_source_8
9392 , p_source_10 => p_source_10
9393 , p_source_11 => p_source_11
9394          , x_transaction_coa_id       => l_adr_transaction_coa_id
9395          , x_accounting_coa_id        => l_adr_accounting_coa_id
9396          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
9397          , x_flex_value_set_id        => l_adr_flex_value_set_id
9398          , x_value_type_code          => l_adr_value_type_code
9399          , x_value_combination_id     => l_adr_value_combination_id
9400          , x_value_segment_code       => l_adr_value_segment_code
9401          , p_side                     => 'NA'
9402          , p_override_seg_flag        => 'Y'
9403    );
9404 
9405    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
9406 
9407       xla_ae_lines_pkg.set_segment(
9408           p_to_segment_code         => 'GL_ACCOUNT'
9409         , p_segment_value           => l_segment
9410         , p_from_segment_code       => l_adr_value_segment_code
9411         , p_from_combination_id     => l_adr_value_combination_id
9412         , p_value_type_code         => l_adr_value_type_code
9413         , p_transaction_coa_id      => l_adr_transaction_coa_id
9414         , p_accounting_coa_id       => l_adr_accounting_coa_id
9415         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
9416         , p_flex_value_set_id       => l_adr_flex_value_set_id
9417         , p_adr_code                => 'FV_PYA_46X002_487101'
9418         , p_adr_type_code           => 'S'
9419         , p_component_type          => l_component_type
9420         , p_component_code          => l_component_code
9421         , p_component_type_code     => l_component_type_code
9422         , p_component_appl_id       => l_component_appl_id
9423         , p_amb_context_code        => l_amb_context_code
9424         , p_entity_code             => 'PURCHASE_ORDER'
9425         , p_event_class_code        => 'PO_PA'
9426         , p_side                    => 'NA'
9427         );
9428 
9429   END IF;
9430 
9431    --
9432    --
9433    END IF;
9434    --
9435    -- Bug 4922099
9436    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9437           (NVL(l_enc_upg_option, 'N') = 'O')
9438         ) AND
9439         (l_bflow_method_code = 'PRIOR_ENTRY')
9440       )
9441    THEN
9442       IF
9443       --
9444       1 = 2
9445       --
9446       THEN
9447       xla_accounting_err_pkg.build_message
9448                                     (p_appli_s_name            => 'XLA'
9449                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9450                                     ,p_token_1                 => 'LINE_NUMBER'
9451                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9452                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9453                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9454                                                                              l_component_type
9455                                                                             ,l_component_code
9456                                                                             ,l_component_type_code
9457                                                                             ,l_component_appl_id
9458                                                                             ,l_amb_context_code
9459                                                                             ,l_entity_code
9460                                                                             ,l_event_class_code
9461                                                                            )
9462                                     ,p_token_3                 => 'OWNER'
9463                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9464                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9465                                                                           ,p_lookup_code    => l_component_type_code
9466                                                                          )
9467                                     ,p_token_4                 => 'PRODUCT_NAME'
9468                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9469                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9470                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9471                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9472                                     ,p_ae_header_id            =>  NULL
9473                                        );
9474 
9475         IF (C_LEVEL_ERROR>= g_log_level) THEN
9476                  trace
9477                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9478                       ,p_level    => C_LEVEL_ERROR
9479                       ,p_module   => l_log_module);
9480         END IF;
9481       END IF;
9482    END IF;
9483    --
9484    --
9485    ------------------------------------------------------------------------------------------------
9486    -- 4219869 Business Flow
9487    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9488    -- Prior Entry.  Currently, the following code is always generated.
9489    ------------------------------------------------------------------------------------------------
9490    XLA_AE_LINES_PKG.ValidateCurrentLine;
9491 
9492    ------------------------------------------------------------------------------------
9493    -- 4219869 Business Flow
9494    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9495    ------------------------------------------------------------------------------------
9496    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9497 
9498    ----------------------------------------------------------------------------------
9499    -- 4219869 Business Flow
9500    -- Update journal entry status -- Need to generate this within IF <condition>
9501    ----------------------------------------------------------------------------------
9502    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9503          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9504          ,p_balance_type_code => l_balance_type_code
9505          );
9506 
9507    -------------------------------------------------------------------------------------------
9508    -- 4262811 - Generate the Accrual Reversal lines
9509    -------------------------------------------------------------------------------------------
9510    BEGIN
9511       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9512                               (g_array_event(p_event_id).array_value_num('header_index'));
9513       IF l_acc_rev_flag IS NULL THEN
9514          l_acc_rev_flag := 'N';
9515       END IF;
9516    EXCEPTION
9517       WHEN OTHERS THEN
9518          l_acc_rev_flag := 'N';
9519    END;
9520    --
9521    IF (l_acc_rev_flag = 'Y') THEN
9522 
9523        -- 4645092  ------------------------------------------------------------------------------
9524        -- To allow MPA report to determine if it should generate report process
9525        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9526        ------------------------------------------------------------------------------------------
9527 
9528        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9529        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9530 
9531        --
9532        -- Update the line information that should be overwritten
9533        --
9534        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9535                                          p_header_num   => 1);
9536        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9537 
9538        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9539 
9540        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9541           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9542        END IF;
9543 
9544       --
9545       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9546       --
9547       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9548           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9549       ELSE
9550           ---------------------------------------------------------------------------------------------------
9551           -- 4262811a Switch Sign
9552           ---------------------------------------------------------------------------------------------------
9553           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9554           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9555                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9556           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9557                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9558           -- 5132302
9559           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9560                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9561 
9562       END IF;
9563 
9564       -- 4955764
9565       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9566       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9567 
9568 
9569       XLA_AE_LINES_PKG.ValidateCurrentLine;
9570       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9571 
9572       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9573                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9574                ,p_balance_type_code => l_balance_type_code);
9575 
9576    END IF;
9577 
9578    -----------------------------------------------------------------------------------------
9579    -- 4262811 Multiperiod Accounting
9580    -----------------------------------------------------------------------------------------
9581      -- No MPA option is assigned.
9582 
9583 
9584 END IF;
9585 END IF;
9586 --
9587 
9588 --
9589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9590    trace
9591       (p_msg      => 'END of AcctLineType_25'
9592       ,p_level    => C_LEVEL_PROCEDURE
9593       ,p_module   => l_log_module);
9594 END IF;
9595 --
9596 EXCEPTION
9597   WHEN xla_exceptions_pkg.application_exception THEN
9598       RAISE;
9599   WHEN OTHERS THEN
9600        xla_exceptions_pkg.raise_message
9601            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_25');
9602 END AcctLineType_25;
9603 --
9604 
9605 ---------------------------------------
9606 --
9607 -- PRIVATE FUNCTION
9608 --         AcctLineType_26
9609 --
9610 ---------------------------------------
9611 PROCEDURE AcctLineType_26 (
9612   p_application_id        IN NUMBER
9613  ,p_event_id              IN NUMBER
9614  ,p_calculate_acctd_flag  IN VARCHAR2
9615  ,p_calculate_g_l_flag    IN VARCHAR2
9616  ,p_actual_flag           IN OUT VARCHAR2
9617  ,p_balance_type_code     OUT VARCHAR2
9618  ,p_gain_or_loss_ref      OUT VARCHAR2
9619  
9620 --Journal entry Line Description
9621  , p_source_3            IN VARCHAR2
9622 --Budget Account
9623  , p_source_9            IN NUMBER
9624 --Federal Prior Year Flag
9625  , p_source_10            IN VARCHAR2
9626 --Federal Net Pya Adj Amt
9627  , p_source_11            IN NUMBER
9628 --Main Or Backing Code
9629  , p_source_13            IN VARCHAR2
9630 --PO Distribution Type
9631  , p_source_14            IN VARCHAR2
9632 --Accounting Reversal Flag
9633  , p_source_15            IN VARCHAR2
9634 --Distribution Link Type
9635  , p_source_17            IN VARCHAR2
9636 --PO Distribution Identifier
9637  , p_source_19            IN NUMBER
9638 --PO Header Identifier
9639  , p_source_20            IN NUMBER
9640 --Applied To Application Identifier
9641  , p_source_21            IN NUMBER
9642 --Applied To Distribution Link Type
9643  , p_source_22            IN VARCHAR2
9644 --Applied To Entity Code
9645  , p_source_23            IN VARCHAR2
9646 --Applied To Distribution Identifier 1
9647  , p_source_24            IN NUMBER
9648 --Applied To Header Identifier 1
9649  , p_source_25            IN NUMBER
9650 --Entered Amount
9651  , p_source_26            IN NUMBER
9652 --Currency Code
9653  , p_source_27            IN VARCHAR2
9654 --Accounted Amount
9655  , p_source_28            IN NUMBER
9656 --PO Encumbrance Upgrade Option
9657  , p_source_29            IN VARCHAR2
9658 --JFMIP Reference
9659  , p_source_31            IN VARCHAR2
9660 --PO Upgrade Encumbrance Type Identifier
9661  , p_source_32            IN NUMBER
9662 --Currency Conversion Date
9663  , p_source_35            IN DATE
9664 --Currency Conversion Rate
9665  , p_source_36            IN NUMBER
9666 --Currency Conversion Type
9667  , p_source_37            IN VARCHAR2
9668 --Federal Anticipated Amt
9669  , p_source_39            IN NUMBER
9670 )
9671 IS
9672 
9673 l_component_type              VARCHAR2(80);
9674 l_component_code              VARCHAR2(30);
9675 l_component_type_code         VARCHAR2(1);
9676 l_component_appl_id           INTEGER;
9677 l_amb_context_code            VARCHAR2(30);
9678 l_entity_code                 VARCHAR2(30);
9679 l_event_class_code            VARCHAR2(30);
9680 l_ae_header_id                NUMBER;
9681 l_event_type_code             VARCHAR2(30);
9682 l_line_definition_code        VARCHAR2(30);
9683 l_line_definition_owner_code  VARCHAR2(1);
9684 --
9685 -- adr variables
9686 l_segment                     VARCHAR2(30);
9687 l_ccid                        NUMBER;
9688 l_adr_transaction_coa_id      NUMBER;
9689 l_adr_accounting_coa_id       NUMBER;
9690 l_adr_flexfield_segment_code  VARCHAR2(30);
9691 l_adr_flex_value_set_id       NUMBER;
9692 l_adr_value_type_code         VARCHAR2(30);
9693 l_adr_value_combination_id    NUMBER;
9694 l_adr_value_segment_code      VARCHAR2(30);
9695 
9696 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9697 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9698 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9699 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9700 
9701 -- 4262811 Variables ------------------------------------------------------------------------------------------
9702 l_entered_amt_idx             NUMBER;
9703 l_accted_amt_idx              NUMBER;
9704 l_acc_rev_flag                VARCHAR2(1);
9705 l_accrual_line_num            NUMBER;
9706 l_tmp_amt                     NUMBER;
9707 l_acc_rev_natural_side_code   VARCHAR2(1);
9708 
9709 l_num_entries                 NUMBER;
9710 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9711 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9712 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9713 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9714 l_recog_line_1                NUMBER;
9715 l_recog_line_2                NUMBER;
9716 
9717 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9718 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9719 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9720 
9721 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9722 
9723 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9724 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9725 
9726 ---------------------------------------------------------------------------------------------------------------
9727 
9728 
9729 --
9730 -- bulk performance
9731 --
9732 l_balance_type_code           VARCHAR2(1);
9733 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9734 l_log_module                  VARCHAR2(240);
9735 
9736 --
9737 -- Upgrade strategy
9738 --
9739 l_actual_upg_option           VARCHAR2(1);
9740 l_enc_upg_option           VARCHAR2(1);
9741 
9742 --
9743 BEGIN
9744 --
9745 IF g_log_enabled THEN
9746       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
9747 END IF;
9748 --
9749 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9750 
9751       trace
9752          (p_msg      => 'BEGIN of AcctLineType_26'
9753          ,p_level    => C_LEVEL_PROCEDURE
9754          ,p_module   => l_log_module);
9755 
9756 END IF;
9757 --
9758 l_component_type             := 'AMB_JLT';
9759 l_component_code             := 'FV_PO_PYA_DW_ANTICIAPTED_CR';
9760 l_component_type_code        := 'S';
9761 l_component_appl_id          :=  201;
9762 l_amb_context_code           := 'DEFAULT';
9763 l_entity_code                := 'PURCHASE_ORDER';
9764 l_event_class_code           := 'PO_PA';
9765 l_event_type_code            := 'PO_PA_ALL';
9766 l_line_definition_owner_code := 'S';
9767 l_line_definition_code       := 'FV_PO_ALL';
9768 --
9769 l_balance_type_code          := 'A';
9770 l_segment                     := NULL;
9771 l_ccid                        := NULL;
9772 l_adr_transaction_coa_id      := NULL;
9773 l_adr_accounting_coa_id       := NULL;
9774 l_adr_flexfield_segment_code  := NULL;
9775 l_adr_flex_value_set_id       := NULL;
9776 l_adr_value_type_code         := NULL;
9777 l_adr_value_combination_id    := NULL;
9778 l_adr_value_segment_code      := NULL;
9779 
9780 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9781 l_bflow_class_code           := '';    -- 4219869 Business Flow
9782 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9783 l_budgetary_control_flag     := 'Y';
9784 
9785 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9786 l_bflow_applied_to_amt       := NULL; -- 5132302
9787 l_entered_amt_idx            := NULL;          -- 4262811
9788 l_accted_amt_idx             := NULL;          -- 4262811
9789 l_acc_rev_flag               := NULL;          -- 4262811
9790 l_accrual_line_num           := NULL;          -- 4262811
9791 l_tmp_amt                    := NULL;          -- 4262811
9792 --
9793  
9794 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9795     l_balance_type_code <> 'B' THEN
9796 IF NVL(
9797 xla_ae_sources_pkg.GetSystemSourceChar(
9798    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9799  , p_source_type_code      => 'Y'
9800  , p_source_application_id =>  602
9801 ),'
9802 ') =  'PO_PA_RESERVED' AND 
9803 NVL(p_source_13,'
9804 ') =  'M' AND 
9805 (NVL(p_source_14,'
9806 ') <>  'AGREEMENT' OR 
9807 p_source_14 IS NULL ) AND 
9808 NVL(p_source_10,'
9809 ') =  'Y' AND 
9810 p_source_11 <  0 AND 
9811 NVL(p_source_39,9E125) <>  0 AND 
9812 p_source_39 IS NOT NULL 
9813  THEN 
9814 
9815    --
9816    XLA_AE_LINES_PKG.SetNewLine;
9817 
9818    p_balance_type_code          := l_balance_type_code;
9819    -- set the flag so later we will know whether the gain loss line needs to be created
9820    
9821    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9822      p_actual_flag :='A';
9823    END IF;
9824 
9825    --
9826    -- bulk performance
9827    --
9828    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9829                                       p_header_num   => 0); -- 4262811
9830    --
9831    -- set accounting line options
9832    --
9833    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9834            p_natural_side_code          => 'C'
9835          , p_gain_or_loss_flag          => 'N'
9836          , p_gl_transfer_mode_code      => 'S'
9837          , p_acct_entry_type_code       => 'A'
9838          , p_switch_side_flag           => 'Y'
9839          , p_merge_duplicate_code       => 'N'
9840          );
9841    --
9842    l_acc_rev_natural_side_code := 'D';  -- 4262811
9843    -- 
9844    --
9845    -- set accounting line type info
9846    --
9847    xla_ae_lines_pkg.SetAcctLineType
9848       (p_component_type             => l_component_type
9849       ,p_event_type_code            => l_event_type_code
9850       ,p_line_definition_owner_code => l_line_definition_owner_code
9851       ,p_line_definition_code       => l_line_definition_code
9852       ,p_accounting_line_code       => l_component_code
9853       ,p_accounting_line_type_code  => l_component_type_code
9854       ,p_accounting_line_appl_id    => l_component_appl_id
9855       ,p_amb_context_code           => l_amb_context_code
9856       ,p_entity_code                => l_entity_code
9857       ,p_event_class_code           => l_event_class_code);
9858    --
9859    -- set accounting class
9860    --
9861    xla_ae_lines_pkg.SetAcctClass(
9862            p_accounting_class_code  => 'PURCHASE_ORDER'
9863          , p_ae_header_id           => l_ae_header_id
9864          );
9865 
9866    --
9867    -- set rounding class
9868    --
9869    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9870                       'PURCHASE_ORDER';
9871 
9872    --
9873    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9874    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9875    --
9876    -- bulk performance
9877    --
9878    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9879 
9880    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9881       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9882 
9883    -- 4955764
9884    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9885       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9886 
9887    -- 4458381 Public Sector Enh
9888    
9889    --
9890    -- set accounting attributes for the line type
9891    --
9892    l_entered_amt_idx := 23;
9893    l_accted_amt_idx  := 28;
9894    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9895    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9896    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
9897    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
9898    l_rec_acct_attrs.array_num_value(2)  := 
9899 xla_ae_sources_pkg.GetSystemSourceNum(
9900    p_source_code           => 'XLA_EVENT_APPL_ID'
9901  , p_source_type_code      => 'Y'
9902  , p_source_application_id =>  602
9903 );
9904    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
9905    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
9906    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
9907    l_rec_acct_attrs.array_char_value(4)  := 
9908 xla_ae_sources_pkg.GetSystemSourceChar(
9909    p_source_code           => 'XLA_ENTITY_CODE'
9910  , p_source_type_code      => 'Y'
9911  , p_source_application_id =>  602
9912 );
9913    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
9914    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
9915    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
9916    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
9917    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
9918    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
9919    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9920    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
9921    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
9922    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
9923    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
9924    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
9925    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9926    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
9927    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
9928    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
9929    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
9930    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
9931    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
9932    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
9933    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
9934    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
9935    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
9936    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
9937    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
9938    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
9939    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
9940    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
9941    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
9942    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
9943    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
9944    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
9945    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
9946    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
9947    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
9948    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
9949    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
9950    l_rec_acct_attrs.array_num_value(23)  := p_source_39;
9951    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
9952    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
9953    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
9954    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
9955    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
9956    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
9957    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
9958    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
9959    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
9960    l_rec_acct_attrs.array_num_value(28)  := p_source_39;
9961    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
9962    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
9963    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
9964    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
9965    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
9966    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
9967    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
9968    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
9969    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
9970    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
9971    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
9972    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
9973 
9974    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9975    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9976 
9977    ---------------------------------------------------------------------------------------------------------------
9978    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9979    ---------------------------------------------------------------------------------------------------------------
9980    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9981 
9982    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9983    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9984 
9985    IF xla_accounting_cache_pkg.GetValueChar
9986          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9987          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9988    AND l_bflow_method_code = 'PRIOR_ENTRY'
9989 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9990    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9991          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9992        )
9993    THEN
9994          xla_ae_lines_pkg.BflowUpgEntry
9995            (p_business_method_code    => l_bflow_method_code
9996            ,p_business_class_code     => l_bflow_class_code
9997            ,p_balance_type            => l_balance_type_code);
9998    ELSE
9999       NULL;
10000 -- No business flow processing for business flow method of NONE.
10001    END IF;
10002 
10003    --
10004    -- call analytical criteria
10005    --
10006    
10007    --
10008    -- call description
10009    --
10010    
10011 xla_ae_lines_pkg.SetLineDescription(
10012    p_ae_header_id => l_ae_header_id
10013   ,p_description  => Description_2 (
10014      p_application_id         => p_application_id
10015    , p_ae_header_id           => l_ae_header_id 
10016 , p_source_3 => p_source_3
10017    )
10018 );
10019 
10020 
10021    --
10022    -- call ADRs
10023    -- Bug 4922099
10024    --
10025    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10026         (NVL(l_actual_upg_option, 'N') = 'O') OR
10027         (NVL(l_enc_upg_option, 'N') = 'O')
10028       )
10029    THEN
10030    NULL;
10031    --
10032    --
10033    
10034   l_ccid := AcctDerRule_9(
10035            p_application_id           => p_application_id
10036          , p_ae_header_id             => l_ae_header_id 
10037 , p_source_9 => p_source_9
10038          , x_transaction_coa_id       => l_adr_transaction_coa_id
10039          , x_accounting_coa_id        => l_adr_accounting_coa_id
10040          , x_value_type_code          => l_adr_value_type_code
10041          , p_side                     => 'NA'
10042    );
10043 
10044    xla_ae_lines_pkg.set_ccid(
10045     p_code_combination_id          => l_ccid
10046   , p_value_type_code              => l_adr_value_type_code
10047   , p_transaction_coa_id           => l_adr_transaction_coa_id
10048   , p_accounting_coa_id            => l_adr_accounting_coa_id
10049   , p_adr_code                     => 'FV_ACCOUNT_RULE'
10050   , p_adr_type_code                => 'S'
10051   , p_component_type               => l_component_type
10052   , p_component_code               => l_component_code
10053   , p_component_type_code          => l_component_type_code
10054   , p_component_appl_id            => l_component_appl_id
10055   , p_amb_context_code             => l_amb_context_code
10056   , p_side                         => 'NA'
10057   );
10058 
10059 
10060    l_segment := AcctDerRule_10(
10061            p_application_id           => p_application_id
10062          , p_ae_header_id             => l_ae_header_id 
10063          , x_transaction_coa_id       => l_adr_transaction_coa_id
10064          , x_accounting_coa_id        => l_adr_accounting_coa_id
10065          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
10066          , x_flex_value_set_id        => l_adr_flex_value_set_id
10067          , x_value_type_code          => l_adr_value_type_code
10068          , x_value_combination_id     => l_adr_value_combination_id
10069          , x_value_segment_code       => l_adr_value_segment_code
10070          , p_side                     => 'NA'
10071          , p_override_seg_flag        => 'Y'
10072    );
10073 
10074    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
10075 
10076       xla_ae_lines_pkg.set_segment(
10077           p_to_segment_code         => 'GL_ACCOUNT'
10078         , p_segment_value           => l_segment
10079         , p_from_segment_code       => l_adr_value_segment_code
10080         , p_from_combination_id     => l_adr_value_combination_id
10081         , p_value_type_code         => l_adr_value_type_code
10082         , p_transaction_coa_id      => l_adr_transaction_coa_id
10083         , p_accounting_coa_id       => l_adr_accounting_coa_id
10084         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
10085         , p_flex_value_set_id       => l_adr_flex_value_set_id
10086         , p_adr_code                => 'FV_PYA_431002_ANTCIPATED'
10087         , p_adr_type_code           => 'S'
10088         , p_component_type          => l_component_type
10089         , p_component_code          => l_component_code
10090         , p_component_type_code     => l_component_type_code
10091         , p_component_appl_id       => l_component_appl_id
10092         , p_amb_context_code        => l_amb_context_code
10093         , p_entity_code             => 'PURCHASE_ORDER'
10094         , p_event_class_code        => 'PO_PA'
10095         , p_side                    => 'NA'
10096         );
10097 
10098   END IF;
10099 
10100    --
10101    --
10102    END IF;
10103    --
10104    -- Bug 4922099
10105    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10106           (NVL(l_enc_upg_option, 'N') = 'O')
10107         ) AND
10108         (l_bflow_method_code = 'PRIOR_ENTRY')
10109       )
10110    THEN
10111       IF
10112       --
10113       1 = 2
10114       --
10115       THEN
10116       xla_accounting_err_pkg.build_message
10117                                     (p_appli_s_name            => 'XLA'
10118                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10119                                     ,p_token_1                 => 'LINE_NUMBER'
10120                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10121                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10122                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10123                                                                              l_component_type
10124                                                                             ,l_component_code
10125                                                                             ,l_component_type_code
10126                                                                             ,l_component_appl_id
10127                                                                             ,l_amb_context_code
10128                                                                             ,l_entity_code
10129                                                                             ,l_event_class_code
10130                                                                            )
10131                                     ,p_token_3                 => 'OWNER'
10132                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10133                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10134                                                                           ,p_lookup_code    => l_component_type_code
10135                                                                          )
10136                                     ,p_token_4                 => 'PRODUCT_NAME'
10137                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10138                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10139                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10140                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10141                                     ,p_ae_header_id            =>  NULL
10142                                        );
10143 
10144         IF (C_LEVEL_ERROR>= g_log_level) THEN
10145                  trace
10146                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10147                       ,p_level    => C_LEVEL_ERROR
10148                       ,p_module   => l_log_module);
10149         END IF;
10150       END IF;
10151    END IF;
10152    --
10153    --
10154    ------------------------------------------------------------------------------------------------
10155    -- 4219869 Business Flow
10156    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10157    -- Prior Entry.  Currently, the following code is always generated.
10158    ------------------------------------------------------------------------------------------------
10159    XLA_AE_LINES_PKG.ValidateCurrentLine;
10160 
10161    ------------------------------------------------------------------------------------
10162    -- 4219869 Business Flow
10163    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10164    ------------------------------------------------------------------------------------
10165    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10166 
10167    ----------------------------------------------------------------------------------
10168    -- 4219869 Business Flow
10169    -- Update journal entry status -- Need to generate this within IF <condition>
10170    ----------------------------------------------------------------------------------
10171    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10172          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10173          ,p_balance_type_code => l_balance_type_code
10174          );
10175 
10176    -------------------------------------------------------------------------------------------
10177    -- 4262811 - Generate the Accrual Reversal lines
10178    -------------------------------------------------------------------------------------------
10179    BEGIN
10180       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10181                               (g_array_event(p_event_id).array_value_num('header_index'));
10182       IF l_acc_rev_flag IS NULL THEN
10183          l_acc_rev_flag := 'N';
10184       END IF;
10185    EXCEPTION
10186       WHEN OTHERS THEN
10187          l_acc_rev_flag := 'N';
10188    END;
10189    --
10190    IF (l_acc_rev_flag = 'Y') THEN
10191 
10192        -- 4645092  ------------------------------------------------------------------------------
10193        -- To allow MPA report to determine if it should generate report process
10194        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10195        ------------------------------------------------------------------------------------------
10196 
10197        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10198        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10199 
10200        --
10201        -- Update the line information that should be overwritten
10202        --
10203        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10204                                          p_header_num   => 1);
10205        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10206 
10207        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10208 
10209        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10210           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10211        END IF;
10212 
10213       --
10214       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10215       --
10216       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10217           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10218       ELSE
10219           ---------------------------------------------------------------------------------------------------
10220           -- 4262811a Switch Sign
10221           ---------------------------------------------------------------------------------------------------
10222           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10223           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10224                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10225           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10226                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10227           -- 5132302
10228           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10229                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10230 
10231       END IF;
10232 
10233       -- 4955764
10234       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10235       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10236 
10237 
10238       XLA_AE_LINES_PKG.ValidateCurrentLine;
10239       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10240 
10241       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10242                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10243                ,p_balance_type_code => l_balance_type_code);
10244 
10245    END IF;
10246 
10247    -----------------------------------------------------------------------------------------
10248    -- 4262811 Multiperiod Accounting
10249    -----------------------------------------------------------------------------------------
10250      -- No MPA option is assigned.
10251 
10252 
10253 END IF;
10254 END IF;
10255 --
10256 
10257 --
10258 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10259    trace
10260       (p_msg      => 'END of AcctLineType_26'
10261       ,p_level    => C_LEVEL_PROCEDURE
10262       ,p_module   => l_log_module);
10263 END IF;
10264 --
10265 EXCEPTION
10266   WHEN xla_exceptions_pkg.application_exception THEN
10267       RAISE;
10268   WHEN OTHERS THEN
10269        xla_exceptions_pkg.raise_message
10270            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_26');
10271 END AcctLineType_26;
10272 --
10273 
10274 ---------------------------------------
10275 --
10276 -- PRIVATE FUNCTION
10277 --         AcctLineType_27
10278 --
10279 ---------------------------------------
10280 PROCEDURE AcctLineType_27 (
10281   p_application_id        IN NUMBER
10282  ,p_event_id              IN NUMBER
10283  ,p_calculate_acctd_flag  IN VARCHAR2
10284  ,p_calculate_g_l_flag    IN VARCHAR2
10285  ,p_actual_flag           IN OUT VARCHAR2
10286  ,p_balance_type_code     OUT VARCHAR2
10287  ,p_gain_or_loss_ref      OUT VARCHAR2
10288  
10289 --Journal entry Line Description
10290  , p_source_3            IN VARCHAR2
10291 --Federal Fund Expired Status
10292  , p_source_8            IN VARCHAR2
10293 --Budget Account
10294  , p_source_9            IN NUMBER
10295 --Federal Prior Year Flag
10296  , p_source_10            IN VARCHAR2
10297 --Federal Net Pya Adj Amt
10298  , p_source_11            IN NUMBER
10299 --Main Or Backing Code
10300  , p_source_13            IN VARCHAR2
10301 --PO Distribution Type
10302  , p_source_14            IN VARCHAR2
10303 --Accounting Reversal Flag
10304  , p_source_15            IN VARCHAR2
10305 --Distribution Link Type
10306  , p_source_17            IN VARCHAR2
10307 --PO Distribution Identifier
10308  , p_source_19            IN NUMBER
10309 --PO Header Identifier
10310  , p_source_20            IN NUMBER
10311 --Applied To Application Identifier
10312  , p_source_21            IN NUMBER
10313 --Applied To Distribution Link Type
10314  , p_source_22            IN VARCHAR2
10315 --Applied To Entity Code
10316  , p_source_23            IN VARCHAR2
10317 --Applied To Distribution Identifier 1
10318  , p_source_24            IN NUMBER
10319 --Applied To Header Identifier 1
10320  , p_source_25            IN NUMBER
10321 --Entered Amount
10322  , p_source_26            IN NUMBER
10323 --Currency Code
10324  , p_source_27            IN VARCHAR2
10325 --Accounted Amount
10326  , p_source_28            IN NUMBER
10327 --PO Encumbrance Upgrade Option
10328  , p_source_29            IN VARCHAR2
10329 --Federal Unanticipated Amt
10330  , p_source_30            IN NUMBER
10331 --JFMIP Reference
10332  , p_source_31            IN VARCHAR2
10333 --PO Upgrade Encumbrance Type Identifier
10334  , p_source_32            IN NUMBER
10335 --Currency Conversion Date
10336  , p_source_35            IN DATE
10337 --Currency Conversion Rate
10338  , p_source_36            IN NUMBER
10339 --Currency Conversion Type
10340  , p_source_37            IN VARCHAR2
10341 )
10342 IS
10343 
10344 l_component_type              VARCHAR2(80);
10345 l_component_code              VARCHAR2(30);
10346 l_component_type_code         VARCHAR2(1);
10347 l_component_appl_id           INTEGER;
10348 l_amb_context_code            VARCHAR2(30);
10349 l_entity_code                 VARCHAR2(30);
10350 l_event_class_code            VARCHAR2(30);
10351 l_ae_header_id                NUMBER;
10352 l_event_type_code             VARCHAR2(30);
10353 l_line_definition_code        VARCHAR2(30);
10354 l_line_definition_owner_code  VARCHAR2(1);
10355 --
10356 -- adr variables
10357 l_segment                     VARCHAR2(30);
10358 l_ccid                        NUMBER;
10359 l_adr_transaction_coa_id      NUMBER;
10360 l_adr_accounting_coa_id       NUMBER;
10361 l_adr_flexfield_segment_code  VARCHAR2(30);
10362 l_adr_flex_value_set_id       NUMBER;
10363 l_adr_value_type_code         VARCHAR2(30);
10364 l_adr_value_combination_id    NUMBER;
10365 l_adr_value_segment_code      VARCHAR2(30);
10366 
10367 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10368 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10369 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10370 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10371 
10372 -- 4262811 Variables ------------------------------------------------------------------------------------------
10373 l_entered_amt_idx             NUMBER;
10374 l_accted_amt_idx              NUMBER;
10375 l_acc_rev_flag                VARCHAR2(1);
10376 l_accrual_line_num            NUMBER;
10377 l_tmp_amt                     NUMBER;
10378 l_acc_rev_natural_side_code   VARCHAR2(1);
10379 
10380 l_num_entries                 NUMBER;
10381 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10382 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10383 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10384 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10385 l_recog_line_1                NUMBER;
10386 l_recog_line_2                NUMBER;
10387 
10388 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10389 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10390 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10391 
10392 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10393 
10394 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10395 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10396 
10397 ---------------------------------------------------------------------------------------------------------------
10398 
10399 
10400 --
10401 -- bulk performance
10402 --
10403 l_balance_type_code           VARCHAR2(1);
10404 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10405 l_log_module                  VARCHAR2(240);
10406 
10407 --
10408 -- Upgrade strategy
10409 --
10410 l_actual_upg_option           VARCHAR2(1);
10411 l_enc_upg_option           VARCHAR2(1);
10412 
10413 --
10414 BEGIN
10415 --
10416 IF g_log_enabled THEN
10417       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
10418 END IF;
10419 --
10420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10421 
10422       trace
10423          (p_msg      => 'BEGIN of AcctLineType_27'
10424          ,p_level    => C_LEVEL_PROCEDURE
10425          ,p_module   => l_log_module);
10426 
10427 END IF;
10428 --
10429 l_component_type             := 'AMB_JLT';
10430 l_component_code             := 'FV_PO_PYA_DW_UNANTICIPATED_CR';
10431 l_component_type_code        := 'S';
10432 l_component_appl_id          :=  201;
10433 l_amb_context_code           := 'DEFAULT';
10434 l_entity_code                := 'PURCHASE_ORDER';
10435 l_event_class_code           := 'PO_PA';
10436 l_event_type_code            := 'PO_PA_ALL';
10437 l_line_definition_owner_code := 'S';
10438 l_line_definition_code       := 'FV_PO_ALL';
10439 --
10440 l_balance_type_code          := 'A';
10441 l_segment                     := NULL;
10442 l_ccid                        := NULL;
10443 l_adr_transaction_coa_id      := NULL;
10444 l_adr_accounting_coa_id       := NULL;
10445 l_adr_flexfield_segment_code  := NULL;
10446 l_adr_flex_value_set_id       := NULL;
10447 l_adr_value_type_code         := NULL;
10448 l_adr_value_combination_id    := NULL;
10449 l_adr_value_segment_code      := NULL;
10450 
10451 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10452 l_bflow_class_code           := '';    -- 4219869 Business Flow
10453 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10454 l_budgetary_control_flag     := 'Y';
10455 
10456 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10457 l_bflow_applied_to_amt       := NULL; -- 5132302
10458 l_entered_amt_idx            := NULL;          -- 4262811
10459 l_accted_amt_idx             := NULL;          -- 4262811
10460 l_acc_rev_flag               := NULL;          -- 4262811
10461 l_accrual_line_num           := NULL;          -- 4262811
10462 l_tmp_amt                    := NULL;          -- 4262811
10463 --
10464  
10465 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10466     l_balance_type_code <> 'B' THEN
10467 IF NVL(
10468 xla_ae_sources_pkg.GetSystemSourceChar(
10469    p_source_code           => 'XLA_EVENT_TYPE_CODE'
10470  , p_source_type_code      => 'Y'
10471  , p_source_application_id =>  602
10472 ),'
10473 ') =  'PO_PA_RESERVED' AND 
10474 NVL(p_source_13,'
10475 ') =  'M' AND 
10476 (NVL(p_source_14,'
10477 ') <>  'AGREEMENT' OR 
10478 p_source_14 IS NULL ) AND 
10479 NVL(p_source_10,'
10480 ') =  'Y' AND 
10481 p_source_11 <  0 AND 
10482 NVL(p_source_30,9E125) <>  0 AND 
10483 p_source_30 IS NOT NULL 
10484  THEN 
10485 
10486    --
10487    XLA_AE_LINES_PKG.SetNewLine;
10488 
10489    p_balance_type_code          := l_balance_type_code;
10490    -- set the flag so later we will know whether the gain loss line needs to be created
10491    
10492    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10493      p_actual_flag :='A';
10494    END IF;
10495 
10496    --
10497    -- bulk performance
10498    --
10499    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10500                                       p_header_num   => 0); -- 4262811
10501    --
10502    -- set accounting line options
10503    --
10504    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10505            p_natural_side_code          => 'C'
10506          , p_gain_or_loss_flag          => 'N'
10507          , p_gl_transfer_mode_code      => 'S'
10508          , p_acct_entry_type_code       => 'A'
10509          , p_switch_side_flag           => 'Y'
10510          , p_merge_duplicate_code       => 'N'
10511          );
10512    --
10513    l_acc_rev_natural_side_code := 'D';  -- 4262811
10514    -- 
10515    --
10516    -- set accounting line type info
10517    --
10518    xla_ae_lines_pkg.SetAcctLineType
10519       (p_component_type             => l_component_type
10520       ,p_event_type_code            => l_event_type_code
10521       ,p_line_definition_owner_code => l_line_definition_owner_code
10522       ,p_line_definition_code       => l_line_definition_code
10523       ,p_accounting_line_code       => l_component_code
10524       ,p_accounting_line_type_code  => l_component_type_code
10525       ,p_accounting_line_appl_id    => l_component_appl_id
10526       ,p_amb_context_code           => l_amb_context_code
10527       ,p_entity_code                => l_entity_code
10528       ,p_event_class_code           => l_event_class_code);
10529    --
10530    -- set accounting class
10531    --
10532    xla_ae_lines_pkg.SetAcctClass(
10533            p_accounting_class_code  => 'PURCHASE_ORDER'
10534          , p_ae_header_id           => l_ae_header_id
10535          );
10536 
10537    --
10538    -- set rounding class
10539    --
10540    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10541                       'PURCHASE_ORDER';
10542 
10543    --
10544    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10545    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10546    --
10547    -- bulk performance
10548    --
10549    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10550 
10551    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10552       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10553 
10554    -- 4955764
10555    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10556       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10557 
10558    -- 4458381 Public Sector Enh
10559    
10560    --
10561    -- set accounting attributes for the line type
10562    --
10563    l_entered_amt_idx := 23;
10564    l_accted_amt_idx  := 28;
10565    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10566    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
10567    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
10568    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
10569    l_rec_acct_attrs.array_num_value(2)  := 
10570 xla_ae_sources_pkg.GetSystemSourceNum(
10571    p_source_code           => 'XLA_EVENT_APPL_ID'
10572  , p_source_type_code      => 'Y'
10573  , p_source_application_id =>  602
10574 );
10575    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
10576    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
10577    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
10578    l_rec_acct_attrs.array_char_value(4)  := 
10579 xla_ae_sources_pkg.GetSystemSourceChar(
10580    p_source_code           => 'XLA_ENTITY_CODE'
10581  , p_source_type_code      => 'Y'
10582  , p_source_application_id =>  602
10583 );
10584    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
10585    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
10586    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
10587    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
10588    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
10589    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
10590    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10591    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
10592    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
10593    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
10594    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
10595    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
10596    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10597    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
10598    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
10599    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
10600    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
10601    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
10602    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
10603    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
10604    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
10605    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
10606    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
10607    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
10608    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
10609    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
10610    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
10611    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
10612    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
10613    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
10614    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
10615    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
10616    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
10617    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
10618    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
10619    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
10620    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
10621    l_rec_acct_attrs.array_num_value(23)  := p_source_30;
10622    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
10623    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
10624    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
10625    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
10626    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
10627    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
10628    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
10629    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
10630    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
10631    l_rec_acct_attrs.array_num_value(28)  := p_source_30;
10632    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
10633    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
10634    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
10635    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
10636    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
10637    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
10638    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
10639    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
10640    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
10641    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
10642    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
10643    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
10644 
10645    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10646    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10647 
10648    ---------------------------------------------------------------------------------------------------------------
10649    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10650    ---------------------------------------------------------------------------------------------------------------
10651    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10652 
10653    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10654    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10655 
10656    IF xla_accounting_cache_pkg.GetValueChar
10657          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10658          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10659    AND l_bflow_method_code = 'PRIOR_ENTRY'
10660 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10661    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10662          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10663        )
10664    THEN
10665          xla_ae_lines_pkg.BflowUpgEntry
10666            (p_business_method_code    => l_bflow_method_code
10667            ,p_business_class_code     => l_bflow_class_code
10668            ,p_balance_type            => l_balance_type_code);
10669    ELSE
10670       NULL;
10671 -- No business flow processing for business flow method of NONE.
10672    END IF;
10673 
10674    --
10675    -- call analytical criteria
10676    --
10677    
10678    --
10679    -- call description
10680    --
10681    
10682 xla_ae_lines_pkg.SetLineDescription(
10683    p_ae_header_id => l_ae_header_id
10684   ,p_description  => Description_2 (
10685      p_application_id         => p_application_id
10686    , p_ae_header_id           => l_ae_header_id 
10687 , p_source_3 => p_source_3
10688    )
10689 );
10690 
10691 
10692    --
10693    -- call ADRs
10694    -- Bug 4922099
10695    --
10696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10697         (NVL(l_actual_upg_option, 'N') = 'O') OR
10698         (NVL(l_enc_upg_option, 'N') = 'O')
10699       )
10700    THEN
10701    NULL;
10702    --
10703    --
10704    
10705   l_ccid := AcctDerRule_9(
10706            p_application_id           => p_application_id
10707          , p_ae_header_id             => l_ae_header_id 
10708 , p_source_9 => p_source_9
10709          , x_transaction_coa_id       => l_adr_transaction_coa_id
10710          , x_accounting_coa_id        => l_adr_accounting_coa_id
10711          , x_value_type_code          => l_adr_value_type_code
10712          , p_side                     => 'NA'
10713    );
10714 
10715    xla_ae_lines_pkg.set_ccid(
10716     p_code_combination_id          => l_ccid
10717   , p_value_type_code              => l_adr_value_type_code
10718   , p_transaction_coa_id           => l_adr_transaction_coa_id
10719   , p_accounting_coa_id            => l_adr_accounting_coa_id
10720   , p_adr_code                     => 'FV_ACCOUNT_RULE'
10721   , p_adr_type_code                => 'S'
10722   , p_component_type               => l_component_type
10723   , p_component_code               => l_component_code
10724   , p_component_type_code          => l_component_type_code
10725   , p_component_appl_id            => l_component_appl_id
10726   , p_amb_context_code             => l_amb_context_code
10727   , p_side                         => 'NA'
10728   );
10729 
10730 
10731    l_segment := AcctDerRule_11(
10732            p_application_id           => p_application_id
10733          , p_ae_header_id             => l_ae_header_id 
10734 , p_source_8 => p_source_8
10735          , x_transaction_coa_id       => l_adr_transaction_coa_id
10736          , x_accounting_coa_id        => l_adr_accounting_coa_id
10737          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
10738          , x_flex_value_set_id        => l_adr_flex_value_set_id
10739          , x_value_type_code          => l_adr_value_type_code
10740          , x_value_combination_id     => l_adr_value_combination_id
10741          , x_value_segment_code       => l_adr_value_segment_code
10742          , p_side                     => 'NA'
10743          , p_override_seg_flag        => 'Y'
10744    );
10745 
10746    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
10747 
10748       xla_ae_lines_pkg.set_segment(
10749           p_to_segment_code         => 'GL_ACCOUNT'
10750         , p_segment_value           => l_segment
10751         , p_from_segment_code       => l_adr_value_segment_code
10752         , p_from_combination_id     => l_adr_value_combination_id
10753         , p_value_type_code         => l_adr_value_type_code
10754         , p_transaction_coa_id      => l_adr_transaction_coa_id
10755         , p_accounting_coa_id       => l_adr_accounting_coa_id
10756         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
10757         , p_flex_value_set_id       => l_adr_flex_value_set_id
10758         , p_adr_code                => 'FV_PYA_445002_UNANTICIPATED'
10759         , p_adr_type_code           => 'S'
10760         , p_component_type          => l_component_type
10761         , p_component_code          => l_component_code
10762         , p_component_type_code     => l_component_type_code
10763         , p_component_appl_id       => l_component_appl_id
10764         , p_amb_context_code        => l_amb_context_code
10765         , p_entity_code             => 'PURCHASE_ORDER'
10766         , p_event_class_code        => 'PO_PA'
10767         , p_side                    => 'NA'
10768         );
10769 
10770   END IF;
10771 
10772    --
10773    --
10774    END IF;
10775    --
10776    -- Bug 4922099
10777    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10778           (NVL(l_enc_upg_option, 'N') = 'O')
10779         ) AND
10780         (l_bflow_method_code = 'PRIOR_ENTRY')
10781       )
10782    THEN
10783       IF
10784       --
10785       1 = 2
10786       --
10787       THEN
10788       xla_accounting_err_pkg.build_message
10789                                     (p_appli_s_name            => 'XLA'
10790                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10791                                     ,p_token_1                 => 'LINE_NUMBER'
10792                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10793                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10794                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10795                                                                              l_component_type
10796                                                                             ,l_component_code
10797                                                                             ,l_component_type_code
10798                                                                             ,l_component_appl_id
10799                                                                             ,l_amb_context_code
10800                                                                             ,l_entity_code
10801                                                                             ,l_event_class_code
10802                                                                            )
10803                                     ,p_token_3                 => 'OWNER'
10804                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10805                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10806                                                                           ,p_lookup_code    => l_component_type_code
10807                                                                          )
10808                                     ,p_token_4                 => 'PRODUCT_NAME'
10809                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10810                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10811                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10812                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10813                                     ,p_ae_header_id            =>  NULL
10814                                        );
10815 
10816         IF (C_LEVEL_ERROR>= g_log_level) THEN
10817                  trace
10818                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10819                       ,p_level    => C_LEVEL_ERROR
10820                       ,p_module   => l_log_module);
10821         END IF;
10822       END IF;
10823    END IF;
10824    --
10825    --
10826    ------------------------------------------------------------------------------------------------
10827    -- 4219869 Business Flow
10828    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10829    -- Prior Entry.  Currently, the following code is always generated.
10830    ------------------------------------------------------------------------------------------------
10831    XLA_AE_LINES_PKG.ValidateCurrentLine;
10832 
10833    ------------------------------------------------------------------------------------
10834    -- 4219869 Business Flow
10835    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10836    ------------------------------------------------------------------------------------
10837    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10838 
10839    ----------------------------------------------------------------------------------
10840    -- 4219869 Business Flow
10841    -- Update journal entry status -- Need to generate this within IF <condition>
10842    ----------------------------------------------------------------------------------
10843    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10844          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10845          ,p_balance_type_code => l_balance_type_code
10846          );
10847 
10848    -------------------------------------------------------------------------------------------
10849    -- 4262811 - Generate the Accrual Reversal lines
10850    -------------------------------------------------------------------------------------------
10851    BEGIN
10852       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10853                               (g_array_event(p_event_id).array_value_num('header_index'));
10854       IF l_acc_rev_flag IS NULL THEN
10855          l_acc_rev_flag := 'N';
10856       END IF;
10857    EXCEPTION
10858       WHEN OTHERS THEN
10859          l_acc_rev_flag := 'N';
10860    END;
10861    --
10862    IF (l_acc_rev_flag = 'Y') THEN
10863 
10864        -- 4645092  ------------------------------------------------------------------------------
10865        -- To allow MPA report to determine if it should generate report process
10866        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10867        ------------------------------------------------------------------------------------------
10868 
10869        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10870        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10871 
10872        --
10873        -- Update the line information that should be overwritten
10874        --
10875        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10876                                          p_header_num   => 1);
10877        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10878 
10879        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10880 
10881        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10882           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10883        END IF;
10884 
10885       --
10886       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10887       --
10888       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10889           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10890       ELSE
10891           ---------------------------------------------------------------------------------------------------
10892           -- 4262811a Switch Sign
10893           ---------------------------------------------------------------------------------------------------
10894           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10895           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10896                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10897           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10898                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10899           -- 5132302
10900           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10901                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10902 
10903       END IF;
10904 
10905       -- 4955764
10906       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10907       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10908 
10909 
10910       XLA_AE_LINES_PKG.ValidateCurrentLine;
10911       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10912 
10913       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10914                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10915                ,p_balance_type_code => l_balance_type_code);
10916 
10917    END IF;
10918 
10919    -----------------------------------------------------------------------------------------
10920    -- 4262811 Multiperiod Accounting
10921    -----------------------------------------------------------------------------------------
10922      -- No MPA option is assigned.
10923 
10924 
10925 END IF;
10926 END IF;
10927 --
10928 
10929 --
10930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10931    trace
10932       (p_msg      => 'END of AcctLineType_27'
10933       ,p_level    => C_LEVEL_PROCEDURE
10934       ,p_module   => l_log_module);
10935 END IF;
10936 --
10937 EXCEPTION
10938   WHEN xla_exceptions_pkg.application_exception THEN
10939       RAISE;
10940   WHEN OTHERS THEN
10941        xla_exceptions_pkg.raise_message
10942            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_27');
10943 END AcctLineType_27;
10944 --
10945 
10946 ---------------------------------------
10947 --
10948 -- PRIVATE FUNCTION
10949 --         AcctLineType_28
10950 --
10951 ---------------------------------------
10952 PROCEDURE AcctLineType_28 (
10953   p_application_id        IN NUMBER
10954  ,p_event_id              IN NUMBER
10955  ,p_calculate_acctd_flag  IN VARCHAR2
10956  ,p_calculate_g_l_flag    IN VARCHAR2
10957  ,p_actual_flag           IN OUT VARCHAR2
10958  ,p_balance_type_code     OUT VARCHAR2
10959  ,p_gain_or_loss_ref      OUT VARCHAR2
10960  
10961 --Journal entry Line Description
10962  , p_source_3            IN VARCHAR2
10963 --Federal Fund Expired Status
10964  , p_source_8            IN VARCHAR2
10965 --Budget Account
10966  , p_source_9            IN NUMBER
10967 --Federal Prior Year Flag
10968  , p_source_10            IN VARCHAR2
10969 --Main Or Backing Code
10970  , p_source_13            IN VARCHAR2
10971 --PO Distribution Type
10972  , p_source_14            IN VARCHAR2
10973 --Accounting Reversal Flag
10974  , p_source_15            IN VARCHAR2
10975 --Distribution Link Type
10976  , p_source_17            IN VARCHAR2
10977 --PO Distribution Identifier
10978  , p_source_19            IN NUMBER
10979 --PO Header Identifier
10980  , p_source_20            IN NUMBER
10981 --Applied To Application Identifier
10982  , p_source_21            IN NUMBER
10983 --Applied To Distribution Link Type
10984  , p_source_22            IN VARCHAR2
10985 --Applied To Entity Code
10986  , p_source_23            IN VARCHAR2
10987 --Applied To Distribution Identifier 1
10988  , p_source_24            IN NUMBER
10989 --Applied To Header Identifier 1
10990  , p_source_25            IN NUMBER
10991 --Entered Amount
10992  , p_source_26            IN NUMBER
10993 --Currency Code
10994  , p_source_27            IN VARCHAR2
10995 --Accounted Amount
10996  , p_source_28            IN NUMBER
10997 --PO Encumbrance Upgrade Option
10998  , p_source_29            IN VARCHAR2
10999 --JFMIP Reference
11000  , p_source_31            IN VARCHAR2
11001 --PO Upgrade Encumbrance Type Identifier
11002  , p_source_32            IN NUMBER
11003 --Currency Conversion Date
11004  , p_source_35            IN DATE
11005 --Currency Conversion Rate
11006  , p_source_36            IN NUMBER
11007 --Currency Conversion Type
11008  , p_source_37            IN VARCHAR2
11009 )
11010 IS
11011 
11012 l_component_type              VARCHAR2(80);
11013 l_component_code              VARCHAR2(30);
11014 l_component_type_code         VARCHAR2(1);
11015 l_component_appl_id           INTEGER;
11016 l_amb_context_code            VARCHAR2(30);
11017 l_entity_code                 VARCHAR2(30);
11018 l_event_class_code            VARCHAR2(30);
11019 l_ae_header_id                NUMBER;
11020 l_event_type_code             VARCHAR2(30);
11021 l_line_definition_code        VARCHAR2(30);
11022 l_line_definition_owner_code  VARCHAR2(1);
11023 --
11024 -- adr variables
11025 l_segment                     VARCHAR2(30);
11026 l_ccid                        NUMBER;
11027 l_adr_transaction_coa_id      NUMBER;
11028 l_adr_accounting_coa_id       NUMBER;
11029 l_adr_flexfield_segment_code  VARCHAR2(30);
11030 l_adr_flex_value_set_id       NUMBER;
11031 l_adr_value_type_code         VARCHAR2(30);
11032 l_adr_value_combination_id    NUMBER;
11033 l_adr_value_segment_code      VARCHAR2(30);
11034 
11035 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11036 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11037 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11038 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11039 
11040 -- 4262811 Variables ------------------------------------------------------------------------------------------
11041 l_entered_amt_idx             NUMBER;
11042 l_accted_amt_idx              NUMBER;
11043 l_acc_rev_flag                VARCHAR2(1);
11044 l_accrual_line_num            NUMBER;
11045 l_tmp_amt                     NUMBER;
11046 l_acc_rev_natural_side_code   VARCHAR2(1);
11047 
11048 l_num_entries                 NUMBER;
11049 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11050 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11051 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11052 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11053 l_recog_line_1                NUMBER;
11054 l_recog_line_2                NUMBER;
11055 
11056 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11057 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11058 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11059 
11060 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11061 
11062 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11063 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11064 
11065 ---------------------------------------------------------------------------------------------------------------
11066 
11067 
11068 --
11069 -- bulk performance
11070 --
11071 l_balance_type_code           VARCHAR2(1);
11072 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11073 l_log_module                  VARCHAR2(240);
11074 
11075 --
11076 -- Upgrade strategy
11077 --
11078 l_actual_upg_option           VARCHAR2(1);
11079 l_enc_upg_option           VARCHAR2(1);
11080 
11081 --
11082 BEGIN
11083 --
11084 IF g_log_enabled THEN
11085       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
11086 END IF;
11087 --
11088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11089 
11090       trace
11091          (p_msg      => 'BEGIN of AcctLineType_28'
11092          ,p_level    => C_LEVEL_PROCEDURE
11093          ,p_module   => l_log_module);
11094 
11095 END IF;
11096 --
11097 l_component_type             := 'AMB_JLT';
11098 l_component_code             := 'FV_PO_PYA_FINAL_CLOSE_CR';
11099 l_component_type_code        := 'S';
11100 l_component_appl_id          :=  201;
11101 l_amb_context_code           := 'DEFAULT';
11102 l_entity_code                := 'PURCHASE_ORDER';
11103 l_event_class_code           := 'PO_PA';
11104 l_event_type_code            := 'PO_PA_ALL';
11105 l_line_definition_owner_code := 'S';
11106 l_line_definition_code       := 'FV_PO_ALL';
11107 --
11108 l_balance_type_code          := 'A';
11109 l_segment                     := NULL;
11110 l_ccid                        := NULL;
11111 l_adr_transaction_coa_id      := NULL;
11112 l_adr_accounting_coa_id       := NULL;
11113 l_adr_flexfield_segment_code  := NULL;
11114 l_adr_flex_value_set_id       := NULL;
11115 l_adr_value_type_code         := NULL;
11116 l_adr_value_combination_id    := NULL;
11117 l_adr_value_segment_code      := NULL;
11118 
11119 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11120 l_bflow_class_code           := '';    -- 4219869 Business Flow
11121 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11122 l_budgetary_control_flag     := 'Y';
11123 
11124 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11125 l_bflow_applied_to_amt       := NULL; -- 5132302
11126 l_entered_amt_idx            := NULL;          -- 4262811
11127 l_accted_amt_idx             := NULL;          -- 4262811
11128 l_acc_rev_flag               := NULL;          -- 4262811
11129 l_accrual_line_num           := NULL;          -- 4262811
11130 l_tmp_amt                    := NULL;          -- 4262811
11131 --
11132  
11133 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11134     l_balance_type_code <> 'B' THEN
11135 IF NVL(
11136 xla_ae_sources_pkg.GetSystemSourceChar(
11137    p_source_code           => 'XLA_EVENT_TYPE_CODE'
11138  , p_source_type_code      => 'Y'
11139  , p_source_application_id =>  602
11140 ),'
11141 ') =  'PO_PA_FINAL_CLOSED' AND 
11142 NVL(p_source_13,'
11143 ') =  'M' AND 
11144 (NVL(p_source_14,'
11145 ') <>  'AGREEMENT' OR 
11146 p_source_14 IS NULL ) AND 
11147 NVL(p_source_10,'
11148 ') =  'Y'
11149  THEN 
11150 
11151    --
11152    XLA_AE_LINES_PKG.SetNewLine;
11153 
11154    p_balance_type_code          := l_balance_type_code;
11155    -- set the flag so later we will know whether the gain loss line needs to be created
11156    
11157    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11158      p_actual_flag :='A';
11159    END IF;
11160 
11161    --
11162    -- bulk performance
11163    --
11164    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11165                                       p_header_num   => 0); -- 4262811
11166    --
11167    -- set accounting line options
11168    --
11169    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11170            p_natural_side_code          => 'C'
11171          , p_gain_or_loss_flag          => 'N'
11172          , p_gl_transfer_mode_code      => 'S'
11173          , p_acct_entry_type_code       => 'A'
11174          , p_switch_side_flag           => 'N'
11175          , p_merge_duplicate_code       => 'N'
11176          );
11177    --
11178    l_acc_rev_natural_side_code := 'D';  -- 4262811
11179    -- 
11180    --
11181    -- set accounting line type info
11182    --
11183    xla_ae_lines_pkg.SetAcctLineType
11184       (p_component_type             => l_component_type
11185       ,p_event_type_code            => l_event_type_code
11186       ,p_line_definition_owner_code => l_line_definition_owner_code
11187       ,p_line_definition_code       => l_line_definition_code
11188       ,p_accounting_line_code       => l_component_code
11189       ,p_accounting_line_type_code  => l_component_type_code
11190       ,p_accounting_line_appl_id    => l_component_appl_id
11191       ,p_amb_context_code           => l_amb_context_code
11192       ,p_entity_code                => l_entity_code
11193       ,p_event_class_code           => l_event_class_code);
11194    --
11195    -- set accounting class
11196    --
11197    xla_ae_lines_pkg.SetAcctClass(
11198            p_accounting_class_code  => 'PURCHASE_ORDER'
11199          , p_ae_header_id           => l_ae_header_id
11200          );
11201 
11202    --
11203    -- set rounding class
11204    --
11205    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11206                       'PURCHASE_ORDER';
11207 
11208    --
11209    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11210    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11211    --
11212    -- bulk performance
11213    --
11214    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11215 
11216    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11217       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11218 
11219    -- 4955764
11220    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11221       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11222 
11223    -- 4458381 Public Sector Enh
11224    
11225    --
11226    -- set accounting attributes for the line type
11227    --
11228    l_entered_amt_idx := 23;
11229    l_accted_amt_idx  := 28;
11230    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11231    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
11232    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
11233    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
11234    l_rec_acct_attrs.array_num_value(2)  := 
11235 xla_ae_sources_pkg.GetSystemSourceNum(
11236    p_source_code           => 'XLA_EVENT_APPL_ID'
11237  , p_source_type_code      => 'Y'
11238  , p_source_application_id =>  602
11239 );
11240    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
11241    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
11242    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
11243    l_rec_acct_attrs.array_char_value(4)  := 
11244 xla_ae_sources_pkg.GetSystemSourceChar(
11245    p_source_code           => 'XLA_ENTITY_CODE'
11246  , p_source_type_code      => 'Y'
11247  , p_source_application_id =>  602
11248 );
11249    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
11250    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
11251    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
11252    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
11253    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
11254    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
11255    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11256    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
11257    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
11258    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
11259    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
11260    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
11261    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11262    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
11263    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
11264    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
11265    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
11266    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
11267    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
11268    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
11269    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
11270    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
11271    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
11272    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
11273    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
11274    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
11275    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
11276    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
11277    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
11278    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
11279    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
11280    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
11281    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
11282    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
11283    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
11284    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
11285    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
11286    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
11287    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
11288    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
11289    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
11290    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
11291    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
11292    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
11293    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
11294    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
11295    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
11296    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
11297    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
11298    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
11299    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
11300    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
11301    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
11302    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
11303    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
11304    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
11305    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
11306    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
11307    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
11308    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
11309 
11310    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11311    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11312 
11313    ---------------------------------------------------------------------------------------------------------------
11314    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11315    ---------------------------------------------------------------------------------------------------------------
11316    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11317 
11318    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11319    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11320 
11321    IF xla_accounting_cache_pkg.GetValueChar
11322          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11323          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11324    AND l_bflow_method_code = 'PRIOR_ENTRY'
11325 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11326    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11327          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11328        )
11329    THEN
11330          xla_ae_lines_pkg.BflowUpgEntry
11331            (p_business_method_code    => l_bflow_method_code
11332            ,p_business_class_code     => l_bflow_class_code
11333            ,p_balance_type            => l_balance_type_code);
11334    ELSE
11335       NULL;
11336 -- No business flow processing for business flow method of NONE.
11337    END IF;
11338 
11339    --
11340    -- call analytical criteria
11341    --
11342    
11343    --
11344    -- call description
11345    --
11346    
11347 xla_ae_lines_pkg.SetLineDescription(
11348    p_ae_header_id => l_ae_header_id
11349   ,p_description  => Description_2 (
11350      p_application_id         => p_application_id
11351    , p_ae_header_id           => l_ae_header_id 
11352 , p_source_3 => p_source_3
11353    )
11354 );
11355 
11356 
11357    --
11358    -- call ADRs
11359    -- Bug 4922099
11360    --
11361    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11362         (NVL(l_actual_upg_option, 'N') = 'O') OR
11363         (NVL(l_enc_upg_option, 'N') = 'O')
11364       )
11365    THEN
11366    NULL;
11367    --
11368    --
11369    
11370   l_ccid := AcctDerRule_9(
11371            p_application_id           => p_application_id
11372          , p_ae_header_id             => l_ae_header_id 
11373 , p_source_9 => p_source_9
11374          , x_transaction_coa_id       => l_adr_transaction_coa_id
11375          , x_accounting_coa_id        => l_adr_accounting_coa_id
11376          , x_value_type_code          => l_adr_value_type_code
11377          , p_side                     => 'NA'
11378    );
11379 
11380    xla_ae_lines_pkg.set_ccid(
11381     p_code_combination_id          => l_ccid
11382   , p_value_type_code              => l_adr_value_type_code
11383   , p_transaction_coa_id           => l_adr_transaction_coa_id
11384   , p_accounting_coa_id            => l_adr_accounting_coa_id
11385   , p_adr_code                     => 'FV_ACCOUNT_RULE'
11386   , p_adr_type_code                => 'S'
11387   , p_component_type               => l_component_type
11388   , p_component_code               => l_component_code
11389   , p_component_type_code          => l_component_type_code
11390   , p_component_appl_id            => l_component_appl_id
11391   , p_amb_context_code             => l_amb_context_code
11392   , p_side                         => 'NA'
11393   );
11394 
11395 
11396    l_segment := AcctDerRule_11(
11397            p_application_id           => p_application_id
11398          , p_ae_header_id             => l_ae_header_id 
11399 , p_source_8 => p_source_8
11400          , x_transaction_coa_id       => l_adr_transaction_coa_id
11401          , x_accounting_coa_id        => l_adr_accounting_coa_id
11402          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
11403          , x_flex_value_set_id        => l_adr_flex_value_set_id
11404          , x_value_type_code          => l_adr_value_type_code
11405          , x_value_combination_id     => l_adr_value_combination_id
11406          , x_value_segment_code       => l_adr_value_segment_code
11407          , p_side                     => 'NA'
11408          , p_override_seg_flag        => 'Y'
11409    );
11410 
11411    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
11412 
11413       xla_ae_lines_pkg.set_segment(
11414           p_to_segment_code         => 'GL_ACCOUNT'
11415         , p_segment_value           => l_segment
11416         , p_from_segment_code       => l_adr_value_segment_code
11417         , p_from_combination_id     => l_adr_value_combination_id
11418         , p_value_type_code         => l_adr_value_type_code
11419         , p_transaction_coa_id      => l_adr_transaction_coa_id
11420         , p_accounting_coa_id       => l_adr_accounting_coa_id
11421         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
11422         , p_flex_value_set_id       => l_adr_flex_value_set_id
11423         , p_adr_code                => 'FV_PYA_445002_UNANTICIPATED'
11424         , p_adr_type_code           => 'S'
11425         , p_component_type          => l_component_type
11426         , p_component_code          => l_component_code
11427         , p_component_type_code     => l_component_type_code
11428         , p_component_appl_id       => l_component_appl_id
11429         , p_amb_context_code        => l_amb_context_code
11430         , p_entity_code             => 'PURCHASE_ORDER'
11431         , p_event_class_code        => 'PO_PA'
11432         , p_side                    => 'NA'
11433         );
11434 
11435   END IF;
11436 
11437    --
11438    --
11439    END IF;
11440    --
11441    -- Bug 4922099
11442    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11443           (NVL(l_enc_upg_option, 'N') = 'O')
11444         ) AND
11445         (l_bflow_method_code = 'PRIOR_ENTRY')
11446       )
11447    THEN
11448       IF
11449       --
11450       1 = 2
11451       --
11452       THEN
11453       xla_accounting_err_pkg.build_message
11454                                     (p_appli_s_name            => 'XLA'
11455                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11456                                     ,p_token_1                 => 'LINE_NUMBER'
11457                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11458                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11459                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11460                                                                              l_component_type
11461                                                                             ,l_component_code
11462                                                                             ,l_component_type_code
11463                                                                             ,l_component_appl_id
11464                                                                             ,l_amb_context_code
11465                                                                             ,l_entity_code
11466                                                                             ,l_event_class_code
11467                                                                            )
11468                                     ,p_token_3                 => 'OWNER'
11469                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11470                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11471                                                                           ,p_lookup_code    => l_component_type_code
11472                                                                          )
11473                                     ,p_token_4                 => 'PRODUCT_NAME'
11474                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11475                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11476                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11477                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11478                                     ,p_ae_header_id            =>  NULL
11479                                        );
11480 
11481         IF (C_LEVEL_ERROR>= g_log_level) THEN
11482                  trace
11483                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11484                       ,p_level    => C_LEVEL_ERROR
11485                       ,p_module   => l_log_module);
11486         END IF;
11487       END IF;
11488    END IF;
11489    --
11490    --
11491    ------------------------------------------------------------------------------------------------
11492    -- 4219869 Business Flow
11493    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11494    -- Prior Entry.  Currently, the following code is always generated.
11495    ------------------------------------------------------------------------------------------------
11496    XLA_AE_LINES_PKG.ValidateCurrentLine;
11497 
11498    ------------------------------------------------------------------------------------
11499    -- 4219869 Business Flow
11500    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11501    ------------------------------------------------------------------------------------
11502    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11503 
11504    ----------------------------------------------------------------------------------
11505    -- 4219869 Business Flow
11506    -- Update journal entry status -- Need to generate this within IF <condition>
11507    ----------------------------------------------------------------------------------
11508    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11509          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11510          ,p_balance_type_code => l_balance_type_code
11511          );
11512 
11513    -------------------------------------------------------------------------------------------
11514    -- 4262811 - Generate the Accrual Reversal lines
11515    -------------------------------------------------------------------------------------------
11516    BEGIN
11517       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11518                               (g_array_event(p_event_id).array_value_num('header_index'));
11519       IF l_acc_rev_flag IS NULL THEN
11520          l_acc_rev_flag := 'N';
11521       END IF;
11522    EXCEPTION
11523       WHEN OTHERS THEN
11524          l_acc_rev_flag := 'N';
11525    END;
11526    --
11527    IF (l_acc_rev_flag = 'Y') THEN
11528 
11529        -- 4645092  ------------------------------------------------------------------------------
11530        -- To allow MPA report to determine if it should generate report process
11531        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11532        ------------------------------------------------------------------------------------------
11533 
11534        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11535        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11536 
11537        --
11538        -- Update the line information that should be overwritten
11539        --
11540        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11541                                          p_header_num   => 1);
11542        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11543 
11544        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11545 
11546        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11547           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11548        END IF;
11549 
11550       --
11551       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11552       --
11553       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11554           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11555       ELSE
11556           ---------------------------------------------------------------------------------------------------
11557           -- 4262811a Switch Sign
11558           ---------------------------------------------------------------------------------------------------
11559           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11560           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11561                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11562           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11563                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11564           -- 5132302
11565           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11566                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11567 
11568       END IF;
11569 
11570       -- 4955764
11571       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11572       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11573 
11574 
11575       XLA_AE_LINES_PKG.ValidateCurrentLine;
11576       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11577 
11578       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11579                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11580                ,p_balance_type_code => l_balance_type_code);
11581 
11582    END IF;
11583 
11584    -----------------------------------------------------------------------------------------
11585    -- 4262811 Multiperiod Accounting
11586    -----------------------------------------------------------------------------------------
11587      -- No MPA option is assigned.
11588 
11589 
11590 END IF;
11591 END IF;
11592 --
11593 
11594 --
11595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11596    trace
11597       (p_msg      => 'END of AcctLineType_28'
11598       ,p_level    => C_LEVEL_PROCEDURE
11599       ,p_module   => l_log_module);
11600 END IF;
11601 --
11602 EXCEPTION
11603   WHEN xla_exceptions_pkg.application_exception THEN
11604       RAISE;
11605   WHEN OTHERS THEN
11606        xla_exceptions_pkg.raise_message
11607            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_28');
11608 END AcctLineType_28;
11609 --
11610 
11611 ---------------------------------------
11612 --
11613 -- PRIVATE FUNCTION
11614 --         AcctLineType_29
11615 --
11616 ---------------------------------------
11617 PROCEDURE AcctLineType_29 (
11618   p_application_id        IN NUMBER
11619  ,p_event_id              IN NUMBER
11620  ,p_calculate_acctd_flag  IN VARCHAR2
11621  ,p_calculate_g_l_flag    IN VARCHAR2
11622  ,p_actual_flag           IN OUT VARCHAR2
11623  ,p_balance_type_code     OUT VARCHAR2
11624  ,p_gain_or_loss_ref      OUT VARCHAR2
11625  
11626 --Journal entry Line Description
11627  , p_source_3            IN VARCHAR2
11628 --Budget Account
11629  , p_source_9            IN NUMBER
11630 --Federal Prior Year Flag
11631  , p_source_10            IN VARCHAR2
11632 --Main Or Backing Code
11633  , p_source_13            IN VARCHAR2
11634 --PO Distribution Type
11635  , p_source_14            IN VARCHAR2
11636 --Accounting Reversal Flag
11637  , p_source_15            IN VARCHAR2
11638 --Distribution Link Type
11639  , p_source_17            IN VARCHAR2
11640 --PO Distribution Identifier
11641  , p_source_19            IN NUMBER
11642 --PO Header Identifier
11643  , p_source_20            IN NUMBER
11644 --Applied To Application Identifier
11645  , p_source_21            IN NUMBER
11646 --Applied To Distribution Link Type
11647  , p_source_22            IN VARCHAR2
11648 --Applied To Entity Code
11649  , p_source_23            IN VARCHAR2
11650 --Applied To Distribution Identifier 1
11651  , p_source_24            IN NUMBER
11652 --Applied To Header Identifier 1
11653  , p_source_25            IN NUMBER
11654 --Entered Amount
11655  , p_source_26            IN NUMBER
11656 --Currency Code
11657  , p_source_27            IN VARCHAR2
11658 --Accounted Amount
11659  , p_source_28            IN NUMBER
11660 --PO Encumbrance Upgrade Option
11661  , p_source_29            IN VARCHAR2
11662 --JFMIP Reference
11663  , p_source_31            IN VARCHAR2
11664 --PO Upgrade Encumbrance Type Identifier
11665  , p_source_32            IN NUMBER
11666 --Currency Conversion Date
11667  , p_source_35            IN DATE
11668 --Currency Conversion Rate
11669  , p_source_36            IN NUMBER
11670 --Currency Conversion Type
11671  , p_source_37            IN VARCHAR2
11672 )
11673 IS
11674 
11675 l_component_type              VARCHAR2(80);
11676 l_component_code              VARCHAR2(30);
11677 l_component_type_code         VARCHAR2(1);
11678 l_component_appl_id           INTEGER;
11679 l_amb_context_code            VARCHAR2(30);
11680 l_entity_code                 VARCHAR2(30);
11681 l_event_class_code            VARCHAR2(30);
11682 l_ae_header_id                NUMBER;
11683 l_event_type_code             VARCHAR2(30);
11684 l_line_definition_code        VARCHAR2(30);
11685 l_line_definition_owner_code  VARCHAR2(1);
11686 --
11687 -- adr variables
11688 l_segment                     VARCHAR2(30);
11689 l_ccid                        NUMBER;
11690 l_adr_transaction_coa_id      NUMBER;
11691 l_adr_accounting_coa_id       NUMBER;
11692 l_adr_flexfield_segment_code  VARCHAR2(30);
11693 l_adr_flex_value_set_id       NUMBER;
11694 l_adr_value_type_code         VARCHAR2(30);
11695 l_adr_value_combination_id    NUMBER;
11696 l_adr_value_segment_code      VARCHAR2(30);
11697 
11698 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11699 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11700 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11701 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11702 
11703 -- 4262811 Variables ------------------------------------------------------------------------------------------
11704 l_entered_amt_idx             NUMBER;
11705 l_accted_amt_idx              NUMBER;
11706 l_acc_rev_flag                VARCHAR2(1);
11707 l_accrual_line_num            NUMBER;
11708 l_tmp_amt                     NUMBER;
11709 l_acc_rev_natural_side_code   VARCHAR2(1);
11710 
11711 l_num_entries                 NUMBER;
11712 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11713 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11714 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11715 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11716 l_recog_line_1                NUMBER;
11717 l_recog_line_2                NUMBER;
11718 
11719 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11720 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11721 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11722 
11723 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11724 
11725 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11726 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11727 
11728 ---------------------------------------------------------------------------------------------------------------
11729 
11730 
11731 --
11732 -- bulk performance
11733 --
11734 l_balance_type_code           VARCHAR2(1);
11735 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11736 l_log_module                  VARCHAR2(240);
11737 
11738 --
11739 -- Upgrade strategy
11740 --
11741 l_actual_upg_option           VARCHAR2(1);
11742 l_enc_upg_option           VARCHAR2(1);
11743 
11744 --
11745 BEGIN
11746 --
11747 IF g_log_enabled THEN
11748       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
11749 END IF;
11750 --
11751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11752 
11753       trace
11754          (p_msg      => 'BEGIN of AcctLineType_29'
11755          ,p_level    => C_LEVEL_PROCEDURE
11756          ,p_module   => l_log_module);
11757 
11758 END IF;
11759 --
11760 l_component_type             := 'AMB_JLT';
11761 l_component_code             := 'FV_PO_PYA_FINAL_CLOSE_DR';
11762 l_component_type_code        := 'S';
11763 l_component_appl_id          :=  201;
11764 l_amb_context_code           := 'DEFAULT';
11765 l_entity_code                := 'PURCHASE_ORDER';
11766 l_event_class_code           := 'PO_PA';
11767 l_event_type_code            := 'PO_PA_ALL';
11768 l_line_definition_owner_code := 'S';
11769 l_line_definition_code       := 'FV_PO_ALL';
11770 --
11771 l_balance_type_code          := 'A';
11772 l_segment                     := NULL;
11773 l_ccid                        := NULL;
11774 l_adr_transaction_coa_id      := NULL;
11775 l_adr_accounting_coa_id       := NULL;
11776 l_adr_flexfield_segment_code  := NULL;
11777 l_adr_flex_value_set_id       := NULL;
11778 l_adr_value_type_code         := NULL;
11779 l_adr_value_combination_id    := NULL;
11780 l_adr_value_segment_code      := NULL;
11781 
11782 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11783 l_bflow_class_code           := '';    -- 4219869 Business Flow
11784 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11785 l_budgetary_control_flag     := 'Y';
11786 
11787 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11788 l_bflow_applied_to_amt       := NULL; -- 5132302
11789 l_entered_amt_idx            := NULL;          -- 4262811
11790 l_accted_amt_idx             := NULL;          -- 4262811
11791 l_acc_rev_flag               := NULL;          -- 4262811
11792 l_accrual_line_num           := NULL;          -- 4262811
11793 l_tmp_amt                    := NULL;          -- 4262811
11794 --
11795  
11796 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11797     l_balance_type_code <> 'B' THEN
11798 IF NVL(
11799 xla_ae_sources_pkg.GetSystemSourceChar(
11800    p_source_code           => 'XLA_EVENT_TYPE_CODE'
11801  , p_source_type_code      => 'Y'
11802  , p_source_application_id =>  602
11803 ),'
11804 ') =  'PO_PA_FINAL_CLOSED' AND 
11805 NVL(p_source_13,'
11806 ') =  'M' AND 
11807 (NVL(p_source_14,'
11808 ') <>  'AGREEMENT' OR 
11809 p_source_14 IS NULL ) AND 
11810 NVL(p_source_10,'
11811 ') =  'Y'
11812  THEN 
11813 
11814    --
11815    XLA_AE_LINES_PKG.SetNewLine;
11816 
11817    p_balance_type_code          := l_balance_type_code;
11818    -- set the flag so later we will know whether the gain loss line needs to be created
11819    
11820    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11821      p_actual_flag :='A';
11822    END IF;
11823 
11824    --
11825    -- bulk performance
11826    --
11827    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11828                                       p_header_num   => 0); -- 4262811
11829    --
11830    -- set accounting line options
11831    --
11832    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11833            p_natural_side_code          => 'D'
11834          , p_gain_or_loss_flag          => 'N'
11835          , p_gl_transfer_mode_code      => 'S'
11836          , p_acct_entry_type_code       => 'A'
11837          , p_switch_side_flag           => 'N'
11838          , p_merge_duplicate_code       => 'N'
11839          );
11840    --
11841    l_acc_rev_natural_side_code := 'C';  -- 4262811
11842    -- 
11843    --
11844    -- set accounting line type info
11845    --
11846    xla_ae_lines_pkg.SetAcctLineType
11847       (p_component_type             => l_component_type
11848       ,p_event_type_code            => l_event_type_code
11849       ,p_line_definition_owner_code => l_line_definition_owner_code
11850       ,p_line_definition_code       => l_line_definition_code
11851       ,p_accounting_line_code       => l_component_code
11852       ,p_accounting_line_type_code  => l_component_type_code
11853       ,p_accounting_line_appl_id    => l_component_appl_id
11854       ,p_amb_context_code           => l_amb_context_code
11855       ,p_entity_code                => l_entity_code
11856       ,p_event_class_code           => l_event_class_code);
11857    --
11858    -- set accounting class
11859    --
11860    xla_ae_lines_pkg.SetAcctClass(
11861            p_accounting_class_code  => 'PURCHASE_ORDER'
11862          , p_ae_header_id           => l_ae_header_id
11863          );
11864 
11865    --
11866    -- set rounding class
11867    --
11868    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11869                       'PURCHASE_ORDER';
11870 
11871    --
11872    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11873    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11874    --
11875    -- bulk performance
11876    --
11877    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11878 
11879    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11880       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11881 
11882    -- 4955764
11883    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11884       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11885 
11886    -- 4458381 Public Sector Enh
11887    
11888    --
11889    -- set accounting attributes for the line type
11890    --
11891    l_entered_amt_idx := 23;
11892    l_accted_amt_idx  := 28;
11893    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11894    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
11895    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
11896    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
11897    l_rec_acct_attrs.array_num_value(2)  := 
11898 xla_ae_sources_pkg.GetSystemSourceNum(
11899    p_source_code           => 'XLA_EVENT_APPL_ID'
11900  , p_source_type_code      => 'Y'
11901  , p_source_application_id =>  602
11902 );
11903    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
11904    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
11905    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
11906    l_rec_acct_attrs.array_char_value(4)  := 
11907 xla_ae_sources_pkg.GetSystemSourceChar(
11908    p_source_code           => 'XLA_ENTITY_CODE'
11909  , p_source_type_code      => 'Y'
11910  , p_source_application_id =>  602
11911 );
11912    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
11913    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
11914    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
11915    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
11916    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
11917    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
11918    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11919    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
11920    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
11921    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
11922    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
11923    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
11924    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11925    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
11926    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
11927    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
11928    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
11929    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
11930    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
11931    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
11932    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
11933    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
11934    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
11935    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
11936    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
11937    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
11938    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
11939    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
11940    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
11941    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
11942    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
11943    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
11944    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
11945    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
11946    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
11947    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
11948    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
11949    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
11950    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
11951    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
11952    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
11953    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
11954    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
11955    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
11956    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
11957    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
11958    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
11959    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
11960    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
11961    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
11962    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
11963    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
11964    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
11965    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
11966    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
11967    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
11968    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
11969    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
11970    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
11971    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
11972 
11973    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11974    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11975 
11976    ---------------------------------------------------------------------------------------------------------------
11977    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11978    ---------------------------------------------------------------------------------------------------------------
11979    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11980 
11981    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11982    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11983 
11984    IF xla_accounting_cache_pkg.GetValueChar
11985          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11986          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11987    AND l_bflow_method_code = 'PRIOR_ENTRY'
11988 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11989    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11990          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11991        )
11992    THEN
11993          xla_ae_lines_pkg.BflowUpgEntry
11994            (p_business_method_code    => l_bflow_method_code
11995            ,p_business_class_code     => l_bflow_class_code
11996            ,p_balance_type            => l_balance_type_code);
11997    ELSE
11998       NULL;
11999 -- No business flow processing for business flow method of NONE.
12000    END IF;
12001 
12002    --
12003    -- call analytical criteria
12004    --
12005    
12006    --
12007    -- call description
12008    --
12009    
12010 xla_ae_lines_pkg.SetLineDescription(
12011    p_ae_header_id => l_ae_header_id
12012   ,p_description  => Description_2 (
12013      p_application_id         => p_application_id
12014    , p_ae_header_id           => l_ae_header_id 
12015 , p_source_3 => p_source_3
12016    )
12017 );
12018 
12019 
12020    --
12021    -- call ADRs
12022    -- Bug 4922099
12023    --
12024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12025         (NVL(l_actual_upg_option, 'N') = 'O') OR
12026         (NVL(l_enc_upg_option, 'N') = 'O')
12027       )
12028    THEN
12029    NULL;
12030    --
12031    --
12032    
12033   l_ccid := AcctDerRule_9(
12034            p_application_id           => p_application_id
12035          , p_ae_header_id             => l_ae_header_id 
12036 , p_source_9 => p_source_9
12037          , x_transaction_coa_id       => l_adr_transaction_coa_id
12038          , x_accounting_coa_id        => l_adr_accounting_coa_id
12039          , x_value_type_code          => l_adr_value_type_code
12040          , p_side                     => 'NA'
12041    );
12042 
12043    xla_ae_lines_pkg.set_ccid(
12044     p_code_combination_id          => l_ccid
12045   , p_value_type_code              => l_adr_value_type_code
12046   , p_transaction_coa_id           => l_adr_transaction_coa_id
12047   , p_accounting_coa_id            => l_adr_accounting_coa_id
12048   , p_adr_code                     => 'FV_ACCOUNT_RULE'
12049   , p_adr_type_code                => 'S'
12050   , p_component_type               => l_component_type
12051   , p_component_code               => l_component_code
12052   , p_component_type_code          => l_component_type_code
12053   , p_component_appl_id            => l_component_appl_id
12054   , p_amb_context_code             => l_amb_context_code
12055   , p_side                         => 'NA'
12056   );
12057 
12058 
12059    l_segment := AcctDerRule_13(
12060            p_application_id           => p_application_id
12061          , p_ae_header_id             => l_ae_header_id 
12062          , x_transaction_coa_id       => l_adr_transaction_coa_id
12063          , x_accounting_coa_id        => l_adr_accounting_coa_id
12064          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
12065          , x_flex_value_set_id        => l_adr_flex_value_set_id
12066          , x_value_type_code          => l_adr_value_type_code
12067          , x_value_combination_id     => l_adr_value_combination_id
12068          , x_value_segment_code       => l_adr_value_segment_code
12069          , p_side                     => 'NA'
12070          , p_override_seg_flag        => 'Y'
12071    );
12072 
12073    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
12074 
12075       xla_ae_lines_pkg.set_segment(
12076           p_to_segment_code         => 'GL_ACCOUNT'
12077         , p_segment_value           => l_segment
12078         , p_from_segment_code       => l_adr_value_segment_code
12079         , p_from_combination_id     => l_adr_value_combination_id
12080         , p_value_type_code         => l_adr_value_type_code
12081         , p_transaction_coa_id      => l_adr_transaction_coa_id
12082         , p_accounting_coa_id       => l_adr_accounting_coa_id
12083         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
12084         , p_flex_value_set_id       => l_adr_flex_value_set_id
12085         , p_adr_code                => 'FV_PYA_FINAL_CLOSE_487101'
12086         , p_adr_type_code           => 'S'
12087         , p_component_type          => l_component_type
12088         , p_component_code          => l_component_code
12089         , p_component_type_code     => l_component_type_code
12090         , p_component_appl_id       => l_component_appl_id
12091         , p_amb_context_code        => l_amb_context_code
12092         , p_entity_code             => 'PURCHASE_ORDER'
12093         , p_event_class_code        => 'PO_PA'
12094         , p_side                    => 'NA'
12095         );
12096 
12097   END IF;
12098 
12099    --
12100    --
12101    END IF;
12102    --
12103    -- Bug 4922099
12104    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12105           (NVL(l_enc_upg_option, 'N') = 'O')
12106         ) AND
12107         (l_bflow_method_code = 'PRIOR_ENTRY')
12108       )
12109    THEN
12110       IF
12111       --
12112       1 = 2
12113       --
12114       THEN
12115       xla_accounting_err_pkg.build_message
12116                                     (p_appli_s_name            => 'XLA'
12117                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12118                                     ,p_token_1                 => 'LINE_NUMBER'
12119                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12120                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12121                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12122                                                                              l_component_type
12123                                                                             ,l_component_code
12124                                                                             ,l_component_type_code
12125                                                                             ,l_component_appl_id
12126                                                                             ,l_amb_context_code
12127                                                                             ,l_entity_code
12128                                                                             ,l_event_class_code
12129                                                                            )
12130                                     ,p_token_3                 => 'OWNER'
12131                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12132                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12133                                                                           ,p_lookup_code    => l_component_type_code
12134                                                                          )
12135                                     ,p_token_4                 => 'PRODUCT_NAME'
12136                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12137                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12138                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12139                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12140                                     ,p_ae_header_id            =>  NULL
12141                                        );
12142 
12143         IF (C_LEVEL_ERROR>= g_log_level) THEN
12144                  trace
12145                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12146                       ,p_level    => C_LEVEL_ERROR
12147                       ,p_module   => l_log_module);
12148         END IF;
12149       END IF;
12150    END IF;
12151    --
12152    --
12153    ------------------------------------------------------------------------------------------------
12154    -- 4219869 Business Flow
12155    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12156    -- Prior Entry.  Currently, the following code is always generated.
12157    ------------------------------------------------------------------------------------------------
12158    XLA_AE_LINES_PKG.ValidateCurrentLine;
12159 
12160    ------------------------------------------------------------------------------------
12161    -- 4219869 Business Flow
12162    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12163    ------------------------------------------------------------------------------------
12164    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12165 
12166    ----------------------------------------------------------------------------------
12167    -- 4219869 Business Flow
12168    -- Update journal entry status -- Need to generate this within IF <condition>
12169    ----------------------------------------------------------------------------------
12170    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12171          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12172          ,p_balance_type_code => l_balance_type_code
12173          );
12174 
12175    -------------------------------------------------------------------------------------------
12176    -- 4262811 - Generate the Accrual Reversal lines
12177    -------------------------------------------------------------------------------------------
12178    BEGIN
12179       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12180                               (g_array_event(p_event_id).array_value_num('header_index'));
12181       IF l_acc_rev_flag IS NULL THEN
12182          l_acc_rev_flag := 'N';
12183       END IF;
12184    EXCEPTION
12185       WHEN OTHERS THEN
12186          l_acc_rev_flag := 'N';
12187    END;
12188    --
12189    IF (l_acc_rev_flag = 'Y') THEN
12190 
12191        -- 4645092  ------------------------------------------------------------------------------
12192        -- To allow MPA report to determine if it should generate report process
12193        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12194        ------------------------------------------------------------------------------------------
12195 
12196        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12197        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12198 
12199        --
12200        -- Update the line information that should be overwritten
12201        --
12202        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12203                                          p_header_num   => 1);
12204        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12205 
12206        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12207 
12208        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12209           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12210        END IF;
12211 
12212       --
12213       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12214       --
12215       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12216           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12217       ELSE
12218           ---------------------------------------------------------------------------------------------------
12219           -- 4262811a Switch Sign
12220           ---------------------------------------------------------------------------------------------------
12221           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12222           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12223                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12224           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12225                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12226           -- 5132302
12227           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12228                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12229 
12230       END IF;
12231 
12232       -- 4955764
12233       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12234       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12235 
12236 
12237       XLA_AE_LINES_PKG.ValidateCurrentLine;
12238       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12239 
12240       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12241                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12242                ,p_balance_type_code => l_balance_type_code);
12243 
12244    END IF;
12245 
12246    -----------------------------------------------------------------------------------------
12247    -- 4262811 Multiperiod Accounting
12248    -----------------------------------------------------------------------------------------
12249      -- No MPA option is assigned.
12250 
12251 
12252 END IF;
12253 END IF;
12254 --
12255 
12256 --
12257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12258    trace
12259       (p_msg      => 'END of AcctLineType_29'
12260       ,p_level    => C_LEVEL_PROCEDURE
12261       ,p_module   => l_log_module);
12262 END IF;
12263 --
12264 EXCEPTION
12265   WHEN xla_exceptions_pkg.application_exception THEN
12266       RAISE;
12267   WHEN OTHERS THEN
12268        xla_exceptions_pkg.raise_message
12269            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_29');
12270 END AcctLineType_29;
12271 --
12272 
12273 ---------------------------------------
12274 --
12275 -- PRIVATE FUNCTION
12276 --         AcctLineType_30
12277 --
12278 ---------------------------------------
12279 PROCEDURE AcctLineType_30 (
12280   p_application_id        IN NUMBER
12281  ,p_event_id              IN NUMBER
12282  ,p_calculate_acctd_flag  IN VARCHAR2
12283  ,p_calculate_g_l_flag    IN VARCHAR2
12284  ,p_actual_flag           IN OUT VARCHAR2
12285  ,p_balance_type_code     OUT VARCHAR2
12286  ,p_gain_or_loss_ref      OUT VARCHAR2
12287  
12288 --Journal entry Line Description
12289  , p_source_3            IN VARCHAR2
12290 --Budget Account
12291  , p_source_9            IN NUMBER
12292 --Federal Prior Year Flag
12293  , p_source_10            IN VARCHAR2
12294 --Main Or Backing Code
12295  , p_source_13            IN VARCHAR2
12296 --PO Distribution Type
12297  , p_source_14            IN VARCHAR2
12298 --Accounting Reversal Flag
12299  , p_source_15            IN VARCHAR2
12300 --Distribution Link Type
12301  , p_source_17            IN VARCHAR2
12302 --PO Distribution Identifier
12303  , p_source_19            IN NUMBER
12304 --PO Header Identifier
12305  , p_source_20            IN NUMBER
12306 --Applied To Application Identifier
12307  , p_source_21            IN NUMBER
12308 --Applied To Distribution Link Type
12309  , p_source_22            IN VARCHAR2
12310 --Applied To Entity Code
12311  , p_source_23            IN VARCHAR2
12312 --Applied To Distribution Identifier 1
12313  , p_source_24            IN NUMBER
12314 --Applied To Header Identifier 1
12315  , p_source_25            IN NUMBER
12316 --Entered Amount
12317  , p_source_26            IN NUMBER
12318 --Currency Code
12319  , p_source_27            IN VARCHAR2
12320 --Accounted Amount
12321  , p_source_28            IN NUMBER
12322 --PO Encumbrance Upgrade Option
12323  , p_source_29            IN VARCHAR2
12324 --JFMIP Reference
12325  , p_source_31            IN VARCHAR2
12326 --PO Upgrade Encumbrance Type Identifier
12327  , p_source_32            IN NUMBER
12328 --Currency Conversion Date
12329  , p_source_35            IN DATE
12330 --Currency Conversion Rate
12331  , p_source_36            IN NUMBER
12332 --Currency Conversion Type
12333  , p_source_37            IN VARCHAR2
12334 --Federal Pya Amt
12335  , p_source_40            IN NUMBER
12336 )
12337 IS
12338 
12339 l_component_type              VARCHAR2(80);
12340 l_component_code              VARCHAR2(30);
12341 l_component_type_code         VARCHAR2(1);
12342 l_component_appl_id           INTEGER;
12343 l_amb_context_code            VARCHAR2(30);
12344 l_entity_code                 VARCHAR2(30);
12345 l_event_class_code            VARCHAR2(30);
12346 l_ae_header_id                NUMBER;
12347 l_event_type_code             VARCHAR2(30);
12348 l_line_definition_code        VARCHAR2(30);
12349 l_line_definition_owner_code  VARCHAR2(1);
12350 --
12351 -- adr variables
12352 l_segment                     VARCHAR2(30);
12353 l_ccid                        NUMBER;
12354 l_adr_transaction_coa_id      NUMBER;
12355 l_adr_accounting_coa_id       NUMBER;
12356 l_adr_flexfield_segment_code  VARCHAR2(30);
12357 l_adr_flex_value_set_id       NUMBER;
12358 l_adr_value_type_code         VARCHAR2(30);
12359 l_adr_value_combination_id    NUMBER;
12360 l_adr_value_segment_code      VARCHAR2(30);
12361 
12362 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12363 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12364 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12365 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12366 
12367 -- 4262811 Variables ------------------------------------------------------------------------------------------
12368 l_entered_amt_idx             NUMBER;
12369 l_accted_amt_idx              NUMBER;
12370 l_acc_rev_flag                VARCHAR2(1);
12371 l_accrual_line_num            NUMBER;
12372 l_tmp_amt                     NUMBER;
12373 l_acc_rev_natural_side_code   VARCHAR2(1);
12374 
12375 l_num_entries                 NUMBER;
12376 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12377 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12378 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12379 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12380 l_recog_line_1                NUMBER;
12381 l_recog_line_2                NUMBER;
12382 
12383 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12384 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12385 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12386 
12387 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12388 
12389 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12390 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12391 
12392 ---------------------------------------------------------------------------------------------------------------
12393 
12394 
12395 --
12396 -- bulk performance
12397 --
12398 l_balance_type_code           VARCHAR2(1);
12399 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12400 l_log_module                  VARCHAR2(240);
12401 
12402 --
12403 -- Upgrade strategy
12404 --
12405 l_actual_upg_option           VARCHAR2(1);
12406 l_enc_upg_option           VARCHAR2(1);
12407 
12408 --
12409 BEGIN
12410 --
12411 IF g_log_enabled THEN
12412       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
12413 END IF;
12414 --
12415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12416 
12417       trace
12418          (p_msg      => 'BEGIN of AcctLineType_30'
12419          ,p_level    => C_LEVEL_PROCEDURE
12420          ,p_module   => l_log_module);
12421 
12422 END IF;
12423 --
12424 l_component_type             := 'AMB_JLT';
12425 l_component_code             := 'FV_PO_PYA_RESERVE_CR';
12426 l_component_type_code        := 'S';
12427 l_component_appl_id          :=  201;
12428 l_amb_context_code           := 'DEFAULT';
12429 l_entity_code                := 'PURCHASE_ORDER';
12430 l_event_class_code           := 'PO_PA';
12431 l_event_type_code            := 'PO_PA_ALL';
12432 l_line_definition_owner_code := 'S';
12433 l_line_definition_code       := 'FV_PO_ALL';
12434 --
12435 l_balance_type_code          := 'A';
12436 l_segment                     := NULL;
12437 l_ccid                        := NULL;
12438 l_adr_transaction_coa_id      := NULL;
12439 l_adr_accounting_coa_id       := NULL;
12440 l_adr_flexfield_segment_code  := NULL;
12441 l_adr_flex_value_set_id       := NULL;
12442 l_adr_value_type_code         := NULL;
12443 l_adr_value_combination_id    := NULL;
12444 l_adr_value_segment_code      := NULL;
12445 
12446 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12447 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
12448 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12449 l_budgetary_control_flag     := 'Y';
12450 
12451 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12452 l_bflow_applied_to_amt       := NULL; -- 5132302
12453 l_entered_amt_idx            := NULL;          -- 4262811
12454 l_accted_amt_idx             := NULL;          -- 4262811
12455 l_acc_rev_flag               := NULL;          -- 4262811
12456 l_accrual_line_num           := NULL;          -- 4262811
12457 l_tmp_amt                    := NULL;          -- 4262811
12458 --
12459  
12460 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12461     l_balance_type_code <> 'B' THEN
12462 IF NVL(
12463 xla_ae_sources_pkg.GetSystemSourceChar(
12464    p_source_code           => 'XLA_EVENT_TYPE_CODE'
12465  , p_source_type_code      => 'Y'
12466  , p_source_application_id =>  602
12467 ),'
12468 ') =  'PO_PA_RESERVED' AND 
12469 NVL(p_source_13,'
12470 ') =  'M' AND 
12471 (NVL(p_source_14,'
12472 ') <>  'AGREEMENT' OR 
12473 p_source_14 IS NULL ) AND 
12474 NVL(p_source_10,'
12475 ') =  'Y' AND 
12476 NVL(p_source_40,9E125) <>  0 AND 
12477 p_source_40 IS NOT NULL 
12478  THEN 
12479 
12480    --
12481    XLA_AE_LINES_PKG.SetNewLine;
12482 
12483    p_balance_type_code          := l_balance_type_code;
12484    -- set the flag so later we will know whether the gain loss line needs to be created
12485    
12486    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12487      p_actual_flag :='A';
12488    END IF;
12489 
12490    --
12491    -- bulk performance
12492    --
12493    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12494                                       p_header_num   => 0); -- 4262811
12495    --
12496    -- set accounting line options
12497    --
12498    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12499            p_natural_side_code          => 'C'
12500          , p_gain_or_loss_flag          => 'N'
12501          , p_gl_transfer_mode_code      => 'S'
12502          , p_acct_entry_type_code       => 'A'
12503          , p_switch_side_flag           => 'Y'
12504          , p_merge_duplicate_code       => 'N'
12505          );
12506    --
12507    l_acc_rev_natural_side_code := 'D';  -- 4262811
12508    -- 
12509    --
12510    -- set accounting line type info
12511    --
12512    xla_ae_lines_pkg.SetAcctLineType
12513       (p_component_type             => l_component_type
12514       ,p_event_type_code            => l_event_type_code
12515       ,p_line_definition_owner_code => l_line_definition_owner_code
12516       ,p_line_definition_code       => l_line_definition_code
12517       ,p_accounting_line_code       => l_component_code
12518       ,p_accounting_line_type_code  => l_component_type_code
12519       ,p_accounting_line_appl_id    => l_component_appl_id
12520       ,p_amb_context_code           => l_amb_context_code
12521       ,p_entity_code                => l_entity_code
12522       ,p_event_class_code           => l_event_class_code);
12523    --
12524    -- set accounting class
12525    --
12526    xla_ae_lines_pkg.SetAcctClass(
12527            p_accounting_class_code  => 'PURCHASE_ORDER'
12528          , p_ae_header_id           => l_ae_header_id
12529          );
12530 
12531    --
12532    -- set rounding class
12533    --
12534    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12535                       'PURCHASE_ORDER';
12536 
12537    --
12538    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12539    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12540    --
12541    -- bulk performance
12542    --
12543    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12544 
12545    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12546       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12547 
12548    -- 4955764
12549    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12550       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12551 
12552    -- 4458381 Public Sector Enh
12553    
12554    --
12555    -- set accounting attributes for the line type
12556    --
12557    l_entered_amt_idx := 23;
12558    l_accted_amt_idx  := 28;
12559    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12560    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
12561    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
12562    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
12563    l_rec_acct_attrs.array_num_value(2)  := 
12564 xla_ae_sources_pkg.GetSystemSourceNum(
12565    p_source_code           => 'XLA_EVENT_APPL_ID'
12566  , p_source_type_code      => 'Y'
12567  , p_source_application_id =>  602
12568 );
12569    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
12570    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
12571    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
12572    l_rec_acct_attrs.array_char_value(4)  := 
12573 xla_ae_sources_pkg.GetSystemSourceChar(
12574    p_source_code           => 'XLA_ENTITY_CODE'
12575  , p_source_type_code      => 'Y'
12576  , p_source_application_id =>  602
12577 );
12578    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
12579    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
12580    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
12581    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
12582    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
12583    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
12584    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12585    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
12586    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
12587    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
12588    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
12589    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
12590    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12591    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
12592    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
12593    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
12594    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
12595    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
12596    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
12597    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
12598    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
12599    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
12600    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
12601    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
12602    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
12603    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
12604    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
12605    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
12606    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
12607    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
12608    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
12609    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
12610    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
12611    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
12612    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
12613    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
12614    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
12615    l_rec_acct_attrs.array_num_value(23)  := p_source_40;
12616    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
12617    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
12618    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
12619    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
12620    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
12621    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
12622    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
12623    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
12624    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
12625    l_rec_acct_attrs.array_num_value(28)  := p_source_40;
12626    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
12627    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
12628    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
12629    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
12630    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
12631    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
12632    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
12633    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
12634    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
12635    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
12636    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
12637    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
12638 
12639    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12640    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12641 
12642    ---------------------------------------------------------------------------------------------------------------
12643    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12644    ---------------------------------------------------------------------------------------------------------------
12645    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12646 
12647    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12648    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12649 
12650    IF xla_accounting_cache_pkg.GetValueChar
12651          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12652          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12653    AND l_bflow_method_code = 'PRIOR_ENTRY'
12654 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12655    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12656          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12657        )
12658    THEN
12659          xla_ae_lines_pkg.BflowUpgEntry
12660            (p_business_method_code    => l_bflow_method_code
12661            ,p_business_class_code     => l_bflow_class_code
12662            ,p_balance_type            => l_balance_type_code);
12663    ELSE
12664       NULL;
12665 -- No business flow processing for business flow method of NONE.
12666    END IF;
12667 
12668    --
12669    -- call analytical criteria
12670    --
12671    
12672    --
12673    -- call description
12674    --
12675    
12676 xla_ae_lines_pkg.SetLineDescription(
12677    p_ae_header_id => l_ae_header_id
12678   ,p_description  => Description_2 (
12679      p_application_id         => p_application_id
12680    , p_ae_header_id           => l_ae_header_id 
12681 , p_source_3 => p_source_3
12682    )
12683 );
12684 
12685 
12686    --
12687    -- call ADRs
12688    -- Bug 4922099
12689    --
12690    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12691         (NVL(l_actual_upg_option, 'N') = 'O') OR
12692         (NVL(l_enc_upg_option, 'N') = 'O')
12693       )
12694    THEN
12695    NULL;
12696    --
12697    --
12698    
12699   l_ccid := AcctDerRule_9(
12700            p_application_id           => p_application_id
12701          , p_ae_header_id             => l_ae_header_id 
12702 , p_source_9 => p_source_9
12703          , x_transaction_coa_id       => l_adr_transaction_coa_id
12704          , x_accounting_coa_id        => l_adr_accounting_coa_id
12705          , x_value_type_code          => l_adr_value_type_code
12706          , p_side                     => 'NA'
12707    );
12708 
12709    xla_ae_lines_pkg.set_ccid(
12710     p_code_combination_id          => l_ccid
12711   , p_value_type_code              => l_adr_value_type_code
12712   , p_transaction_coa_id           => l_adr_transaction_coa_id
12713   , p_accounting_coa_id            => l_adr_accounting_coa_id
12714   , p_adr_code                     => 'FV_ACCOUNT_RULE'
12715   , p_adr_type_code                => 'S'
12716   , p_component_type               => l_component_type
12717   , p_component_code               => l_component_code
12718   , p_component_type_code          => l_component_type_code
12719   , p_component_appl_id            => l_component_appl_id
12720   , p_amb_context_code             => l_amb_context_code
12721   , p_side                         => 'NA'
12722   );
12723 
12724 
12725    l_segment := AcctDerRule_8(
12726            p_application_id           => p_application_id
12727          , p_ae_header_id             => l_ae_header_id 
12728          , x_transaction_coa_id       => l_adr_transaction_coa_id
12729          , x_accounting_coa_id        => l_adr_accounting_coa_id
12730          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
12731          , x_flex_value_set_id        => l_adr_flex_value_set_id
12732          , x_value_type_code          => l_adr_value_type_code
12733          , x_value_combination_id     => l_adr_value_combination_id
12734          , x_value_segment_code       => l_adr_value_segment_code
12735          , p_side                     => 'NA'
12736          , p_override_seg_flag        => 'Y'
12737    );
12738 
12739    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
12740 
12741       xla_ae_lines_pkg.set_segment(
12742           p_to_segment_code         => 'GL_ACCOUNT'
12743         , p_segment_value           => l_segment
12744         , p_from_segment_code       => l_adr_value_segment_code
12745         , p_from_combination_id     => l_adr_value_combination_id
12746         , p_value_type_code         => l_adr_value_type_code
12747         , p_transaction_coa_id      => l_adr_transaction_coa_id
12748         , p_accounting_coa_id       => l_adr_accounting_coa_id
12749         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
12750         , p_flex_value_set_id       => l_adr_flex_value_set_id
12751         , p_adr_code                => 'FV_48X101_PURCHASING'
12752         , p_adr_type_code           => 'S'
12753         , p_component_type          => l_component_type
12754         , p_component_code          => l_component_code
12755         , p_component_type_code     => l_component_type_code
12756         , p_component_appl_id       => l_component_appl_id
12757         , p_amb_context_code        => l_amb_context_code
12758         , p_entity_code             => 'PURCHASE_ORDER'
12759         , p_event_class_code        => 'PO_PA'
12760         , p_side                    => 'NA'
12761         );
12762 
12763   END IF;
12764 
12765    --
12766    --
12767    END IF;
12768    --
12769    -- Bug 4922099
12770    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12771           (NVL(l_enc_upg_option, 'N') = 'O')
12772         ) AND
12773         (l_bflow_method_code = 'PRIOR_ENTRY')
12774       )
12775    THEN
12776       IF
12777       --
12778       1 = 2
12779       --
12780       THEN
12781       xla_accounting_err_pkg.build_message
12782                                     (p_appli_s_name            => 'XLA'
12783                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12784                                     ,p_token_1                 => 'LINE_NUMBER'
12785                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12786                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12787                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12788                                                                              l_component_type
12789                                                                             ,l_component_code
12790                                                                             ,l_component_type_code
12791                                                                             ,l_component_appl_id
12792                                                                             ,l_amb_context_code
12793                                                                             ,l_entity_code
12794                                                                             ,l_event_class_code
12795                                                                            )
12796                                     ,p_token_3                 => 'OWNER'
12797                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12798                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12799                                                                           ,p_lookup_code    => l_component_type_code
12800                                                                          )
12801                                     ,p_token_4                 => 'PRODUCT_NAME'
12802                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12803                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12804                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12805                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12806                                     ,p_ae_header_id            =>  NULL
12807                                        );
12808 
12809         IF (C_LEVEL_ERROR>= g_log_level) THEN
12810                  trace
12811                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12812                       ,p_level    => C_LEVEL_ERROR
12813                       ,p_module   => l_log_module);
12814         END IF;
12815       END IF;
12816    END IF;
12817    --
12818    --
12819    ------------------------------------------------------------------------------------------------
12820    -- 4219869 Business Flow
12821    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12822    -- Prior Entry.  Currently, the following code is always generated.
12823    ------------------------------------------------------------------------------------------------
12824    XLA_AE_LINES_PKG.ValidateCurrentLine;
12825 
12826    ------------------------------------------------------------------------------------
12827    -- 4219869 Business Flow
12828    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12829    ------------------------------------------------------------------------------------
12830    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12831 
12832    ----------------------------------------------------------------------------------
12833    -- 4219869 Business Flow
12834    -- Update journal entry status -- Need to generate this within IF <condition>
12835    ----------------------------------------------------------------------------------
12836    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12837          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12838          ,p_balance_type_code => l_balance_type_code
12839          );
12840 
12841    -------------------------------------------------------------------------------------------
12842    -- 4262811 - Generate the Accrual Reversal lines
12843    -------------------------------------------------------------------------------------------
12844    BEGIN
12845       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12846                               (g_array_event(p_event_id).array_value_num('header_index'));
12847       IF l_acc_rev_flag IS NULL THEN
12848          l_acc_rev_flag := 'N';
12849       END IF;
12850    EXCEPTION
12851       WHEN OTHERS THEN
12852          l_acc_rev_flag := 'N';
12853    END;
12854    --
12855    IF (l_acc_rev_flag = 'Y') THEN
12856 
12857        -- 4645092  ------------------------------------------------------------------------------
12858        -- To allow MPA report to determine if it should generate report process
12859        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12860        ------------------------------------------------------------------------------------------
12861 
12862        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12863        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12864 
12865        --
12866        -- Update the line information that should be overwritten
12867        --
12868        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12869                                          p_header_num   => 1);
12870        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12871 
12872        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12873 
12874        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12875           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12876        END IF;
12877 
12878       --
12879       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12880       --
12881       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12882           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12883       ELSE
12884           ---------------------------------------------------------------------------------------------------
12885           -- 4262811a Switch Sign
12886           ---------------------------------------------------------------------------------------------------
12887           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12888           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12889                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12890           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12891                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12892           -- 5132302
12893           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12894                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12895 
12896       END IF;
12897 
12898       -- 4955764
12899       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12900       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12901 
12902 
12903       XLA_AE_LINES_PKG.ValidateCurrentLine;
12904       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12905 
12906       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12907                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12908                ,p_balance_type_code => l_balance_type_code);
12909 
12910    END IF;
12911 
12912    -----------------------------------------------------------------------------------------
12913    -- 4262811 Multiperiod Accounting
12914    -----------------------------------------------------------------------------------------
12915      -- No MPA option is assigned.
12916 
12917 
12918 END IF;
12919 END IF;
12920 --
12921 
12922 --
12923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12924    trace
12925       (p_msg      => 'END of AcctLineType_30'
12926       ,p_level    => C_LEVEL_PROCEDURE
12927       ,p_module   => l_log_module);
12928 END IF;
12929 --
12930 EXCEPTION
12931   WHEN xla_exceptions_pkg.application_exception THEN
12932       RAISE;
12933   WHEN OTHERS THEN
12934        xla_exceptions_pkg.raise_message
12935            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_30');
12936 END AcctLineType_30;
12937 --
12938 
12939 ---------------------------------------
12940 --
12941 -- PRIVATE FUNCTION
12942 --         AcctLineType_31
12943 --
12944 ---------------------------------------
12945 PROCEDURE AcctLineType_31 (
12946   p_application_id        IN NUMBER
12947  ,p_event_id              IN NUMBER
12948  ,p_calculate_acctd_flag  IN VARCHAR2
12949  ,p_calculate_g_l_flag    IN VARCHAR2
12950  ,p_actual_flag           IN OUT VARCHAR2
12951  ,p_balance_type_code     OUT VARCHAR2
12952  ,p_gain_or_loss_ref      OUT VARCHAR2
12953  
12954 --Journal entry Line Description
12955  , p_source_3            IN VARCHAR2
12956 --Federal Fund Category
12957  , p_source_7            IN VARCHAR2
12958 --Federal Fund Expired Status
12959  , p_source_8            IN VARCHAR2
12960 --Budget Account
12961  , p_source_9            IN NUMBER
12962 --Federal Prior Year Flag
12963  , p_source_10            IN VARCHAR2
12964 --Main Or Backing Code
12965  , p_source_13            IN VARCHAR2
12966 --PO Distribution Type
12967  , p_source_14            IN VARCHAR2
12968 --Accounting Reversal Flag
12969  , p_source_15            IN VARCHAR2
12970 --Distribution Link Type
12971  , p_source_17            IN VARCHAR2
12972 --PO Distribution Identifier
12973  , p_source_19            IN NUMBER
12974 --PO Header Identifier
12975  , p_source_20            IN NUMBER
12976 --Applied To Application Identifier
12977  , p_source_21            IN NUMBER
12978 --Applied To Distribution Link Type
12979  , p_source_22            IN VARCHAR2
12980 --Applied To Entity Code
12981  , p_source_23            IN VARCHAR2
12982 --Applied To Distribution Identifier 1
12983  , p_source_24            IN NUMBER
12984 --Applied To Header Identifier 1
12985  , p_source_25            IN NUMBER
12986 --Entered Amount
12987  , p_source_26            IN NUMBER
12988 --Currency Code
12989  , p_source_27            IN VARCHAR2
12990 --Accounted Amount
12991  , p_source_28            IN NUMBER
12992 --PO Encumbrance Upgrade Option
12993  , p_source_29            IN VARCHAR2
12994 --JFMIP Reference
12995  , p_source_31            IN VARCHAR2
12996 --PO Upgrade Encumbrance Type Identifier
12997  , p_source_32            IN NUMBER
12998 --Currency Conversion Date
12999  , p_source_35            IN DATE
13000 --Currency Conversion Rate
13001  , p_source_36            IN NUMBER
13002 --Currency Conversion Type
13003  , p_source_37            IN VARCHAR2
13004 --Federal Pya Amt
13005  , p_source_40            IN NUMBER
13006 )
13007 IS
13008 
13009 l_component_type              VARCHAR2(80);
13010 l_component_code              VARCHAR2(30);
13011 l_component_type_code         VARCHAR2(1);
13012 l_component_appl_id           INTEGER;
13013 l_amb_context_code            VARCHAR2(30);
13014 l_entity_code                 VARCHAR2(30);
13015 l_event_class_code            VARCHAR2(30);
13016 l_ae_header_id                NUMBER;
13017 l_event_type_code             VARCHAR2(30);
13018 l_line_definition_code        VARCHAR2(30);
13019 l_line_definition_owner_code  VARCHAR2(1);
13020 --
13021 -- adr variables
13022 l_segment                     VARCHAR2(30);
13023 l_ccid                        NUMBER;
13024 l_adr_transaction_coa_id      NUMBER;
13025 l_adr_accounting_coa_id       NUMBER;
13026 l_adr_flexfield_segment_code  VARCHAR2(30);
13027 l_adr_flex_value_set_id       NUMBER;
13028 l_adr_value_type_code         VARCHAR2(30);
13029 l_adr_value_combination_id    NUMBER;
13030 l_adr_value_segment_code      VARCHAR2(30);
13031 
13032 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13033 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13034 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13035 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13036 
13037 -- 4262811 Variables ------------------------------------------------------------------------------------------
13038 l_entered_amt_idx             NUMBER;
13039 l_accted_amt_idx              NUMBER;
13040 l_acc_rev_flag                VARCHAR2(1);
13041 l_accrual_line_num            NUMBER;
13042 l_tmp_amt                     NUMBER;
13043 l_acc_rev_natural_side_code   VARCHAR2(1);
13044 
13045 l_num_entries                 NUMBER;
13046 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13047 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13048 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13049 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13050 l_recog_line_1                NUMBER;
13051 l_recog_line_2                NUMBER;
13052 
13053 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13054 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13055 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13056 
13057 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13058 
13059 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13060 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13061 
13062 ---------------------------------------------------------------------------------------------------------------
13063 
13064 
13065 --
13066 -- bulk performance
13067 --
13068 l_balance_type_code           VARCHAR2(1);
13069 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13070 l_log_module                  VARCHAR2(240);
13071 
13072 --
13073 -- Upgrade strategy
13074 --
13075 l_actual_upg_option           VARCHAR2(1);
13076 l_enc_upg_option           VARCHAR2(1);
13077 
13078 --
13079 BEGIN
13080 --
13081 IF g_log_enabled THEN
13082       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
13083 END IF;
13084 --
13085 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13086 
13087       trace
13088          (p_msg      => 'BEGIN of AcctLineType_31'
13089          ,p_level    => C_LEVEL_PROCEDURE
13090          ,p_module   => l_log_module);
13091 
13092 END IF;
13093 --
13094 l_component_type             := 'AMB_JLT';
13095 l_component_code             := 'FV_PO_PYA_RESERVE_DR';
13096 l_component_type_code        := 'S';
13097 l_component_appl_id          :=  201;
13098 l_amb_context_code           := 'DEFAULT';
13099 l_entity_code                := 'PURCHASE_ORDER';
13100 l_event_class_code           := 'PO_PA';
13101 l_event_type_code            := 'PO_PA_ALL';
13102 l_line_definition_owner_code := 'S';
13103 l_line_definition_code       := 'FV_PO_ALL';
13104 --
13105 l_balance_type_code          := 'A';
13106 l_segment                     := NULL;
13107 l_ccid                        := NULL;
13108 l_adr_transaction_coa_id      := NULL;
13109 l_adr_accounting_coa_id       := NULL;
13110 l_adr_flexfield_segment_code  := NULL;
13111 l_adr_flex_value_set_id       := NULL;
13112 l_adr_value_type_code         := NULL;
13113 l_adr_value_combination_id    := NULL;
13114 l_adr_value_segment_code      := NULL;
13115 
13116 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13117 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
13118 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13119 l_budgetary_control_flag     := 'Y';
13120 
13121 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13122 l_bflow_applied_to_amt       := NULL; -- 5132302
13123 l_entered_amt_idx            := NULL;          -- 4262811
13124 l_accted_amt_idx             := NULL;          -- 4262811
13125 l_acc_rev_flag               := NULL;          -- 4262811
13126 l_accrual_line_num           := NULL;          -- 4262811
13127 l_tmp_amt                    := NULL;          -- 4262811
13128 --
13129  
13130 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13131     l_balance_type_code <> 'B' THEN
13132 IF NVL(
13133 xla_ae_sources_pkg.GetSystemSourceChar(
13134    p_source_code           => 'XLA_EVENT_TYPE_CODE'
13135  , p_source_type_code      => 'Y'
13136  , p_source_application_id =>  602
13137 ),'
13138 ') =  'PO_PA_RESERVED' AND 
13139 NVL(p_source_13,'
13140 ') =  'M' AND 
13141 (NVL(p_source_14,'
13142 ') <>  'AGREEMENT' OR 
13143 p_source_14 IS NULL ) AND 
13144 NVL(p_source_10,'
13145 ') =  'Y' AND 
13146 NVL(p_source_40,9E125) <>  0 AND 
13147 p_source_40 IS NOT NULL 
13148  THEN 
13149 
13150    --
13151    XLA_AE_LINES_PKG.SetNewLine;
13152 
13153    p_balance_type_code          := l_balance_type_code;
13154    -- set the flag so later we will know whether the gain loss line needs to be created
13155    
13156    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13157      p_actual_flag :='A';
13158    END IF;
13159 
13160    --
13161    -- bulk performance
13162    --
13163    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13164                                       p_header_num   => 0); -- 4262811
13165    --
13166    -- set accounting line options
13167    --
13168    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13169            p_natural_side_code          => 'D'
13170          , p_gain_or_loss_flag          => 'N'
13171          , p_gl_transfer_mode_code      => 'S'
13172          , p_acct_entry_type_code       => 'A'
13173          , p_switch_side_flag           => 'Y'
13174          , p_merge_duplicate_code       => 'N'
13175          );
13176    --
13177    l_acc_rev_natural_side_code := 'C';  -- 4262811
13178    -- 
13179    --
13180    -- set accounting line type info
13181    --
13182    xla_ae_lines_pkg.SetAcctLineType
13183       (p_component_type             => l_component_type
13184       ,p_event_type_code            => l_event_type_code
13185       ,p_line_definition_owner_code => l_line_definition_owner_code
13186       ,p_line_definition_code       => l_line_definition_code
13187       ,p_accounting_line_code       => l_component_code
13188       ,p_accounting_line_type_code  => l_component_type_code
13189       ,p_accounting_line_appl_id    => l_component_appl_id
13190       ,p_amb_context_code           => l_amb_context_code
13191       ,p_entity_code                => l_entity_code
13192       ,p_event_class_code           => l_event_class_code);
13193    --
13194    -- set accounting class
13195    --
13196    xla_ae_lines_pkg.SetAcctClass(
13197            p_accounting_class_code  => 'PURCHASE_ORDER'
13198          , p_ae_header_id           => l_ae_header_id
13199          );
13200 
13201    --
13202    -- set rounding class
13203    --
13204    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13205                       'PURCHASE_ORDER';
13206 
13207    --
13208    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13209    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13210    --
13211    -- bulk performance
13212    --
13213    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13214 
13215    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13216       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13217 
13218    -- 4955764
13219    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13220       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13221 
13222    -- 4458381 Public Sector Enh
13223    
13224    --
13225    -- set accounting attributes for the line type
13226    --
13227    l_entered_amt_idx := 23;
13228    l_accted_amt_idx  := 28;
13229    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13230    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
13231    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
13232    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
13233    l_rec_acct_attrs.array_num_value(2)  := 
13234 xla_ae_sources_pkg.GetSystemSourceNum(
13235    p_source_code           => 'XLA_EVENT_APPL_ID'
13236  , p_source_type_code      => 'Y'
13237  , p_source_application_id =>  602
13238 );
13239    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
13240    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
13241    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
13242    l_rec_acct_attrs.array_char_value(4)  := 
13243 xla_ae_sources_pkg.GetSystemSourceChar(
13244    p_source_code           => 'XLA_ENTITY_CODE'
13245  , p_source_type_code      => 'Y'
13246  , p_source_application_id =>  602
13247 );
13248    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
13249    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
13250    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
13251    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
13252    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
13253    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
13254    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13255    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
13256    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
13257    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
13258    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
13259    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
13260    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13261    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
13262    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
13263    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
13264    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
13265    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
13266    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
13267    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
13268    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
13269    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
13270    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
13271    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
13272    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
13273    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
13274    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
13275    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
13276    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
13277    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
13278    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
13279    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
13280    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
13281    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
13282    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
13283    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
13284    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
13285    l_rec_acct_attrs.array_num_value(23)  := p_source_40;
13286    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
13287    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
13288    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
13289    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
13290    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
13291    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
13292    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
13293    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
13294    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
13295    l_rec_acct_attrs.array_num_value(28)  := p_source_40;
13296    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
13297    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
13298    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
13299    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
13300    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
13301    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
13302    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
13303    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
13304    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
13305    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
13306    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
13307    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
13308 
13309    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13310    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13311 
13312    ---------------------------------------------------------------------------------------------------------------
13313    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13314    ---------------------------------------------------------------------------------------------------------------
13315    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13316 
13317    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13318    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13319 
13320    IF xla_accounting_cache_pkg.GetValueChar
13321          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13322          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13323    AND l_bflow_method_code = 'PRIOR_ENTRY'
13324 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13325    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13326          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13327        )
13328    THEN
13329          xla_ae_lines_pkg.BflowUpgEntry
13330            (p_business_method_code    => l_bflow_method_code
13331            ,p_business_class_code     => l_bflow_class_code
13332            ,p_balance_type            => l_balance_type_code);
13333    ELSE
13334       NULL;
13335 -- No business flow processing for business flow method of NONE.
13336    END IF;
13337 
13338    --
13339    -- call analytical criteria
13340    --
13341    
13342    --
13343    -- call description
13344    --
13345    
13346 xla_ae_lines_pkg.SetLineDescription(
13347    p_ae_header_id => l_ae_header_id
13348   ,p_description  => Description_2 (
13349      p_application_id         => p_application_id
13350    , p_ae_header_id           => l_ae_header_id 
13351 , p_source_3 => p_source_3
13352    )
13353 );
13354 
13355 
13356    --
13357    -- call ADRs
13358    -- Bug 4922099
13359    --
13360    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13361         (NVL(l_actual_upg_option, 'N') = 'O') OR
13362         (NVL(l_enc_upg_option, 'N') = 'O')
13363       )
13364    THEN
13365    NULL;
13366    --
13367    --
13368    
13369   l_ccid := AcctDerRule_9(
13370            p_application_id           => p_application_id
13371          , p_ae_header_id             => l_ae_header_id 
13372 , p_source_9 => p_source_9
13373          , x_transaction_coa_id       => l_adr_transaction_coa_id
13374          , x_accounting_coa_id        => l_adr_accounting_coa_id
13375          , x_value_type_code          => l_adr_value_type_code
13376          , p_side                     => 'NA'
13377    );
13378 
13379    xla_ae_lines_pkg.set_ccid(
13380     p_code_combination_id          => l_ccid
13381   , p_value_type_code              => l_adr_value_type_code
13382   , p_transaction_coa_id           => l_adr_transaction_coa_id
13383   , p_accounting_coa_id            => l_adr_accounting_coa_id
13384   , p_adr_code                     => 'FV_ACCOUNT_RULE'
13385   , p_adr_type_code                => 'S'
13386   , p_component_type               => l_component_type
13387   , p_component_code               => l_component_code
13388   , p_component_type_code          => l_component_type_code
13389   , p_component_appl_id            => l_component_appl_id
13390   , p_amb_context_code             => l_amb_context_code
13391   , p_side                         => 'NA'
13392   );
13393 
13394 
13395    l_segment := AcctDerRule_5(
13396            p_application_id           => p_application_id
13397          , p_ae_header_id             => l_ae_header_id 
13398 , p_source_7 => p_source_7
13399 , p_source_8 => p_source_8
13400          , x_transaction_coa_id       => l_adr_transaction_coa_id
13401          , x_accounting_coa_id        => l_adr_accounting_coa_id
13402          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
13403          , x_flex_value_set_id        => l_adr_flex_value_set_id
13404          , x_value_type_code          => l_adr_value_type_code
13405          , x_value_combination_id     => l_adr_value_combination_id
13406          , x_value_segment_code       => l_adr_value_segment_code
13407          , p_side                     => 'NA'
13408          , p_override_seg_flag        => 'Y'
13409    );
13410 
13411    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
13412 
13413       xla_ae_lines_pkg.set_segment(
13414           p_to_segment_code         => 'GL_ACCOUNT'
13415         , p_segment_value           => l_segment
13416         , p_from_segment_code       => l_adr_value_segment_code
13417         , p_from_combination_id     => l_adr_value_combination_id
13418         , p_value_type_code         => l_adr_value_type_code
13419         , p_transaction_coa_id      => l_adr_transaction_coa_id
13420         , p_accounting_coa_id       => l_adr_accounting_coa_id
13421         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
13422         , p_flex_value_set_id       => l_adr_flex_value_set_id
13423         , p_adr_code                => 'FV_46X002'
13424         , p_adr_type_code           => 'S'
13425         , p_component_type          => l_component_type
13426         , p_component_code          => l_component_code
13427         , p_component_type_code     => l_component_type_code
13428         , p_component_appl_id       => l_component_appl_id
13429         , p_amb_context_code        => l_amb_context_code
13430         , p_entity_code             => 'PURCHASE_ORDER'
13431         , p_event_class_code        => 'PO_PA'
13432         , p_side                    => 'NA'
13433         );
13434 
13435   END IF;
13436 
13437    --
13438    --
13439    END IF;
13440    --
13441    -- Bug 4922099
13442    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13443           (NVL(l_enc_upg_option, 'N') = 'O')
13444         ) AND
13445         (l_bflow_method_code = 'PRIOR_ENTRY')
13446       )
13447    THEN
13448       IF
13449       --
13450       1 = 2
13451       --
13452       THEN
13453       xla_accounting_err_pkg.build_message
13454                                     (p_appli_s_name            => 'XLA'
13455                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13456                                     ,p_token_1                 => 'LINE_NUMBER'
13457                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13458                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13459                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13460                                                                              l_component_type
13461                                                                             ,l_component_code
13462                                                                             ,l_component_type_code
13463                                                                             ,l_component_appl_id
13464                                                                             ,l_amb_context_code
13465                                                                             ,l_entity_code
13466                                                                             ,l_event_class_code
13467                                                                            )
13468                                     ,p_token_3                 => 'OWNER'
13469                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13470                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13471                                                                           ,p_lookup_code    => l_component_type_code
13472                                                                          )
13473                                     ,p_token_4                 => 'PRODUCT_NAME'
13474                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13475                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13476                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13477                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13478                                     ,p_ae_header_id            =>  NULL
13479                                        );
13480 
13481         IF (C_LEVEL_ERROR>= g_log_level) THEN
13482                  trace
13483                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13484                       ,p_level    => C_LEVEL_ERROR
13485                       ,p_module   => l_log_module);
13486         END IF;
13487       END IF;
13488    END IF;
13489    --
13490    --
13491    ------------------------------------------------------------------------------------------------
13492    -- 4219869 Business Flow
13493    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13494    -- Prior Entry.  Currently, the following code is always generated.
13495    ------------------------------------------------------------------------------------------------
13496    XLA_AE_LINES_PKG.ValidateCurrentLine;
13497 
13498    ------------------------------------------------------------------------------------
13499    -- 4219869 Business Flow
13500    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13501    ------------------------------------------------------------------------------------
13502    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13503 
13504    ----------------------------------------------------------------------------------
13505    -- 4219869 Business Flow
13506    -- Update journal entry status -- Need to generate this within IF <condition>
13507    ----------------------------------------------------------------------------------
13508    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13509          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13510          ,p_balance_type_code => l_balance_type_code
13511          );
13512 
13513    -------------------------------------------------------------------------------------------
13514    -- 4262811 - Generate the Accrual Reversal lines
13515    -------------------------------------------------------------------------------------------
13516    BEGIN
13517       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13518                               (g_array_event(p_event_id).array_value_num('header_index'));
13519       IF l_acc_rev_flag IS NULL THEN
13520          l_acc_rev_flag := 'N';
13521       END IF;
13522    EXCEPTION
13523       WHEN OTHERS THEN
13524          l_acc_rev_flag := 'N';
13525    END;
13526    --
13527    IF (l_acc_rev_flag = 'Y') THEN
13528 
13529        -- 4645092  ------------------------------------------------------------------------------
13530        -- To allow MPA report to determine if it should generate report process
13531        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13532        ------------------------------------------------------------------------------------------
13533 
13534        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13535        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13536 
13537        --
13538        -- Update the line information that should be overwritten
13539        --
13540        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13541                                          p_header_num   => 1);
13542        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13543 
13544        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13545 
13546        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13547           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13548        END IF;
13549 
13550       --
13551       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13552       --
13553       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13554           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13555       ELSE
13556           ---------------------------------------------------------------------------------------------------
13557           -- 4262811a Switch Sign
13558           ---------------------------------------------------------------------------------------------------
13559           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13560           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13561                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13562           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13563                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13564           -- 5132302
13565           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13566                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13567 
13568       END IF;
13569 
13570       -- 4955764
13571       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13572       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13573 
13574 
13575       XLA_AE_LINES_PKG.ValidateCurrentLine;
13576       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13577 
13578       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13579                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13580                ,p_balance_type_code => l_balance_type_code);
13581 
13582    END IF;
13583 
13584    -----------------------------------------------------------------------------------------
13585    -- 4262811 Multiperiod Accounting
13586    -----------------------------------------------------------------------------------------
13587      -- No MPA option is assigned.
13588 
13589 
13590 END IF;
13591 END IF;
13592 --
13593 
13594 --
13595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13596    trace
13597       (p_msg      => 'END of AcctLineType_31'
13598       ,p_level    => C_LEVEL_PROCEDURE
13599       ,p_module   => l_log_module);
13600 END IF;
13601 --
13602 EXCEPTION
13603   WHEN xla_exceptions_pkg.application_exception THEN
13604       RAISE;
13605   WHEN OTHERS THEN
13606        xla_exceptions_pkg.raise_message
13607            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_31');
13608 END AcctLineType_31;
13609 --
13610 
13611 ---------------------------------------
13612 --
13613 -- PRIVATE FUNCTION
13614 --         AcctLineType_32
13615 --
13616 ---------------------------------------
13617 PROCEDURE AcctLineType_32 (
13618   p_application_id        IN NUMBER
13619  ,p_event_id              IN NUMBER
13620  ,p_calculate_acctd_flag  IN VARCHAR2
13621  ,p_calculate_g_l_flag    IN VARCHAR2
13622  ,p_actual_flag           IN OUT VARCHAR2
13623  ,p_balance_type_code     OUT VARCHAR2
13624  ,p_gain_or_loss_ref      OUT VARCHAR2
13625  
13626 --Journal entry Line Description
13627  , p_source_3            IN VARCHAR2
13628 --Federal Fund Expired Status
13629  , p_source_8            IN VARCHAR2
13630 --Budget Account
13631  , p_source_9            IN NUMBER
13632 --Federal Prior Year Flag
13633  , p_source_10            IN VARCHAR2
13634 --Main Or Backing Code
13635  , p_source_13            IN VARCHAR2
13636 --PO Distribution Type
13637  , p_source_14            IN VARCHAR2
13638 --Accounting Reversal Flag
13639  , p_source_15            IN VARCHAR2
13640 --Distribution Link Type
13641  , p_source_17            IN VARCHAR2
13642 --PO Distribution Identifier
13643  , p_source_19            IN NUMBER
13644 --PO Header Identifier
13645  , p_source_20            IN NUMBER
13646 --Applied To Application Identifier
13647  , p_source_21            IN NUMBER
13648 --Applied To Distribution Link Type
13649  , p_source_22            IN VARCHAR2
13650 --Applied To Entity Code
13651  , p_source_23            IN VARCHAR2
13652 --Applied To Distribution Identifier 1
13653  , p_source_24            IN NUMBER
13654 --Applied To Header Identifier 1
13655  , p_source_25            IN NUMBER
13656 --Entered Amount
13657  , p_source_26            IN NUMBER
13658 --Currency Code
13659  , p_source_27            IN VARCHAR2
13660 --Accounted Amount
13661  , p_source_28            IN NUMBER
13662 --PO Encumbrance Upgrade Option
13663  , p_source_29            IN VARCHAR2
13664 --JFMIP Reference
13665  , p_source_31            IN VARCHAR2
13666 --PO Upgrade Encumbrance Type Identifier
13667  , p_source_32            IN NUMBER
13668 --Currency Conversion Date
13669  , p_source_35            IN DATE
13670 --Currency Conversion Rate
13671  , p_source_36            IN NUMBER
13672 --Currency Conversion Type
13673  , p_source_37            IN VARCHAR2
13674 )
13675 IS
13676 
13677 l_component_type              VARCHAR2(80);
13678 l_component_code              VARCHAR2(30);
13679 l_component_type_code         VARCHAR2(1);
13680 l_component_appl_id           INTEGER;
13681 l_amb_context_code            VARCHAR2(30);
13682 l_entity_code                 VARCHAR2(30);
13683 l_event_class_code            VARCHAR2(30);
13684 l_ae_header_id                NUMBER;
13685 l_event_type_code             VARCHAR2(30);
13686 l_line_definition_code        VARCHAR2(30);
13687 l_line_definition_owner_code  VARCHAR2(1);
13688 --
13689 -- adr variables
13690 l_segment                     VARCHAR2(30);
13691 l_ccid                        NUMBER;
13692 l_adr_transaction_coa_id      NUMBER;
13693 l_adr_accounting_coa_id       NUMBER;
13694 l_adr_flexfield_segment_code  VARCHAR2(30);
13695 l_adr_flex_value_set_id       NUMBER;
13696 l_adr_value_type_code         VARCHAR2(30);
13697 l_adr_value_combination_id    NUMBER;
13698 l_adr_value_segment_code      VARCHAR2(30);
13699 
13700 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13701 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13702 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13703 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13704 
13705 -- 4262811 Variables ------------------------------------------------------------------------------------------
13706 l_entered_amt_idx             NUMBER;
13707 l_accted_amt_idx              NUMBER;
13708 l_acc_rev_flag                VARCHAR2(1);
13709 l_accrual_line_num            NUMBER;
13710 l_tmp_amt                     NUMBER;
13711 l_acc_rev_natural_side_code   VARCHAR2(1);
13712 
13713 l_num_entries                 NUMBER;
13714 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13715 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13716 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13717 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13718 l_recog_line_1                NUMBER;
13719 l_recog_line_2                NUMBER;
13720 
13721 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13722 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13723 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13724 
13725 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13726 
13727 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13728 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13729 
13730 ---------------------------------------------------------------------------------------------------------------
13731 
13732 
13733 --
13734 -- bulk performance
13735 --
13736 l_balance_type_code           VARCHAR2(1);
13737 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13738 l_log_module                  VARCHAR2(240);
13739 
13740 --
13741 -- Upgrade strategy
13742 --
13743 l_actual_upg_option           VARCHAR2(1);
13744 l_enc_upg_option           VARCHAR2(1);
13745 
13746 --
13747 BEGIN
13748 --
13749 IF g_log_enabled THEN
13750       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
13751 END IF;
13752 --
13753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13754 
13755       trace
13756          (p_msg      => 'BEGIN of AcctLineType_32'
13757          ,p_level    => C_LEVEL_PROCEDURE
13758          ,p_module   => l_log_module);
13759 
13760 END IF;
13761 --
13762 l_component_type             := 'AMB_JLT';
13763 l_component_code             := 'FV_PO_PYA_REVERSE_CR';
13764 l_component_type_code        := 'S';
13765 l_component_appl_id          :=  201;
13766 l_amb_context_code           := 'DEFAULT';
13767 l_entity_code                := 'PURCHASE_ORDER';
13768 l_event_class_code           := 'PO_PA';
13769 l_event_type_code            := 'PO_PA_ALL';
13770 l_line_definition_owner_code := 'S';
13771 l_line_definition_code       := 'FV_PO_ALL';
13772 --
13773 l_balance_type_code          := 'A';
13774 l_segment                     := NULL;
13775 l_ccid                        := NULL;
13776 l_adr_transaction_coa_id      := NULL;
13777 l_adr_accounting_coa_id       := NULL;
13778 l_adr_flexfield_segment_code  := NULL;
13779 l_adr_flex_value_set_id       := NULL;
13780 l_adr_value_type_code         := NULL;
13781 l_adr_value_combination_id    := NULL;
13782 l_adr_value_segment_code      := NULL;
13783 
13784 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13785 l_bflow_class_code           := '';    -- 4219869 Business Flow
13786 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13787 l_budgetary_control_flag     := 'Y';
13788 
13789 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13790 l_bflow_applied_to_amt       := NULL; -- 5132302
13791 l_entered_amt_idx            := NULL;          -- 4262811
13792 l_accted_amt_idx             := NULL;          -- 4262811
13793 l_acc_rev_flag               := NULL;          -- 4262811
13794 l_accrual_line_num           := NULL;          -- 4262811
13795 l_tmp_amt                    := NULL;          -- 4262811
13796 --
13797  
13798 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13799     l_balance_type_code <> 'B' THEN
13800 IF NVL(
13801 xla_ae_sources_pkg.GetSystemSourceChar(
13802    p_source_code           => 'XLA_EVENT_TYPE_CODE'
13803  , p_source_type_code      => 'Y'
13804  , p_source_application_id =>  602
13805 ),'
13806 ') =  'PO_PA_CANCELLED' AND 
13807 NVL(p_source_13,'
13808 ') =  'M' AND 
13809 (NVL(p_source_14,'
13810 ') <>  'AGREEMENT' OR 
13811 p_source_14 IS NULL ) AND 
13812 NVL(p_source_10,'
13813 ') =  'Y'
13814  THEN 
13815 
13816    --
13817    XLA_AE_LINES_PKG.SetNewLine;
13818 
13819    p_balance_type_code          := l_balance_type_code;
13820    -- set the flag so later we will know whether the gain loss line needs to be created
13821    
13822    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13823      p_actual_flag :='A';
13824    END IF;
13825 
13826    --
13827    -- bulk performance
13828    --
13829    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13830                                       p_header_num   => 0); -- 4262811
13831    --
13832    -- set accounting line options
13833    --
13834    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13835            p_natural_side_code          => 'D'
13836          , p_gain_or_loss_flag          => 'N'
13837          , p_gl_transfer_mode_code      => 'S'
13838          , p_acct_entry_type_code       => 'A'
13839          , p_switch_side_flag           => 'Y'
13840          , p_merge_duplicate_code       => 'N'
13841          );
13842    --
13843    l_acc_rev_natural_side_code := 'C';  -- 4262811
13844    -- 
13845    --
13846    -- set accounting line type info
13847    --
13848    xla_ae_lines_pkg.SetAcctLineType
13849       (p_component_type             => l_component_type
13850       ,p_event_type_code            => l_event_type_code
13851       ,p_line_definition_owner_code => l_line_definition_owner_code
13852       ,p_line_definition_code       => l_line_definition_code
13853       ,p_accounting_line_code       => l_component_code
13854       ,p_accounting_line_type_code  => l_component_type_code
13855       ,p_accounting_line_appl_id    => l_component_appl_id
13856       ,p_amb_context_code           => l_amb_context_code
13857       ,p_entity_code                => l_entity_code
13858       ,p_event_class_code           => l_event_class_code);
13859    --
13860    -- set accounting class
13861    --
13862    xla_ae_lines_pkg.SetAcctClass(
13863            p_accounting_class_code  => 'PURCHASE_ORDER'
13864          , p_ae_header_id           => l_ae_header_id
13865          );
13866 
13867    --
13868    -- set rounding class
13869    --
13870    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13871                       'PURCHASE_ORDER';
13872 
13873    --
13874    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13875    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13876    --
13877    -- bulk performance
13878    --
13879    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13880 
13881    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13882       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13883 
13884    -- 4955764
13885    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13886       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13887 
13888    -- 4458381 Public Sector Enh
13889    
13890    --
13891    -- set accounting attributes for the line type
13892    --
13893    l_entered_amt_idx := 23;
13894    l_accted_amt_idx  := 28;
13895    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13896    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
13897    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
13898    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
13899    l_rec_acct_attrs.array_num_value(2)  := 
13900 xla_ae_sources_pkg.GetSystemSourceNum(
13901    p_source_code           => 'XLA_EVENT_APPL_ID'
13902  , p_source_type_code      => 'Y'
13903  , p_source_application_id =>  602
13904 );
13905    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
13906    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
13907    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
13908    l_rec_acct_attrs.array_char_value(4)  := 
13909 xla_ae_sources_pkg.GetSystemSourceChar(
13910    p_source_code           => 'XLA_ENTITY_CODE'
13911  , p_source_type_code      => 'Y'
13912  , p_source_application_id =>  602
13913 );
13914    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
13915    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
13916    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
13917    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
13918    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
13919    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
13920    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13921    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
13922    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
13923    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
13924    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
13925    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
13926    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13927    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
13928    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
13929    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
13930    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
13931    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
13932    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
13933    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
13934    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
13935    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
13936    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
13937    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
13938    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
13939    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
13940    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
13941    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
13942    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
13943    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
13944    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
13945    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
13946    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
13947    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
13948    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
13949    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
13950    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
13951    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
13952    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
13953    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
13954    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
13955    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
13956    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
13957    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
13958    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
13959    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
13960    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
13961    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
13962    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
13963    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
13964    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
13965    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
13966    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
13967    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
13968    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
13969    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
13970    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
13971    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
13972    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
13973    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
13974 
13975    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13976    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13977 
13978    ---------------------------------------------------------------------------------------------------------------
13979    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13980    ---------------------------------------------------------------------------------------------------------------
13981    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13982 
13983    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13984    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13985 
13986    IF xla_accounting_cache_pkg.GetValueChar
13987          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13988          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13989    AND l_bflow_method_code = 'PRIOR_ENTRY'
13990 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13991    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13992          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13993        )
13994    THEN
13995          xla_ae_lines_pkg.BflowUpgEntry
13996            (p_business_method_code    => l_bflow_method_code
13997            ,p_business_class_code     => l_bflow_class_code
13998            ,p_balance_type            => l_balance_type_code);
13999    ELSE
14000       NULL;
14001 -- No business flow processing for business flow method of NONE.
14002    END IF;
14003 
14004    --
14005    -- call analytical criteria
14006    --
14007    
14008    --
14009    -- call description
14010    --
14011    
14012 xla_ae_lines_pkg.SetLineDescription(
14013    p_ae_header_id => l_ae_header_id
14014   ,p_description  => Description_2 (
14015      p_application_id         => p_application_id
14016    , p_ae_header_id           => l_ae_header_id 
14017 , p_source_3 => p_source_3
14018    )
14019 );
14020 
14021 
14022    --
14023    -- call ADRs
14024    -- Bug 4922099
14025    --
14026    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14027         (NVL(l_actual_upg_option, 'N') = 'O') OR
14028         (NVL(l_enc_upg_option, 'N') = 'O')
14029       )
14030    THEN
14031    NULL;
14032    --
14033    --
14034    
14035   l_ccid := AcctDerRule_9(
14036            p_application_id           => p_application_id
14037          , p_ae_header_id             => l_ae_header_id 
14038 , p_source_9 => p_source_9
14039          , x_transaction_coa_id       => l_adr_transaction_coa_id
14040          , x_accounting_coa_id        => l_adr_accounting_coa_id
14041          , x_value_type_code          => l_adr_value_type_code
14042          , p_side                     => 'NA'
14043    );
14044 
14045    xla_ae_lines_pkg.set_ccid(
14046     p_code_combination_id          => l_ccid
14047   , p_value_type_code              => l_adr_value_type_code
14048   , p_transaction_coa_id           => l_adr_transaction_coa_id
14049   , p_accounting_coa_id            => l_adr_accounting_coa_id
14050   , p_adr_code                     => 'FV_ACCOUNT_RULE'
14051   , p_adr_type_code                => 'S'
14052   , p_component_type               => l_component_type
14053   , p_component_code               => l_component_code
14054   , p_component_type_code          => l_component_type_code
14055   , p_component_appl_id            => l_component_appl_id
14056   , p_amb_context_code             => l_amb_context_code
14057   , p_side                         => 'NA'
14058   );
14059 
14060 
14061    l_segment := AcctDerRule_11(
14062            p_application_id           => p_application_id
14063          , p_ae_header_id             => l_ae_header_id 
14064 , p_source_8 => p_source_8
14065          , x_transaction_coa_id       => l_adr_transaction_coa_id
14066          , x_accounting_coa_id        => l_adr_accounting_coa_id
14067          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
14068          , x_flex_value_set_id        => l_adr_flex_value_set_id
14069          , x_value_type_code          => l_adr_value_type_code
14070          , x_value_combination_id     => l_adr_value_combination_id
14071          , x_value_segment_code       => l_adr_value_segment_code
14072          , p_side                     => 'NA'
14073          , p_override_seg_flag        => 'Y'
14074    );
14075 
14076    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
14077 
14078       xla_ae_lines_pkg.set_segment(
14079           p_to_segment_code         => 'GL_ACCOUNT'
14080         , p_segment_value           => l_segment
14081         , p_from_segment_code       => l_adr_value_segment_code
14082         , p_from_combination_id     => l_adr_value_combination_id
14083         , p_value_type_code         => l_adr_value_type_code
14084         , p_transaction_coa_id      => l_adr_transaction_coa_id
14085         , p_accounting_coa_id       => l_adr_accounting_coa_id
14086         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
14087         , p_flex_value_set_id       => l_adr_flex_value_set_id
14088         , p_adr_code                => 'FV_PYA_445002_UNANTICIPATED'
14089         , p_adr_type_code           => 'S'
14090         , p_component_type          => l_component_type
14091         , p_component_code          => l_component_code
14092         , p_component_type_code     => l_component_type_code
14093         , p_component_appl_id       => l_component_appl_id
14094         , p_amb_context_code        => l_amb_context_code
14095         , p_entity_code             => 'PURCHASE_ORDER'
14096         , p_event_class_code        => 'PO_PA'
14097         , p_side                    => 'NA'
14098         );
14099 
14100   END IF;
14101 
14102    --
14103    --
14104    END IF;
14105    --
14106    -- Bug 4922099
14107    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14108           (NVL(l_enc_upg_option, 'N') = 'O')
14109         ) AND
14110         (l_bflow_method_code = 'PRIOR_ENTRY')
14111       )
14112    THEN
14113       IF
14114       --
14115       1 = 2
14116       --
14117       THEN
14118       xla_accounting_err_pkg.build_message
14119                                     (p_appli_s_name            => 'XLA'
14120                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14121                                     ,p_token_1                 => 'LINE_NUMBER'
14122                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14123                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14124                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14125                                                                              l_component_type
14126                                                                             ,l_component_code
14127                                                                             ,l_component_type_code
14128                                                                             ,l_component_appl_id
14129                                                                             ,l_amb_context_code
14130                                                                             ,l_entity_code
14131                                                                             ,l_event_class_code
14132                                                                            )
14133                                     ,p_token_3                 => 'OWNER'
14134                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14135                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14136                                                                           ,p_lookup_code    => l_component_type_code
14137                                                                          )
14138                                     ,p_token_4                 => 'PRODUCT_NAME'
14139                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14140                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14141                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14142                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14143                                     ,p_ae_header_id            =>  NULL
14144                                        );
14145 
14146         IF (C_LEVEL_ERROR>= g_log_level) THEN
14147                  trace
14148                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14149                       ,p_level    => C_LEVEL_ERROR
14150                       ,p_module   => l_log_module);
14151         END IF;
14152       END IF;
14153    END IF;
14154    --
14155    --
14156    ------------------------------------------------------------------------------------------------
14157    -- 4219869 Business Flow
14158    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14159    -- Prior Entry.  Currently, the following code is always generated.
14160    ------------------------------------------------------------------------------------------------
14161    XLA_AE_LINES_PKG.ValidateCurrentLine;
14162 
14163    ------------------------------------------------------------------------------------
14164    -- 4219869 Business Flow
14165    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14166    ------------------------------------------------------------------------------------
14167    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14168 
14169    ----------------------------------------------------------------------------------
14170    -- 4219869 Business Flow
14171    -- Update journal entry status -- Need to generate this within IF <condition>
14172    ----------------------------------------------------------------------------------
14173    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14174          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14175          ,p_balance_type_code => l_balance_type_code
14176          );
14177 
14178    -------------------------------------------------------------------------------------------
14179    -- 4262811 - Generate the Accrual Reversal lines
14180    -------------------------------------------------------------------------------------------
14181    BEGIN
14182       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14183                               (g_array_event(p_event_id).array_value_num('header_index'));
14184       IF l_acc_rev_flag IS NULL THEN
14185          l_acc_rev_flag := 'N';
14186       END IF;
14187    EXCEPTION
14188       WHEN OTHERS THEN
14189          l_acc_rev_flag := 'N';
14190    END;
14191    --
14192    IF (l_acc_rev_flag = 'Y') THEN
14193 
14194        -- 4645092  ------------------------------------------------------------------------------
14195        -- To allow MPA report to determine if it should generate report process
14196        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14197        ------------------------------------------------------------------------------------------
14198 
14199        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14200        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14201 
14202        --
14203        -- Update the line information that should be overwritten
14204        --
14205        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14206                                          p_header_num   => 1);
14207        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14208 
14209        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14210 
14211        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14212           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14213        END IF;
14214 
14215       --
14216       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14217       --
14218       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14219           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14220       ELSE
14221           ---------------------------------------------------------------------------------------------------
14222           -- 4262811a Switch Sign
14223           ---------------------------------------------------------------------------------------------------
14224           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14225           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14226                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14227           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14228                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14229           -- 5132302
14230           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14231                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14232 
14233       END IF;
14234 
14235       -- 4955764
14236       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14237       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14238 
14239 
14240       XLA_AE_LINES_PKG.ValidateCurrentLine;
14241       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14242 
14243       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14244                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14245                ,p_balance_type_code => l_balance_type_code);
14246 
14247    END IF;
14248 
14249    -----------------------------------------------------------------------------------------
14250    -- 4262811 Multiperiod Accounting
14251    -----------------------------------------------------------------------------------------
14252      -- No MPA option is assigned.
14253 
14254 
14255 END IF;
14256 END IF;
14257 --
14258 
14259 --
14260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14261    trace
14262       (p_msg      => 'END of AcctLineType_32'
14263       ,p_level    => C_LEVEL_PROCEDURE
14264       ,p_module   => l_log_module);
14265 END IF;
14266 --
14267 EXCEPTION
14268   WHEN xla_exceptions_pkg.application_exception THEN
14269       RAISE;
14270   WHEN OTHERS THEN
14271        xla_exceptions_pkg.raise_message
14272            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_32');
14273 END AcctLineType_32;
14274 --
14275 
14276 ---------------------------------------
14277 --
14278 -- PRIVATE FUNCTION
14279 --         AcctLineType_33
14280 --
14281 ---------------------------------------
14282 PROCEDURE AcctLineType_33 (
14283   p_application_id        IN NUMBER
14284  ,p_event_id              IN NUMBER
14285  ,p_calculate_acctd_flag  IN VARCHAR2
14286  ,p_calculate_g_l_flag    IN VARCHAR2
14287  ,p_actual_flag           IN OUT VARCHAR2
14288  ,p_balance_type_code     OUT VARCHAR2
14289  ,p_gain_or_loss_ref      OUT VARCHAR2
14290  
14291 --Budget Account
14292  , p_source_9            IN NUMBER
14293 --Main Or Backing Code
14294  , p_source_13            IN VARCHAR2
14295 --Accounting Reversal Flag
14296  , p_source_15            IN VARCHAR2
14297 --Distribution Link Type
14298  , p_source_17            IN VARCHAR2
14299 --PO Distribution Identifier
14300  , p_source_19            IN NUMBER
14301 --PO Header Identifier
14302  , p_source_20            IN NUMBER
14303 --Applied To Application Identifier
14304  , p_source_21            IN NUMBER
14305 --Applied To Distribution Link Type
14306  , p_source_22            IN VARCHAR2
14307 --Applied To Entity Code
14308  , p_source_23            IN VARCHAR2
14309 --Applied To Distribution Identifier 1
14310  , p_source_24            IN NUMBER
14311 --Applied To Header Identifier 1
14312  , p_source_25            IN NUMBER
14313 --Entered Amount
14314  , p_source_26            IN NUMBER
14315 --Currency Code
14316  , p_source_27            IN VARCHAR2
14317 --Accounted Amount
14318  , p_source_28            IN NUMBER
14319 --PO Encumbrance Upgrade Option
14320  , p_source_29            IN VARCHAR2
14321 --JFMIP Reference
14322  , p_source_31            IN VARCHAR2
14323 --PO Upgrade Encumbrance Type Identifier
14324  , p_source_32            IN NUMBER
14325 --Allocated to Main Document Distribution Type
14326  , p_source_33            IN VARCHAR2
14327 --Allocated to Main Document Distribution Identifier
14328  , p_source_34            IN NUMBER
14329 )
14330 IS
14331 
14332 l_component_type              VARCHAR2(80);
14333 l_component_code              VARCHAR2(30);
14334 l_component_type_code         VARCHAR2(1);
14335 l_component_appl_id           INTEGER;
14336 l_amb_context_code            VARCHAR2(30);
14337 l_entity_code                 VARCHAR2(30);
14338 l_event_class_code            VARCHAR2(30);
14339 l_ae_header_id                NUMBER;
14340 l_event_type_code             VARCHAR2(30);
14341 l_line_definition_code        VARCHAR2(30);
14342 l_line_definition_owner_code  VARCHAR2(1);
14343 --
14344 -- adr variables
14345 l_segment                     VARCHAR2(30);
14346 l_ccid                        NUMBER;
14347 l_adr_transaction_coa_id      NUMBER;
14348 l_adr_accounting_coa_id       NUMBER;
14349 l_adr_flexfield_segment_code  VARCHAR2(30);
14350 l_adr_flex_value_set_id       NUMBER;
14351 l_adr_value_type_code         VARCHAR2(30);
14352 l_adr_value_combination_id    NUMBER;
14353 l_adr_value_segment_code      VARCHAR2(30);
14354 
14355 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14356 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14357 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14358 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14359 
14360 -- 4262811 Variables ------------------------------------------------------------------------------------------
14361 l_entered_amt_idx             NUMBER;
14362 l_accted_amt_idx              NUMBER;
14363 l_acc_rev_flag                VARCHAR2(1);
14364 l_accrual_line_num            NUMBER;
14365 l_tmp_amt                     NUMBER;
14366 l_acc_rev_natural_side_code   VARCHAR2(1);
14367 
14368 l_num_entries                 NUMBER;
14369 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14370 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14371 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14372 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14373 l_recog_line_1                NUMBER;
14374 l_recog_line_2                NUMBER;
14375 
14376 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14377 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14378 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14379 
14380 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14381 
14382 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14383 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14384 
14385 ---------------------------------------------------------------------------------------------------------------
14386 
14387 
14388 --
14389 -- bulk performance
14390 --
14391 l_balance_type_code           VARCHAR2(1);
14392 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14393 l_log_module                  VARCHAR2(240);
14394 
14395 --
14396 -- Upgrade strategy
14397 --
14398 l_actual_upg_option           VARCHAR2(1);
14399 l_enc_upg_option           VARCHAR2(1);
14400 
14401 --
14402 BEGIN
14403 --
14404 IF g_log_enabled THEN
14405       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
14406 END IF;
14407 --
14408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14409 
14410       trace
14411          (p_msg      => 'BEGIN of AcctLineType_33'
14412          ,p_level    => C_LEVEL_PROCEDURE
14413          ,p_module   => l_log_module);
14414 
14415 END IF;
14416 --
14417 l_component_type             := 'AMB_JLT';
14418 l_component_code             := 'FV_PO_REINSTATE_BPA_CR';
14419 l_component_type_code        := 'S';
14420 l_component_appl_id          :=  201;
14421 l_amb_context_code           := 'DEFAULT';
14422 l_entity_code                := 'PURCHASE_ORDER';
14423 l_event_class_code           := 'PO_PA';
14424 l_event_type_code            := 'PO_PA_ALL';
14425 l_line_definition_owner_code := 'S';
14426 l_line_definition_code       := 'FV_PO_ALL';
14427 --
14428 l_balance_type_code          := 'A';
14429 l_segment                     := NULL;
14430 l_ccid                        := NULL;
14431 l_adr_transaction_coa_id      := NULL;
14432 l_adr_accounting_coa_id       := NULL;
14433 l_adr_flexfield_segment_code  := NULL;
14434 l_adr_flex_value_set_id       := NULL;
14435 l_adr_value_type_code         := NULL;
14436 l_adr_value_combination_id    := NULL;
14437 l_adr_value_segment_code      := NULL;
14438 
14439 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
14440 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
14441 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
14442 l_budgetary_control_flag     := 'Y';
14443 
14444 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14445 l_bflow_applied_to_amt       := NULL; -- 5132302
14446 l_entered_amt_idx            := NULL;          -- 4262811
14447 l_accted_amt_idx             := NULL;          -- 4262811
14448 l_acc_rev_flag               := NULL;          -- 4262811
14449 l_accrual_line_num           := NULL;          -- 4262811
14450 l_tmp_amt                    := NULL;          -- 4262811
14451 --
14452  
14453 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14454     l_balance_type_code <> 'B' THEN
14455 IF (NVL(
14456 xla_ae_sources_pkg.GetSystemSourceChar(
14457    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14458  , p_source_type_code      => 'Y'
14459  , p_source_application_id =>  602
14460 ),'
14461 ') =  'PO_PA_UNRESERVED' OR 
14462 NVL(
14463 xla_ae_sources_pkg.GetSystemSourceChar(
14464    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14465  , p_source_type_code      => 'Y'
14466  , p_source_application_id =>  602
14467 ),'
14468 ') =  'PO_PA_INV_CANCELLED' OR 
14469 NVL(
14470 xla_ae_sources_pkg.GetSystemSourceChar(
14471    p_source_code           => 'XLA_EVENT_TYPE_CODE'
14472  , p_source_type_code      => 'Y'
14473  , p_source_application_id =>  602
14474 ),'
14475 ') =  'PO_PA_REJECTED') AND 
14476 NVL(p_source_13,'
14477 ') =  'B_PA'
14478  THEN 
14479 
14480    --
14481    XLA_AE_LINES_PKG.SetNewLine;
14482 
14483    p_balance_type_code          := l_balance_type_code;
14484    -- set the flag so later we will know whether the gain loss line needs to be created
14485    
14486    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14487      p_actual_flag :='A';
14488    END IF;
14489 
14490    --
14491    -- bulk performance
14492    --
14493    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14494                                       p_header_num   => 0); -- 4262811
14495    --
14496    -- set accounting line options
14497    --
14498    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14499            p_natural_side_code          => 'C'
14500          , p_gain_or_loss_flag          => 'N'
14501          , p_gl_transfer_mode_code      => 'S'
14502          , p_acct_entry_type_code       => 'A'
14503          , p_switch_side_flag           => 'N'
14504          , p_merge_duplicate_code       => 'N'
14505          );
14506    --
14507    l_acc_rev_natural_side_code := 'D';  -- 4262811
14508    -- 
14509    --
14510    -- set accounting line type info
14511    --
14512    xla_ae_lines_pkg.SetAcctLineType
14513       (p_component_type             => l_component_type
14514       ,p_event_type_code            => l_event_type_code
14515       ,p_line_definition_owner_code => l_line_definition_owner_code
14516       ,p_line_definition_code       => l_line_definition_code
14517       ,p_accounting_line_code       => l_component_code
14518       ,p_accounting_line_type_code  => l_component_type_code
14519       ,p_accounting_line_appl_id    => l_component_appl_id
14520       ,p_amb_context_code           => l_amb_context_code
14521       ,p_entity_code                => l_entity_code
14522       ,p_event_class_code           => l_event_class_code);
14523    --
14524    -- set accounting class
14525    --
14526    xla_ae_lines_pkg.SetAcctClass(
14527            p_accounting_class_code  => 'PURCHASE_ORDER'
14528          , p_ae_header_id           => l_ae_header_id
14529          );
14530 
14531    --
14532    -- set rounding class
14533    --
14534    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14535                       'PURCHASE_ORDER';
14536 
14537    --
14538    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14539    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14540    --
14541    -- bulk performance
14542    --
14543    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14544 
14545    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14546       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14547 
14548    -- 4955764
14549    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14550       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14551 
14552    -- 4458381 Public Sector Enh
14553    
14554    --
14555    -- set accounting attributes for the line type
14556    --
14557    l_entered_amt_idx := 23;
14558    l_accted_amt_idx  := 25;
14559    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14560    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
14561    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
14562    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
14563    l_rec_acct_attrs.array_num_value(2)  := 
14564 xla_ae_sources_pkg.GetSystemSourceNum(
14565    p_source_code           => 'XLA_EVENT_APPL_ID'
14566  , p_source_type_code      => 'Y'
14567  , p_source_application_id =>  602
14568 );
14569    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
14570    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
14571    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
14572    l_rec_acct_attrs.array_char_value(4)  := 
14573 xla_ae_sources_pkg.GetSystemSourceChar(
14574    p_source_code           => 'XLA_ENTITY_CODE'
14575  , p_source_type_code      => 'Y'
14576  , p_source_application_id =>  602
14577 );
14578    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
14579    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
14580    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
14581    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
14582    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
14583    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
14584    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
14585    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
14586    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
14587    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
14588    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
14589    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
14590    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
14591    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
14592    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
14593    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
14594    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
14595    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
14596    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
14597    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
14598    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
14599    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
14600    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
14601    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
14602    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
14603    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
14604    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
14605    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
14606    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
14607    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
14608    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
14609    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
14610    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
14611    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
14612    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
14613    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
14614    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
14615    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
14616    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
14617    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
14618    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
14619    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
14620    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
14621    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
14622    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
14623    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
14624    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
14625    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
14626    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
14627    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
14628    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
14629    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
14630    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
14631    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
14632 
14633    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14634    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14635 
14636    ---------------------------------------------------------------------------------------------------------------
14637    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14638    ---------------------------------------------------------------------------------------------------------------
14639    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14640 
14641    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14642    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14643 
14644    IF xla_accounting_cache_pkg.GetValueChar
14645          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14646          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14647    AND l_bflow_method_code = 'PRIOR_ENTRY'
14648 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14649    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14650          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14651        )
14652    THEN
14653          xla_ae_lines_pkg.BflowUpgEntry
14654            (p_business_method_code    => l_bflow_method_code
14655            ,p_business_class_code     => l_bflow_class_code
14656            ,p_balance_type            => l_balance_type_code);
14657    ELSE
14658       NULL;
14659 XLA_AE_LINES_PKG.business_flow_validation(
14660                                 p_business_method_code     => l_bflow_method_code
14661                                ,p_business_class_code      => l_bflow_class_code
14662                                ,p_inherit_description_flag => l_inherit_desc_flag);
14663    END IF;
14664 
14665    --
14666    -- call analytical criteria
14667    --
14668    -- Inherited Analytical Criteria for business flow method of Prior Entry.
14669    --
14670    -- call description
14671    --
14672    -- No description or it is inherited.
14673    --
14674    -- call ADRs
14675    -- Bug 4922099
14676    --
14677    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14678         (NVL(l_actual_upg_option, 'N') = 'O') OR
14679         (NVL(l_enc_upg_option, 'N') = 'O')
14680       )
14681    THEN
14682    NULL;
14683    --
14684    --
14685    
14686    --
14687    --
14688    END IF;
14689    --
14690    -- Bug 4922099
14691    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14692           (NVL(l_enc_upg_option, 'N') = 'O')
14693         ) AND
14694         (l_bflow_method_code = 'PRIOR_ENTRY')
14695       )
14696    THEN
14697       IF
14698       --
14699       1 = 1
14700       --
14701       THEN
14702       xla_accounting_err_pkg.build_message
14703                                     (p_appli_s_name            => 'XLA'
14704                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14705                                     ,p_token_1                 => 'LINE_NUMBER'
14706                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14707                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14708                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14709                                                                              l_component_type
14710                                                                             ,l_component_code
14711                                                                             ,l_component_type_code
14712                                                                             ,l_component_appl_id
14713                                                                             ,l_amb_context_code
14714                                                                             ,l_entity_code
14715                                                                             ,l_event_class_code
14716                                                                            )
14717                                     ,p_token_3                 => 'OWNER'
14718                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14719                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14720                                                                           ,p_lookup_code    => l_component_type_code
14721                                                                          )
14722                                     ,p_token_4                 => 'PRODUCT_NAME'
14723                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14724                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14725                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14726                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14727                                     ,p_ae_header_id            =>  NULL
14728                                        );
14729 
14730         IF (C_LEVEL_ERROR>= g_log_level) THEN
14731                  trace
14732                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14733                       ,p_level    => C_LEVEL_ERROR
14734                       ,p_module   => l_log_module);
14735         END IF;
14736       END IF;
14737    END IF;
14738    --
14739    --
14740    ------------------------------------------------------------------------------------------------
14741    -- 4219869 Business Flow
14742    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14743    -- Prior Entry.  Currently, the following code is always generated.
14744    ------------------------------------------------------------------------------------------------
14745    -- No ValidateCurrentLine for business flow method of Prior Entry
14746 
14747    ------------------------------------------------------------------------------------
14748    -- 4219869 Business Flow
14749    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14750    ------------------------------------------------------------------------------------
14751    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14752 
14753    ----------------------------------------------------------------------------------
14754    -- 4219869 Business Flow
14755    -- Update journal entry status -- Need to generate this within IF <condition>
14756    ----------------------------------------------------------------------------------
14757    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14758          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14759          ,p_balance_type_code => l_balance_type_code
14760          );
14761 
14762    -------------------------------------------------------------------------------------------
14763    -- 4262811 - Generate the Accrual Reversal lines
14764    -------------------------------------------------------------------------------------------
14765    BEGIN
14766       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14767                               (g_array_event(p_event_id).array_value_num('header_index'));
14768       IF l_acc_rev_flag IS NULL THEN
14769          l_acc_rev_flag := 'N';
14770       END IF;
14771    EXCEPTION
14772       WHEN OTHERS THEN
14773          l_acc_rev_flag := 'N';
14774    END;
14775    --
14776    IF (l_acc_rev_flag = 'Y') THEN
14777 
14778        -- 4645092  ------------------------------------------------------------------------------
14779        -- To allow MPA report to determine if it should generate report process
14780        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14781        ------------------------------------------------------------------------------------------
14782 
14783        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14784        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14785 
14786        --
14787        -- Update the line information that should be overwritten
14788        --
14789        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14790                                          p_header_num   => 1);
14791        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14792 
14793        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14794 
14795        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14796           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14797        END IF;
14798 
14799       --
14800       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14801       --
14802       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14803           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14804       ELSE
14805           ---------------------------------------------------------------------------------------------------
14806           -- 4262811a Switch Sign
14807           ---------------------------------------------------------------------------------------------------
14808           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14809           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14810                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14811           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14812                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14813           -- 5132302
14814           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14815                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14816 
14817       END IF;
14818 
14819       -- 4955764
14820       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14821       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14822 
14823 
14824       XLA_AE_LINES_PKG.ValidateCurrentLine;
14825       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14826 
14827       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14828                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14829                ,p_balance_type_code => l_balance_type_code);
14830 
14831    END IF;
14832 
14833    -----------------------------------------------------------------------------------------
14834    -- 4262811 Multiperiod Accounting
14835    -----------------------------------------------------------------------------------------
14836      -- No MPA option is assigned.
14837 
14838 
14839 END IF;
14840 END IF;
14841 --
14842 
14843 --
14844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14845    trace
14846       (p_msg      => 'END of AcctLineType_33'
14847       ,p_level    => C_LEVEL_PROCEDURE
14848       ,p_module   => l_log_module);
14849 END IF;
14850 --
14851 EXCEPTION
14852   WHEN xla_exceptions_pkg.application_exception THEN
14853       RAISE;
14854   WHEN OTHERS THEN
14855        xla_exceptions_pkg.raise_message
14856            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_33');
14857 END AcctLineType_33;
14858 --
14859 
14860 ---------------------------------------
14861 --
14862 -- PRIVATE FUNCTION
14863 --         AcctLineType_34
14864 --
14865 ---------------------------------------
14866 PROCEDURE AcctLineType_34 (
14867   p_application_id        IN NUMBER
14868  ,p_event_id              IN NUMBER
14869  ,p_calculate_acctd_flag  IN VARCHAR2
14870  ,p_calculate_g_l_flag    IN VARCHAR2
14871  ,p_actual_flag           IN OUT VARCHAR2
14872  ,p_balance_type_code     OUT VARCHAR2
14873  ,p_gain_or_loss_ref      OUT VARCHAR2
14874  
14875 --Budget Account
14876  , p_source_9            IN NUMBER
14877 --Main Or Backing Code
14878  , p_source_13            IN VARCHAR2
14879 --Accounting Reversal Flag
14880  , p_source_15            IN VARCHAR2
14881 --Distribution Link Type
14882  , p_source_17            IN VARCHAR2
14883 --PO Distribution Identifier
14884  , p_source_19            IN NUMBER
14885 --PO Header Identifier
14886  , p_source_20            IN NUMBER
14887 --Applied To Application Identifier
14888  , p_source_21            IN NUMBER
14889 --Applied To Distribution Link Type
14890  , p_source_22            IN VARCHAR2
14891 --Applied To Entity Code
14892  , p_source_23            IN VARCHAR2
14893 --Applied To Distribution Identifier 1
14894  , p_source_24            IN NUMBER
14895 --Applied To Header Identifier 1
14896  , p_source_25            IN NUMBER
14897 --Entered Amount
14898  , p_source_26            IN NUMBER
14899 --Currency Code
14900  , p_source_27            IN VARCHAR2
14901 --Accounted Amount
14902  , p_source_28            IN NUMBER
14903 --PO Encumbrance Upgrade Option
14904  , p_source_29            IN VARCHAR2
14905 --JFMIP Reference
14906  , p_source_31            IN VARCHAR2
14907 --PO Upgrade Encumbrance Type Identifier
14908  , p_source_32            IN NUMBER
14909 --Allocated to Main Document Distribution Type
14910  , p_source_33            IN VARCHAR2
14911 --Allocated to Main Document Distribution Identifier
14912  , p_source_34            IN NUMBER
14913 )
14914 IS
14915 
14916 l_component_type              VARCHAR2(80);
14917 l_component_code              VARCHAR2(30);
14918 l_component_type_code         VARCHAR2(1);
14919 l_component_appl_id           INTEGER;
14920 l_amb_context_code            VARCHAR2(30);
14921 l_entity_code                 VARCHAR2(30);
14922 l_event_class_code            VARCHAR2(30);
14923 l_ae_header_id                NUMBER;
14924 l_event_type_code             VARCHAR2(30);
14925 l_line_definition_code        VARCHAR2(30);
14926 l_line_definition_owner_code  VARCHAR2(1);
14927 --
14928 -- adr variables
14929 l_segment                     VARCHAR2(30);
14930 l_ccid                        NUMBER;
14931 l_adr_transaction_coa_id      NUMBER;
14932 l_adr_accounting_coa_id       NUMBER;
14933 l_adr_flexfield_segment_code  VARCHAR2(30);
14934 l_adr_flex_value_set_id       NUMBER;
14935 l_adr_value_type_code         VARCHAR2(30);
14936 l_adr_value_combination_id    NUMBER;
14937 l_adr_value_segment_code      VARCHAR2(30);
14938 
14939 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14940 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14941 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14942 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14943 
14944 -- 4262811 Variables ------------------------------------------------------------------------------------------
14945 l_entered_amt_idx             NUMBER;
14946 l_accted_amt_idx              NUMBER;
14947 l_acc_rev_flag                VARCHAR2(1);
14948 l_accrual_line_num            NUMBER;
14949 l_tmp_amt                     NUMBER;
14950 l_acc_rev_natural_side_code   VARCHAR2(1);
14951 
14952 l_num_entries                 NUMBER;
14953 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14954 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14955 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14956 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14957 l_recog_line_1                NUMBER;
14958 l_recog_line_2                NUMBER;
14959 
14960 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14961 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14962 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14963 
14964 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14965 
14966 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14967 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14968 
14969 ---------------------------------------------------------------------------------------------------------------
14970 
14971 
14972 --
14973 -- bulk performance
14974 --
14975 l_balance_type_code           VARCHAR2(1);
14976 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14977 l_log_module                  VARCHAR2(240);
14978 
14979 --
14980 -- Upgrade strategy
14981 --
14982 l_actual_upg_option           VARCHAR2(1);
14983 l_enc_upg_option           VARCHAR2(1);
14984 
14985 --
14986 BEGIN
14987 --
14988 IF g_log_enabled THEN
14989       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
14990 END IF;
14991 --
14992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14993 
14994       trace
14995          (p_msg      => 'BEGIN of AcctLineType_34'
14996          ,p_level    => C_LEVEL_PROCEDURE
14997          ,p_module   => l_log_module);
14998 
14999 END IF;
15000 --
15001 l_component_type             := 'AMB_JLT';
15002 l_component_code             := 'FV_PO_REINSTATE_BPA_DR';
15003 l_component_type_code        := 'S';
15004 l_component_appl_id          :=  201;
15005 l_amb_context_code           := 'DEFAULT';
15006 l_entity_code                := 'PURCHASE_ORDER';
15007 l_event_class_code           := 'PO_PA';
15008 l_event_type_code            := 'PO_PA_ALL';
15009 l_line_definition_owner_code := 'S';
15010 l_line_definition_code       := 'FV_PO_ALL';
15011 --
15012 l_balance_type_code          := 'A';
15013 l_segment                     := NULL;
15014 l_ccid                        := NULL;
15015 l_adr_transaction_coa_id      := NULL;
15016 l_adr_accounting_coa_id       := NULL;
15017 l_adr_flexfield_segment_code  := NULL;
15018 l_adr_flex_value_set_id       := NULL;
15019 l_adr_value_type_code         := NULL;
15020 l_adr_value_combination_id    := NULL;
15021 l_adr_value_segment_code      := NULL;
15022 
15023 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
15024 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
15025 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
15026 l_budgetary_control_flag     := 'Y';
15027 
15028 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15029 l_bflow_applied_to_amt       := NULL; -- 5132302
15030 l_entered_amt_idx            := NULL;          -- 4262811
15031 l_accted_amt_idx             := NULL;          -- 4262811
15032 l_acc_rev_flag               := NULL;          -- 4262811
15033 l_accrual_line_num           := NULL;          -- 4262811
15034 l_tmp_amt                    := NULL;          -- 4262811
15035 --
15036  
15037 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15038     l_balance_type_code <> 'B' THEN
15039 IF (NVL(
15040 xla_ae_sources_pkg.GetSystemSourceChar(
15041    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15042  , p_source_type_code      => 'Y'
15043  , p_source_application_id =>  602
15044 ),'
15045 ') =  'PO_PA_UNRESERVED' OR 
15046 NVL(
15047 xla_ae_sources_pkg.GetSystemSourceChar(
15048    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15049  , p_source_type_code      => 'Y'
15050  , p_source_application_id =>  602
15051 ),'
15052 ') =  'PO_PA_INV_CANCELLED' OR 
15053 NVL(
15054 xla_ae_sources_pkg.GetSystemSourceChar(
15055    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15056  , p_source_type_code      => 'Y'
15057  , p_source_application_id =>  602
15058 ),'
15059 ') =  'PO_PA_REJECTED') AND 
15060 NVL(p_source_13,'
15061 ') =  'B_PA'
15062  THEN 
15063 
15064    --
15065    XLA_AE_LINES_PKG.SetNewLine;
15066 
15067    p_balance_type_code          := l_balance_type_code;
15068    -- set the flag so later we will know whether the gain loss line needs to be created
15069    
15070    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15071      p_actual_flag :='A';
15072    END IF;
15073 
15074    --
15075    -- bulk performance
15076    --
15077    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15078                                       p_header_num   => 0); -- 4262811
15079    --
15080    -- set accounting line options
15081    --
15082    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15083            p_natural_side_code          => 'D'
15084          , p_gain_or_loss_flag          => 'N'
15085          , p_gl_transfer_mode_code      => 'S'
15086          , p_acct_entry_type_code       => 'A'
15087          , p_switch_side_flag           => 'N'
15088          , p_merge_duplicate_code       => 'N'
15089          );
15090    --
15091    l_acc_rev_natural_side_code := 'C';  -- 4262811
15092    -- 
15093    --
15094    -- set accounting line type info
15095    --
15096    xla_ae_lines_pkg.SetAcctLineType
15097       (p_component_type             => l_component_type
15098       ,p_event_type_code            => l_event_type_code
15099       ,p_line_definition_owner_code => l_line_definition_owner_code
15100       ,p_line_definition_code       => l_line_definition_code
15101       ,p_accounting_line_code       => l_component_code
15102       ,p_accounting_line_type_code  => l_component_type_code
15103       ,p_accounting_line_appl_id    => l_component_appl_id
15104       ,p_amb_context_code           => l_amb_context_code
15105       ,p_entity_code                => l_entity_code
15106       ,p_event_class_code           => l_event_class_code);
15107    --
15108    -- set accounting class
15109    --
15110    xla_ae_lines_pkg.SetAcctClass(
15111            p_accounting_class_code  => 'PURCHASE_ORDER'
15112          , p_ae_header_id           => l_ae_header_id
15113          );
15114 
15115    --
15116    -- set rounding class
15117    --
15118    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15119                       'PURCHASE_ORDER';
15120 
15121    --
15122    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15123    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15124    --
15125    -- bulk performance
15126    --
15127    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15128 
15129    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15130       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15131 
15132    -- 4955764
15133    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15134       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15135 
15136    -- 4458381 Public Sector Enh
15137    
15138    --
15139    -- set accounting attributes for the line type
15140    --
15141    l_entered_amt_idx := 23;
15142    l_accted_amt_idx  := 25;
15143    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15144    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
15145    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
15146    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
15147    l_rec_acct_attrs.array_num_value(2)  := 
15148 xla_ae_sources_pkg.GetSystemSourceNum(
15149    p_source_code           => 'XLA_EVENT_APPL_ID'
15150  , p_source_type_code      => 'Y'
15151  , p_source_application_id =>  602
15152 );
15153    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
15154    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
15155    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
15156    l_rec_acct_attrs.array_char_value(4)  := 
15157 xla_ae_sources_pkg.GetSystemSourceChar(
15158    p_source_code           => 'XLA_ENTITY_CODE'
15159  , p_source_type_code      => 'Y'
15160  , p_source_application_id =>  602
15161 );
15162    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
15163    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
15164    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
15165    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
15166    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
15167    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
15168    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
15169    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
15170    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
15171    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
15172    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
15173    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
15174    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
15175    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
15176    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
15177    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
15178    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
15179    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
15180    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
15181    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
15182    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
15183    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
15184    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
15185    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
15186    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
15187    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
15188    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
15189    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
15190    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
15191    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
15192    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
15193    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
15194    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
15195    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
15196    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
15197    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
15198    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
15199    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
15200    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
15201    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
15202    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
15203    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
15204    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
15205    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
15206    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
15207    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
15208    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
15209    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
15210    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
15211    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
15212    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
15213    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
15214    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
15215    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
15216 
15217    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15218    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15219 
15220    ---------------------------------------------------------------------------------------------------------------
15221    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15222    ---------------------------------------------------------------------------------------------------------------
15223    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15224 
15225    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15226    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15227 
15228    IF xla_accounting_cache_pkg.GetValueChar
15229          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15230          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15231    AND l_bflow_method_code = 'PRIOR_ENTRY'
15232 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15233    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15234          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15235        )
15236    THEN
15237          xla_ae_lines_pkg.BflowUpgEntry
15238            (p_business_method_code    => l_bflow_method_code
15239            ,p_business_class_code     => l_bflow_class_code
15240            ,p_balance_type            => l_balance_type_code);
15241    ELSE
15242       NULL;
15243 XLA_AE_LINES_PKG.business_flow_validation(
15244                                 p_business_method_code     => l_bflow_method_code
15245                                ,p_business_class_code      => l_bflow_class_code
15246                                ,p_inherit_description_flag => l_inherit_desc_flag);
15247    END IF;
15248 
15249    --
15250    -- call analytical criteria
15251    --
15252    -- Inherited Analytical Criteria for business flow method of Prior Entry.
15253    --
15254    -- call description
15255    --
15256    -- No description or it is inherited.
15257    --
15258    -- call ADRs
15259    -- Bug 4922099
15260    --
15261    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15262         (NVL(l_actual_upg_option, 'N') = 'O') OR
15263         (NVL(l_enc_upg_option, 'N') = 'O')
15264       )
15265    THEN
15266    NULL;
15267    --
15268    --
15269    
15270    --
15271    --
15272    END IF;
15273    --
15274    -- Bug 4922099
15275    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15276           (NVL(l_enc_upg_option, 'N') = 'O')
15277         ) AND
15278         (l_bflow_method_code = 'PRIOR_ENTRY')
15279       )
15280    THEN
15281       IF
15282       --
15283       1 = 1
15284       --
15285       THEN
15286       xla_accounting_err_pkg.build_message
15287                                     (p_appli_s_name            => 'XLA'
15288                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15289                                     ,p_token_1                 => 'LINE_NUMBER'
15290                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15291                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15292                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15293                                                                              l_component_type
15294                                                                             ,l_component_code
15295                                                                             ,l_component_type_code
15296                                                                             ,l_component_appl_id
15297                                                                             ,l_amb_context_code
15298                                                                             ,l_entity_code
15299                                                                             ,l_event_class_code
15300                                                                            )
15301                                     ,p_token_3                 => 'OWNER'
15302                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15303                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15304                                                                           ,p_lookup_code    => l_component_type_code
15305                                                                          )
15306                                     ,p_token_4                 => 'PRODUCT_NAME'
15307                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15308                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15309                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15310                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15311                                     ,p_ae_header_id            =>  NULL
15312                                        );
15313 
15314         IF (C_LEVEL_ERROR>= g_log_level) THEN
15315                  trace
15316                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15317                       ,p_level    => C_LEVEL_ERROR
15318                       ,p_module   => l_log_module);
15319         END IF;
15320       END IF;
15321    END IF;
15322    --
15323    --
15324    ------------------------------------------------------------------------------------------------
15325    -- 4219869 Business Flow
15326    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15327    -- Prior Entry.  Currently, the following code is always generated.
15328    ------------------------------------------------------------------------------------------------
15329    -- No ValidateCurrentLine for business flow method of Prior Entry
15330 
15331    ------------------------------------------------------------------------------------
15332    -- 4219869 Business Flow
15333    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15334    ------------------------------------------------------------------------------------
15335    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15336 
15337    ----------------------------------------------------------------------------------
15338    -- 4219869 Business Flow
15339    -- Update journal entry status -- Need to generate this within IF <condition>
15340    ----------------------------------------------------------------------------------
15341    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15342          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15343          ,p_balance_type_code => l_balance_type_code
15344          );
15345 
15346    -------------------------------------------------------------------------------------------
15347    -- 4262811 - Generate the Accrual Reversal lines
15348    -------------------------------------------------------------------------------------------
15349    BEGIN
15350       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15351                               (g_array_event(p_event_id).array_value_num('header_index'));
15352       IF l_acc_rev_flag IS NULL THEN
15353          l_acc_rev_flag := 'N';
15354       END IF;
15355    EXCEPTION
15356       WHEN OTHERS THEN
15357          l_acc_rev_flag := 'N';
15358    END;
15359    --
15360    IF (l_acc_rev_flag = 'Y') THEN
15361 
15362        -- 4645092  ------------------------------------------------------------------------------
15363        -- To allow MPA report to determine if it should generate report process
15364        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15365        ------------------------------------------------------------------------------------------
15366 
15367        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15368        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15369 
15370        --
15371        -- Update the line information that should be overwritten
15372        --
15373        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15374                                          p_header_num   => 1);
15375        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15376 
15377        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15378 
15379        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15380           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15381        END IF;
15382 
15383       --
15384       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15385       --
15386       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15387           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15388       ELSE
15389           ---------------------------------------------------------------------------------------------------
15390           -- 4262811a Switch Sign
15391           ---------------------------------------------------------------------------------------------------
15392           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15393           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15394                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15395           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15396                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15397           -- 5132302
15398           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15399                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15400 
15401       END IF;
15402 
15403       -- 4955764
15404       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15405       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15406 
15407 
15408       XLA_AE_LINES_PKG.ValidateCurrentLine;
15409       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15410 
15411       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15412                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15413                ,p_balance_type_code => l_balance_type_code);
15414 
15415    END IF;
15416 
15417    -----------------------------------------------------------------------------------------
15418    -- 4262811 Multiperiod Accounting
15419    -----------------------------------------------------------------------------------------
15420      -- No MPA option is assigned.
15421 
15422 
15423 END IF;
15424 END IF;
15425 --
15426 
15427 --
15428 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15429    trace
15430       (p_msg      => 'END of AcctLineType_34'
15431       ,p_level    => C_LEVEL_PROCEDURE
15432       ,p_module   => l_log_module);
15433 END IF;
15434 --
15435 EXCEPTION
15436   WHEN xla_exceptions_pkg.application_exception THEN
15437       RAISE;
15438   WHEN OTHERS THEN
15439        xla_exceptions_pkg.raise_message
15440            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_34');
15441 END AcctLineType_34;
15442 --
15443 
15444 ---------------------------------------
15445 --
15446 -- PRIVATE FUNCTION
15447 --         AcctLineType_35
15448 --
15449 ---------------------------------------
15450 PROCEDURE AcctLineType_35 (
15451   p_application_id        IN NUMBER
15452  ,p_event_id              IN NUMBER
15453  ,p_calculate_acctd_flag  IN VARCHAR2
15454  ,p_calculate_g_l_flag    IN VARCHAR2
15455  ,p_actual_flag           IN OUT VARCHAR2
15456  ,p_balance_type_code     OUT VARCHAR2
15457  ,p_gain_or_loss_ref      OUT VARCHAR2
15458  
15459 --Budget Account
15460  , p_source_9            IN NUMBER
15461 --Main Or Backing Code
15462  , p_source_13            IN VARCHAR2
15463 --Accounting Reversal Flag
15464  , p_source_15            IN VARCHAR2
15465 --Distribution Link Type
15466  , p_source_17            IN VARCHAR2
15467 --PO Distribution Identifier
15468  , p_source_19            IN NUMBER
15469 --PO Header Identifier
15470  , p_source_20            IN NUMBER
15471 --Applied To Application Identifier
15472  , p_source_21            IN NUMBER
15473 --Applied To Distribution Link Type
15474  , p_source_22            IN VARCHAR2
15475 --Applied To Entity Code
15476  , p_source_23            IN VARCHAR2
15477 --Applied To Distribution Identifier 1
15478  , p_source_24            IN NUMBER
15479 --Applied To Header Identifier 1
15480  , p_source_25            IN NUMBER
15481 --Entered Amount
15482  , p_source_26            IN NUMBER
15483 --Currency Code
15484  , p_source_27            IN VARCHAR2
15485 --Accounted Amount
15486  , p_source_28            IN NUMBER
15487 --PO Encumbrance Upgrade Option
15488  , p_source_29            IN VARCHAR2
15489 --JFMIP Reference
15490  , p_source_31            IN VARCHAR2
15491 --PO Upgrade Encumbrance Type Identifier
15492  , p_source_32            IN NUMBER
15493 --Allocated to Main Document Distribution Type
15494  , p_source_33            IN VARCHAR2
15495 --Allocated to Main Document Distribution Identifier
15496  , p_source_34            IN NUMBER
15497 )
15498 IS
15499 
15500 l_component_type              VARCHAR2(80);
15501 l_component_code              VARCHAR2(30);
15502 l_component_type_code         VARCHAR2(1);
15503 l_component_appl_id           INTEGER;
15504 l_amb_context_code            VARCHAR2(30);
15505 l_entity_code                 VARCHAR2(30);
15506 l_event_class_code            VARCHAR2(30);
15507 l_ae_header_id                NUMBER;
15508 l_event_type_code             VARCHAR2(30);
15509 l_line_definition_code        VARCHAR2(30);
15510 l_line_definition_owner_code  VARCHAR2(1);
15511 --
15512 -- adr variables
15513 l_segment                     VARCHAR2(30);
15514 l_ccid                        NUMBER;
15515 l_adr_transaction_coa_id      NUMBER;
15516 l_adr_accounting_coa_id       NUMBER;
15517 l_adr_flexfield_segment_code  VARCHAR2(30);
15518 l_adr_flex_value_set_id       NUMBER;
15519 l_adr_value_type_code         VARCHAR2(30);
15520 l_adr_value_combination_id    NUMBER;
15521 l_adr_value_segment_code      VARCHAR2(30);
15522 
15523 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15524 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15525 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15526 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15527 
15528 -- 4262811 Variables ------------------------------------------------------------------------------------------
15529 l_entered_amt_idx             NUMBER;
15530 l_accted_amt_idx              NUMBER;
15531 l_acc_rev_flag                VARCHAR2(1);
15532 l_accrual_line_num            NUMBER;
15533 l_tmp_amt                     NUMBER;
15534 l_acc_rev_natural_side_code   VARCHAR2(1);
15535 
15536 l_num_entries                 NUMBER;
15537 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15538 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15539 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15540 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15541 l_recog_line_1                NUMBER;
15542 l_recog_line_2                NUMBER;
15543 
15544 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15545 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15546 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15547 
15548 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15549 
15550 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15551 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15552 
15553 ---------------------------------------------------------------------------------------------------------------
15554 
15555 
15556 --
15557 -- bulk performance
15558 --
15559 l_balance_type_code           VARCHAR2(1);
15560 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15561 l_log_module                  VARCHAR2(240);
15562 
15563 --
15564 -- Upgrade strategy
15565 --
15566 l_actual_upg_option           VARCHAR2(1);
15567 l_enc_upg_option           VARCHAR2(1);
15568 
15569 --
15570 BEGIN
15571 --
15572 IF g_log_enabled THEN
15573       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
15574 END IF;
15575 --
15576 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15577 
15578       trace
15579          (p_msg      => 'BEGIN of AcctLineType_35'
15580          ,p_level    => C_LEVEL_PROCEDURE
15581          ,p_module   => l_log_module);
15582 
15583 END IF;
15584 --
15585 l_component_type             := 'AMB_JLT';
15586 l_component_code             := 'FV_PO_REINSTATE_REQ_CR';
15587 l_component_type_code        := 'S';
15588 l_component_appl_id          :=  201;
15589 l_amb_context_code           := 'DEFAULT';
15590 l_entity_code                := 'PURCHASE_ORDER';
15591 l_event_class_code           := 'PO_PA';
15592 l_event_type_code            := 'PO_PA_ALL';
15593 l_line_definition_owner_code := 'S';
15594 l_line_definition_code       := 'FV_PO_ALL';
15595 --
15596 l_balance_type_code          := 'A';
15597 l_segment                     := NULL;
15598 l_ccid                        := NULL;
15599 l_adr_transaction_coa_id      := NULL;
15600 l_adr_accounting_coa_id       := NULL;
15601 l_adr_flexfield_segment_code  := NULL;
15602 l_adr_flex_value_set_id       := NULL;
15603 l_adr_value_type_code         := NULL;
15604 l_adr_value_combination_id    := NULL;
15605 l_adr_value_segment_code      := NULL;
15606 
15607 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
15608 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
15609 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
15610 l_budgetary_control_flag     := 'Y';
15611 
15612 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15613 l_bflow_applied_to_amt       := NULL; -- 5132302
15614 l_entered_amt_idx            := NULL;          -- 4262811
15615 l_accted_amt_idx             := NULL;          -- 4262811
15616 l_acc_rev_flag               := NULL;          -- 4262811
15617 l_accrual_line_num           := NULL;          -- 4262811
15618 l_tmp_amt                    := NULL;          -- 4262811
15619 --
15620  
15621 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15622     l_balance_type_code <> 'B' THEN
15623 IF (NVL(
15624 xla_ae_sources_pkg.GetSystemSourceChar(
15625    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15626  , p_source_type_code      => 'Y'
15627  , p_source_application_id =>  602
15628 ),'
15629 ') =  'PO_PA_UNRESERVED' OR 
15630 NVL(
15631 xla_ae_sources_pkg.GetSystemSourceChar(
15632    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15633  , p_source_type_code      => 'Y'
15634  , p_source_application_id =>  602
15635 ),'
15636 ') =  'PO_PA_INV_CANCELLED' OR 
15637 NVL(
15638 xla_ae_sources_pkg.GetSystemSourceChar(
15639    p_source_code           => 'XLA_EVENT_TYPE_CODE'
15640  , p_source_type_code      => 'Y'
15641  , p_source_application_id =>  602
15642 ),'
15643 ') =  'PO_PA_REJECTED') AND 
15644 NVL(p_source_13,'
15645 ') =  'B_REQ'
15646  THEN 
15647 
15648    --
15649    XLA_AE_LINES_PKG.SetNewLine;
15650 
15651    p_balance_type_code          := l_balance_type_code;
15652    -- set the flag so later we will know whether the gain loss line needs to be created
15653    
15654    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15655      p_actual_flag :='A';
15656    END IF;
15657 
15658    --
15659    -- bulk performance
15660    --
15661    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15662                                       p_header_num   => 0); -- 4262811
15663    --
15664    -- set accounting line options
15665    --
15666    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15667            p_natural_side_code          => 'C'
15668          , p_gain_or_loss_flag          => 'N'
15669          , p_gl_transfer_mode_code      => 'S'
15670          , p_acct_entry_type_code       => 'A'
15671          , p_switch_side_flag           => 'N'
15672          , p_merge_duplicate_code       => 'N'
15673          );
15674    --
15675    l_acc_rev_natural_side_code := 'D';  -- 4262811
15676    -- 
15677    --
15678    -- set accounting line type info
15679    --
15680    xla_ae_lines_pkg.SetAcctLineType
15681       (p_component_type             => l_component_type
15682       ,p_event_type_code            => l_event_type_code
15683       ,p_line_definition_owner_code => l_line_definition_owner_code
15684       ,p_line_definition_code       => l_line_definition_code
15685       ,p_accounting_line_code       => l_component_code
15686       ,p_accounting_line_type_code  => l_component_type_code
15687       ,p_accounting_line_appl_id    => l_component_appl_id
15688       ,p_amb_context_code           => l_amb_context_code
15689       ,p_entity_code                => l_entity_code
15690       ,p_event_class_code           => l_event_class_code);
15691    --
15692    -- set accounting class
15693    --
15694    xla_ae_lines_pkg.SetAcctClass(
15695            p_accounting_class_code  => 'REQUISITION'
15696          , p_ae_header_id           => l_ae_header_id
15697          );
15698 
15699    --
15700    -- set rounding class
15701    --
15702    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15703                       'REQUISITION';
15704 
15705    --
15706    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15707    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15708    --
15709    -- bulk performance
15710    --
15711    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15712 
15713    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15714       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15715 
15716    -- 4955764
15717    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15718       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15719 
15720    -- 4458381 Public Sector Enh
15721    
15722    --
15723    -- set accounting attributes for the line type
15724    --
15725    l_entered_amt_idx := 23;
15726    l_accted_amt_idx  := 25;
15727    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15728    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
15729    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
15730    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
15731    l_rec_acct_attrs.array_num_value(2)  := 
15732 xla_ae_sources_pkg.GetSystemSourceNum(
15733    p_source_code           => 'XLA_EVENT_APPL_ID'
15734  , p_source_type_code      => 'Y'
15735  , p_source_application_id =>  602
15736 );
15737    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
15738    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
15739    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
15740    l_rec_acct_attrs.array_char_value(4)  := 
15741 xla_ae_sources_pkg.GetSystemSourceChar(
15742    p_source_code           => 'XLA_ENTITY_CODE'
15743  , p_source_type_code      => 'Y'
15744  , p_source_application_id =>  602
15745 );
15746    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
15747    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
15748    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
15749    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
15750    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
15751    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
15752    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
15753    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
15754    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
15755    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
15756    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
15757    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
15758    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
15759    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
15760    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
15761    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
15762    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
15763    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
15764    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
15765    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
15766    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
15767    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
15768    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
15769    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
15770    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
15771    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
15772    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
15773    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
15774    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
15775    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
15776    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
15777    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
15778    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
15779    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
15780    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
15781    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
15782    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
15783    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
15784    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
15785    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
15786    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
15787    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
15788    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
15789    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
15790    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
15791    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
15792    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
15793    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
15794    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
15795    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
15796    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
15797    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
15798    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
15799    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
15800 
15801    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15802    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15803 
15804    ---------------------------------------------------------------------------------------------------------------
15805    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15806    ---------------------------------------------------------------------------------------------------------------
15807    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15808 
15809    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15810    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15811 
15812    IF xla_accounting_cache_pkg.GetValueChar
15813          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15814          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15815    AND l_bflow_method_code = 'PRIOR_ENTRY'
15816 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15817    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15818          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15819        )
15820    THEN
15821          xla_ae_lines_pkg.BflowUpgEntry
15822            (p_business_method_code    => l_bflow_method_code
15823            ,p_business_class_code     => l_bflow_class_code
15824            ,p_balance_type            => l_balance_type_code);
15825    ELSE
15826       NULL;
15827 XLA_AE_LINES_PKG.business_flow_validation(
15828                                 p_business_method_code     => l_bflow_method_code
15829                                ,p_business_class_code      => l_bflow_class_code
15830                                ,p_inherit_description_flag => l_inherit_desc_flag);
15831    END IF;
15832 
15833    --
15834    -- call analytical criteria
15835    --
15836    -- Inherited Analytical Criteria for business flow method of Prior Entry.
15837    --
15838    -- call description
15839    --
15840    -- No description or it is inherited.
15841    --
15842    -- call ADRs
15843    -- Bug 4922099
15844    --
15845    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15846         (NVL(l_actual_upg_option, 'N') = 'O') OR
15847         (NVL(l_enc_upg_option, 'N') = 'O')
15848       )
15849    THEN
15850    NULL;
15851    --
15852    --
15853    
15854    --
15855    --
15856    END IF;
15857    --
15858    -- Bug 4922099
15859    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15860           (NVL(l_enc_upg_option, 'N') = 'O')
15861         ) AND
15862         (l_bflow_method_code = 'PRIOR_ENTRY')
15863       )
15864    THEN
15865       IF
15866       --
15867       1 = 1
15868       --
15869       THEN
15870       xla_accounting_err_pkg.build_message
15871                                     (p_appli_s_name            => 'XLA'
15872                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15873                                     ,p_token_1                 => 'LINE_NUMBER'
15874                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15875                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15876                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15877                                                                              l_component_type
15878                                                                             ,l_component_code
15879                                                                             ,l_component_type_code
15880                                                                             ,l_component_appl_id
15881                                                                             ,l_amb_context_code
15882                                                                             ,l_entity_code
15883                                                                             ,l_event_class_code
15884                                                                            )
15885                                     ,p_token_3                 => 'OWNER'
15886                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15887                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15888                                                                           ,p_lookup_code    => l_component_type_code
15889                                                                          )
15890                                     ,p_token_4                 => 'PRODUCT_NAME'
15891                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15892                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15893                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15894                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15895                                     ,p_ae_header_id            =>  NULL
15896                                        );
15897 
15898         IF (C_LEVEL_ERROR>= g_log_level) THEN
15899                  trace
15900                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15901                       ,p_level    => C_LEVEL_ERROR
15902                       ,p_module   => l_log_module);
15903         END IF;
15904       END IF;
15905    END IF;
15906    --
15907    --
15908    ------------------------------------------------------------------------------------------------
15909    -- 4219869 Business Flow
15910    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15911    -- Prior Entry.  Currently, the following code is always generated.
15912    ------------------------------------------------------------------------------------------------
15913    -- No ValidateCurrentLine for business flow method of Prior Entry
15914 
15915    ------------------------------------------------------------------------------------
15916    -- 4219869 Business Flow
15917    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15918    ------------------------------------------------------------------------------------
15919    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15920 
15921    ----------------------------------------------------------------------------------
15922    -- 4219869 Business Flow
15923    -- Update journal entry status -- Need to generate this within IF <condition>
15924    ----------------------------------------------------------------------------------
15925    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15926          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15927          ,p_balance_type_code => l_balance_type_code
15928          );
15929 
15930    -------------------------------------------------------------------------------------------
15931    -- 4262811 - Generate the Accrual Reversal lines
15932    -------------------------------------------------------------------------------------------
15933    BEGIN
15934       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15935                               (g_array_event(p_event_id).array_value_num('header_index'));
15936       IF l_acc_rev_flag IS NULL THEN
15937          l_acc_rev_flag := 'N';
15938       END IF;
15939    EXCEPTION
15940       WHEN OTHERS THEN
15941          l_acc_rev_flag := 'N';
15942    END;
15943    --
15944    IF (l_acc_rev_flag = 'Y') THEN
15945 
15946        -- 4645092  ------------------------------------------------------------------------------
15947        -- To allow MPA report to determine if it should generate report process
15948        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15949        ------------------------------------------------------------------------------------------
15950 
15951        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15952        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15953 
15954        --
15955        -- Update the line information that should be overwritten
15956        --
15957        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15958                                          p_header_num   => 1);
15959        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15960 
15961        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15962 
15963        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15964           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15965        END IF;
15966 
15967       --
15968       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15969       --
15970       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15971           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15972       ELSE
15973           ---------------------------------------------------------------------------------------------------
15974           -- 4262811a Switch Sign
15975           ---------------------------------------------------------------------------------------------------
15976           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15977           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15978                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15979           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15980                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15981           -- 5132302
15982           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15983                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15984 
15985       END IF;
15986 
15987       -- 4955764
15988       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15989       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15990 
15991 
15992       XLA_AE_LINES_PKG.ValidateCurrentLine;
15993       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15994 
15995       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15996                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15997                ,p_balance_type_code => l_balance_type_code);
15998 
15999    END IF;
16000 
16001    -----------------------------------------------------------------------------------------
16002    -- 4262811 Multiperiod Accounting
16003    -----------------------------------------------------------------------------------------
16004      -- No MPA option is assigned.
16005 
16006 
16007 END IF;
16008 END IF;
16009 --
16010 
16011 --
16012 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16013    trace
16014       (p_msg      => 'END of AcctLineType_35'
16015       ,p_level    => C_LEVEL_PROCEDURE
16016       ,p_module   => l_log_module);
16017 END IF;
16018 --
16019 EXCEPTION
16020   WHEN xla_exceptions_pkg.application_exception THEN
16021       RAISE;
16022   WHEN OTHERS THEN
16023        xla_exceptions_pkg.raise_message
16024            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_35');
16025 END AcctLineType_35;
16026 --
16027 
16028 ---------------------------------------
16029 --
16030 -- PRIVATE FUNCTION
16031 --         AcctLineType_36
16032 --
16033 ---------------------------------------
16034 PROCEDURE AcctLineType_36 (
16035   p_application_id        IN NUMBER
16036  ,p_event_id              IN NUMBER
16037  ,p_calculate_acctd_flag  IN VARCHAR2
16038  ,p_calculate_g_l_flag    IN VARCHAR2
16039  ,p_actual_flag           IN OUT VARCHAR2
16040  ,p_balance_type_code     OUT VARCHAR2
16041  ,p_gain_or_loss_ref      OUT VARCHAR2
16042  
16043 --Budget Account
16044  , p_source_9            IN NUMBER
16045 --Main Or Backing Code
16046  , p_source_13            IN VARCHAR2
16047 --Accounting Reversal Flag
16048  , p_source_15            IN VARCHAR2
16049 --Distribution Link Type
16050  , p_source_17            IN VARCHAR2
16051 --PO Distribution Identifier
16052  , p_source_19            IN NUMBER
16053 --PO Header Identifier
16054  , p_source_20            IN NUMBER
16055 --Applied To Application Identifier
16056  , p_source_21            IN NUMBER
16057 --Applied To Distribution Link Type
16058  , p_source_22            IN VARCHAR2
16059 --Applied To Entity Code
16060  , p_source_23            IN VARCHAR2
16061 --Applied To Distribution Identifier 1
16062  , p_source_24            IN NUMBER
16063 --Applied To Header Identifier 1
16064  , p_source_25            IN NUMBER
16065 --Entered Amount
16066  , p_source_26            IN NUMBER
16067 --Currency Code
16068  , p_source_27            IN VARCHAR2
16069 --Accounted Amount
16070  , p_source_28            IN NUMBER
16071 --PO Encumbrance Upgrade Option
16072  , p_source_29            IN VARCHAR2
16073 --JFMIP Reference
16074  , p_source_31            IN VARCHAR2
16075 --PO Upgrade Encumbrance Type Identifier
16076  , p_source_32            IN NUMBER
16077 --Allocated to Main Document Distribution Type
16078  , p_source_33            IN VARCHAR2
16079 --Allocated to Main Document Distribution Identifier
16080  , p_source_34            IN NUMBER
16081 )
16082 IS
16083 
16084 l_component_type              VARCHAR2(80);
16085 l_component_code              VARCHAR2(30);
16086 l_component_type_code         VARCHAR2(1);
16087 l_component_appl_id           INTEGER;
16088 l_amb_context_code            VARCHAR2(30);
16089 l_entity_code                 VARCHAR2(30);
16090 l_event_class_code            VARCHAR2(30);
16091 l_ae_header_id                NUMBER;
16092 l_event_type_code             VARCHAR2(30);
16093 l_line_definition_code        VARCHAR2(30);
16094 l_line_definition_owner_code  VARCHAR2(1);
16095 --
16096 -- adr variables
16097 l_segment                     VARCHAR2(30);
16098 l_ccid                        NUMBER;
16099 l_adr_transaction_coa_id      NUMBER;
16100 l_adr_accounting_coa_id       NUMBER;
16101 l_adr_flexfield_segment_code  VARCHAR2(30);
16102 l_adr_flex_value_set_id       NUMBER;
16103 l_adr_value_type_code         VARCHAR2(30);
16104 l_adr_value_combination_id    NUMBER;
16105 l_adr_value_segment_code      VARCHAR2(30);
16106 
16107 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16108 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16109 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16110 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16111 
16112 -- 4262811 Variables ------------------------------------------------------------------------------------------
16113 l_entered_amt_idx             NUMBER;
16114 l_accted_amt_idx              NUMBER;
16115 l_acc_rev_flag                VARCHAR2(1);
16116 l_accrual_line_num            NUMBER;
16117 l_tmp_amt                     NUMBER;
16118 l_acc_rev_natural_side_code   VARCHAR2(1);
16119 
16120 l_num_entries                 NUMBER;
16121 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16122 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16123 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16124 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16125 l_recog_line_1                NUMBER;
16126 l_recog_line_2                NUMBER;
16127 
16128 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16129 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16130 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16131 
16132 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16133 
16134 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16135 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16136 
16137 ---------------------------------------------------------------------------------------------------------------
16138 
16139 
16140 --
16141 -- bulk performance
16142 --
16143 l_balance_type_code           VARCHAR2(1);
16144 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16145 l_log_module                  VARCHAR2(240);
16146 
16147 --
16148 -- Upgrade strategy
16149 --
16150 l_actual_upg_option           VARCHAR2(1);
16151 l_enc_upg_option           VARCHAR2(1);
16152 
16153 --
16154 BEGIN
16155 --
16156 IF g_log_enabled THEN
16157       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
16158 END IF;
16159 --
16160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16161 
16162       trace
16163          (p_msg      => 'BEGIN of AcctLineType_36'
16164          ,p_level    => C_LEVEL_PROCEDURE
16165          ,p_module   => l_log_module);
16166 
16167 END IF;
16168 --
16169 l_component_type             := 'AMB_JLT';
16170 l_component_code             := 'FV_PO_REINSTATE_REQ_DR';
16171 l_component_type_code        := 'S';
16172 l_component_appl_id          :=  201;
16173 l_amb_context_code           := 'DEFAULT';
16174 l_entity_code                := 'PURCHASE_ORDER';
16175 l_event_class_code           := 'PO_PA';
16176 l_event_type_code            := 'PO_PA_ALL';
16177 l_line_definition_owner_code := 'S';
16178 l_line_definition_code       := 'FV_PO_ALL';
16179 --
16180 l_balance_type_code          := 'A';
16181 l_segment                     := NULL;
16182 l_ccid                        := NULL;
16183 l_adr_transaction_coa_id      := NULL;
16184 l_adr_accounting_coa_id       := NULL;
16185 l_adr_flexfield_segment_code  := NULL;
16186 l_adr_flex_value_set_id       := NULL;
16187 l_adr_value_type_code         := NULL;
16188 l_adr_value_combination_id    := NULL;
16189 l_adr_value_segment_code      := NULL;
16190 
16191 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
16192 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
16193 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
16194 l_budgetary_control_flag     := 'Y';
16195 
16196 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16197 l_bflow_applied_to_amt       := NULL; -- 5132302
16198 l_entered_amt_idx            := NULL;          -- 4262811
16199 l_accted_amt_idx             := NULL;          -- 4262811
16200 l_acc_rev_flag               := NULL;          -- 4262811
16201 l_accrual_line_num           := NULL;          -- 4262811
16202 l_tmp_amt                    := NULL;          -- 4262811
16203 --
16204  
16205 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16206     l_balance_type_code <> 'B' THEN
16207 IF (NVL(
16208 xla_ae_sources_pkg.GetSystemSourceChar(
16209    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16210  , p_source_type_code      => 'Y'
16211  , p_source_application_id =>  602
16212 ),'
16213 ') =  'PO_PA_UNRESERVED' OR 
16214 NVL(
16215 xla_ae_sources_pkg.GetSystemSourceChar(
16216    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16217  , p_source_type_code      => 'Y'
16218  , p_source_application_id =>  602
16219 ),'
16220 ') =  'PO_PA_INV_CANCELLED' OR 
16221 NVL(
16222 xla_ae_sources_pkg.GetSystemSourceChar(
16223    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16224  , p_source_type_code      => 'Y'
16225  , p_source_application_id =>  602
16226 ),'
16227 ') =  'PO_PA_REJECTED') AND 
16228 NVL(p_source_13,'
16229 ') =  'B_REQ'
16230  THEN 
16231 
16232    --
16233    XLA_AE_LINES_PKG.SetNewLine;
16234 
16235    p_balance_type_code          := l_balance_type_code;
16236    -- set the flag so later we will know whether the gain loss line needs to be created
16237    
16238    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16239      p_actual_flag :='A';
16240    END IF;
16241 
16242    --
16243    -- bulk performance
16244    --
16245    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16246                                       p_header_num   => 0); -- 4262811
16247    --
16248    -- set accounting line options
16249    --
16250    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16251            p_natural_side_code          => 'D'
16252          , p_gain_or_loss_flag          => 'N'
16253          , p_gl_transfer_mode_code      => 'S'
16254          , p_acct_entry_type_code       => 'A'
16255          , p_switch_side_flag           => 'N'
16256          , p_merge_duplicate_code       => 'N'
16257          );
16258    --
16259    l_acc_rev_natural_side_code := 'C';  -- 4262811
16260    -- 
16261    --
16262    -- set accounting line type info
16263    --
16264    xla_ae_lines_pkg.SetAcctLineType
16265       (p_component_type             => l_component_type
16266       ,p_event_type_code            => l_event_type_code
16267       ,p_line_definition_owner_code => l_line_definition_owner_code
16268       ,p_line_definition_code       => l_line_definition_code
16269       ,p_accounting_line_code       => l_component_code
16270       ,p_accounting_line_type_code  => l_component_type_code
16271       ,p_accounting_line_appl_id    => l_component_appl_id
16272       ,p_amb_context_code           => l_amb_context_code
16273       ,p_entity_code                => l_entity_code
16274       ,p_event_class_code           => l_event_class_code);
16275    --
16276    -- set accounting class
16277    --
16278    xla_ae_lines_pkg.SetAcctClass(
16279            p_accounting_class_code  => 'REQUISITION'
16280          , p_ae_header_id           => l_ae_header_id
16281          );
16282 
16283    --
16284    -- set rounding class
16285    --
16286    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16287                       'REQUISITION';
16288 
16289    --
16290    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16291    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16292    --
16293    -- bulk performance
16294    --
16295    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16296 
16297    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16298       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16299 
16300    -- 4955764
16301    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16302       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16303 
16304    -- 4458381 Public Sector Enh
16305    
16306    --
16307    -- set accounting attributes for the line type
16308    --
16309    l_entered_amt_idx := 23;
16310    l_accted_amt_idx  := 25;
16311    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16312    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16313    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
16314    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
16315    l_rec_acct_attrs.array_num_value(2)  := 
16316 xla_ae_sources_pkg.GetSystemSourceNum(
16317    p_source_code           => 'XLA_EVENT_APPL_ID'
16318  , p_source_type_code      => 'Y'
16319  , p_source_application_id =>  602
16320 );
16321    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
16322    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
16323    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
16324    l_rec_acct_attrs.array_char_value(4)  := 
16325 xla_ae_sources_pkg.GetSystemSourceChar(
16326    p_source_code           => 'XLA_ENTITY_CODE'
16327  , p_source_type_code      => 'Y'
16328  , p_source_application_id =>  602
16329 );
16330    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
16331    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
16332    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
16333    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
16334    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
16335    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
16336    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
16337    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
16338    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
16339    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
16340    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
16341    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
16342    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
16343    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
16344    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
16345    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
16346    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
16347    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
16348    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
16349    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
16350    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
16351    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
16352    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
16353    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
16354    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
16355    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
16356    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
16357    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
16358    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
16359    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
16360    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
16361    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
16362    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
16363    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
16364    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
16365    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
16366    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
16367    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
16368    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
16369    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
16370    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
16371    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
16372    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
16373    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
16374    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
16375    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
16376    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
16377    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
16378    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
16379    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
16380    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
16381    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
16382    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
16383    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
16384 
16385    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16386    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16387 
16388    ---------------------------------------------------------------------------------------------------------------
16389    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16390    ---------------------------------------------------------------------------------------------------------------
16391    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16392 
16393    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16394    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16395 
16396    IF xla_accounting_cache_pkg.GetValueChar
16397          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16398          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16399    AND l_bflow_method_code = 'PRIOR_ENTRY'
16400 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16401    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16402          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16403        )
16404    THEN
16405          xla_ae_lines_pkg.BflowUpgEntry
16406            (p_business_method_code    => l_bflow_method_code
16407            ,p_business_class_code     => l_bflow_class_code
16408            ,p_balance_type            => l_balance_type_code);
16409    ELSE
16410       NULL;
16411 XLA_AE_LINES_PKG.business_flow_validation(
16412                                 p_business_method_code     => l_bflow_method_code
16413                                ,p_business_class_code      => l_bflow_class_code
16414                                ,p_inherit_description_flag => l_inherit_desc_flag);
16415    END IF;
16416 
16417    --
16418    -- call analytical criteria
16419    --
16420    -- Inherited Analytical Criteria for business flow method of Prior Entry.
16421    --
16422    -- call description
16423    --
16424    -- No description or it is inherited.
16425    --
16426    -- call ADRs
16427    -- Bug 4922099
16428    --
16429    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16430         (NVL(l_actual_upg_option, 'N') = 'O') OR
16431         (NVL(l_enc_upg_option, 'N') = 'O')
16432       )
16433    THEN
16434    NULL;
16435    --
16436    --
16437    
16438    --
16439    --
16440    END IF;
16441    --
16442    -- Bug 4922099
16443    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16444           (NVL(l_enc_upg_option, 'N') = 'O')
16445         ) AND
16446         (l_bflow_method_code = 'PRIOR_ENTRY')
16447       )
16448    THEN
16449       IF
16450       --
16451       1 = 1
16452       --
16453       THEN
16454       xla_accounting_err_pkg.build_message
16455                                     (p_appli_s_name            => 'XLA'
16456                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16457                                     ,p_token_1                 => 'LINE_NUMBER'
16458                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16459                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16460                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16461                                                                              l_component_type
16462                                                                             ,l_component_code
16463                                                                             ,l_component_type_code
16464                                                                             ,l_component_appl_id
16465                                                                             ,l_amb_context_code
16466                                                                             ,l_entity_code
16467                                                                             ,l_event_class_code
16468                                                                            )
16469                                     ,p_token_3                 => 'OWNER'
16470                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16471                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16472                                                                           ,p_lookup_code    => l_component_type_code
16473                                                                          )
16474                                     ,p_token_4                 => 'PRODUCT_NAME'
16475                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16476                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16477                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16478                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16479                                     ,p_ae_header_id            =>  NULL
16480                                        );
16481 
16482         IF (C_LEVEL_ERROR>= g_log_level) THEN
16483                  trace
16484                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16485                       ,p_level    => C_LEVEL_ERROR
16486                       ,p_module   => l_log_module);
16487         END IF;
16488       END IF;
16489    END IF;
16490    --
16491    --
16492    ------------------------------------------------------------------------------------------------
16493    -- 4219869 Business Flow
16494    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16495    -- Prior Entry.  Currently, the following code is always generated.
16496    ------------------------------------------------------------------------------------------------
16497    -- No ValidateCurrentLine for business flow method of Prior Entry
16498 
16499    ------------------------------------------------------------------------------------
16500    -- 4219869 Business Flow
16501    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16502    ------------------------------------------------------------------------------------
16503    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16504 
16505    ----------------------------------------------------------------------------------
16506    -- 4219869 Business Flow
16507    -- Update journal entry status -- Need to generate this within IF <condition>
16508    ----------------------------------------------------------------------------------
16509    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16510          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16511          ,p_balance_type_code => l_balance_type_code
16512          );
16513 
16514    -------------------------------------------------------------------------------------------
16515    -- 4262811 - Generate the Accrual Reversal lines
16516    -------------------------------------------------------------------------------------------
16517    BEGIN
16518       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16519                               (g_array_event(p_event_id).array_value_num('header_index'));
16520       IF l_acc_rev_flag IS NULL THEN
16521          l_acc_rev_flag := 'N';
16522       END IF;
16523    EXCEPTION
16524       WHEN OTHERS THEN
16525          l_acc_rev_flag := 'N';
16526    END;
16527    --
16528    IF (l_acc_rev_flag = 'Y') THEN
16529 
16530        -- 4645092  ------------------------------------------------------------------------------
16531        -- To allow MPA report to determine if it should generate report process
16532        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16533        ------------------------------------------------------------------------------------------
16534 
16535        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16536        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16537 
16538        --
16539        -- Update the line information that should be overwritten
16540        --
16541        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16542                                          p_header_num   => 1);
16543        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16544 
16545        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16546 
16547        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16548           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16549        END IF;
16550 
16551       --
16552       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16553       --
16554       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16555           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16556       ELSE
16557           ---------------------------------------------------------------------------------------------------
16558           -- 4262811a Switch Sign
16559           ---------------------------------------------------------------------------------------------------
16560           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16561           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16562                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16563           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16564                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16565           -- 5132302
16566           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16567                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16568 
16569       END IF;
16570 
16571       -- 4955764
16572       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16573       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16574 
16575 
16576       XLA_AE_LINES_PKG.ValidateCurrentLine;
16577       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16578 
16579       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16580                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16581                ,p_balance_type_code => l_balance_type_code);
16582 
16583    END IF;
16584 
16585    -----------------------------------------------------------------------------------------
16586    -- 4262811 Multiperiod Accounting
16587    -----------------------------------------------------------------------------------------
16588      -- No MPA option is assigned.
16589 
16590 
16591 END IF;
16592 END IF;
16593 --
16594 
16595 --
16596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16597    trace
16598       (p_msg      => 'END of AcctLineType_36'
16599       ,p_level    => C_LEVEL_PROCEDURE
16600       ,p_module   => l_log_module);
16601 END IF;
16602 --
16603 EXCEPTION
16604   WHEN xla_exceptions_pkg.application_exception THEN
16605       RAISE;
16606   WHEN OTHERS THEN
16607        xla_exceptions_pkg.raise_message
16608            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_36');
16609 END AcctLineType_36;
16610 --
16611 
16612 ---------------------------------------
16613 --
16614 -- PRIVATE FUNCTION
16615 --         AcctLineType_37
16616 --
16617 ---------------------------------------
16618 PROCEDURE AcctLineType_37 (
16619   p_application_id        IN NUMBER
16620  ,p_event_id              IN NUMBER
16621  ,p_calculate_acctd_flag  IN VARCHAR2
16622  ,p_calculate_g_l_flag    IN VARCHAR2
16623  ,p_actual_flag           IN OUT VARCHAR2
16624  ,p_balance_type_code     OUT VARCHAR2
16625  ,p_gain_or_loss_ref      OUT VARCHAR2
16626  
16627 --Journal entry Line Description
16628  , p_source_3            IN VARCHAR2
16629 --Budget Account
16630  , p_source_9            IN NUMBER
16631 --Federal Prior Year Flag
16632  , p_source_10            IN VARCHAR2
16633 --Main Or Backing Code
16634  , p_source_13            IN VARCHAR2
16635 --PO Distribution Type
16636  , p_source_14            IN VARCHAR2
16637 --Accounting Reversal Flag
16638  , p_source_15            IN VARCHAR2
16639 --Distribution Link Type
16640  , p_source_17            IN VARCHAR2
16641 --PO Distribution Identifier
16642  , p_source_19            IN NUMBER
16643 --PO Header Identifier
16644  , p_source_20            IN NUMBER
16645 --Applied To Application Identifier
16646  , p_source_21            IN NUMBER
16647 --Applied To Distribution Link Type
16648  , p_source_22            IN VARCHAR2
16649 --Applied To Entity Code
16650  , p_source_23            IN VARCHAR2
16651 --Applied To Distribution Identifier 1
16652  , p_source_24            IN NUMBER
16653 --Applied To Header Identifier 1
16654  , p_source_25            IN NUMBER
16655 --Entered Amount
16656  , p_source_26            IN NUMBER
16657 --Currency Code
16658  , p_source_27            IN VARCHAR2
16659 --Accounted Amount
16660  , p_source_28            IN NUMBER
16661 --PO Encumbrance Upgrade Option
16662  , p_source_29            IN VARCHAR2
16663 --JFMIP Reference
16664  , p_source_31            IN VARCHAR2
16665 --PO Upgrade Encumbrance Type Identifier
16666  , p_source_32            IN NUMBER
16667 --Currency Conversion Date
16668  , p_source_35            IN DATE
16669 --Currency Conversion Rate
16670  , p_source_36            IN NUMBER
16671 --Currency Conversion Type
16672  , p_source_37            IN VARCHAR2
16673 )
16674 IS
16675 
16676 l_component_type              VARCHAR2(80);
16677 l_component_code              VARCHAR2(30);
16678 l_component_type_code         VARCHAR2(1);
16679 l_component_appl_id           INTEGER;
16680 l_amb_context_code            VARCHAR2(30);
16681 l_entity_code                 VARCHAR2(30);
16682 l_event_class_code            VARCHAR2(30);
16683 l_ae_header_id                NUMBER;
16684 l_event_type_code             VARCHAR2(30);
16685 l_line_definition_code        VARCHAR2(30);
16686 l_line_definition_owner_code  VARCHAR2(1);
16687 --
16688 -- adr variables
16689 l_segment                     VARCHAR2(30);
16690 l_ccid                        NUMBER;
16691 l_adr_transaction_coa_id      NUMBER;
16692 l_adr_accounting_coa_id       NUMBER;
16693 l_adr_flexfield_segment_code  VARCHAR2(30);
16694 l_adr_flex_value_set_id       NUMBER;
16695 l_adr_value_type_code         VARCHAR2(30);
16696 l_adr_value_combination_id    NUMBER;
16697 l_adr_value_segment_code      VARCHAR2(30);
16698 
16699 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16700 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16701 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16702 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16703 
16704 -- 4262811 Variables ------------------------------------------------------------------------------------------
16705 l_entered_amt_idx             NUMBER;
16706 l_accted_amt_idx              NUMBER;
16707 l_acc_rev_flag                VARCHAR2(1);
16708 l_accrual_line_num            NUMBER;
16709 l_tmp_amt                     NUMBER;
16710 l_acc_rev_natural_side_code   VARCHAR2(1);
16711 
16712 l_num_entries                 NUMBER;
16713 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16714 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16715 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16716 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16717 l_recog_line_1                NUMBER;
16718 l_recog_line_2                NUMBER;
16719 
16720 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16721 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16722 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16723 
16724 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16725 
16726 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16727 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16728 
16729 ---------------------------------------------------------------------------------------------------------------
16730 
16731 
16732 --
16733 -- bulk performance
16734 --
16735 l_balance_type_code           VARCHAR2(1);
16736 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16737 l_log_module                  VARCHAR2(240);
16738 
16739 --
16740 -- Upgrade strategy
16741 --
16742 l_actual_upg_option           VARCHAR2(1);
16743 l_enc_upg_option           VARCHAR2(1);
16744 
16745 --
16746 BEGIN
16747 --
16748 IF g_log_enabled THEN
16749       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
16750 END IF;
16751 --
16752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16753 
16754       trace
16755          (p_msg      => 'BEGIN of AcctLineType_37'
16756          ,p_level    => C_LEVEL_PROCEDURE
16757          ,p_module   => l_log_module);
16758 
16759 END IF;
16760 --
16761 l_component_type             := 'AMB_JLT';
16762 l_component_code             := 'FV_PO_REVERSE_CR';
16763 l_component_type_code        := 'S';
16764 l_component_appl_id          :=  201;
16765 l_amb_context_code           := 'DEFAULT';
16766 l_entity_code                := 'PURCHASE_ORDER';
16767 l_event_class_code           := 'PO_PA';
16768 l_event_type_code            := 'PO_PA_ALL';
16769 l_line_definition_owner_code := 'S';
16770 l_line_definition_code       := 'FV_PO_ALL';
16771 --
16772 l_balance_type_code          := 'A';
16773 l_segment                     := NULL;
16774 l_ccid                        := NULL;
16775 l_adr_transaction_coa_id      := NULL;
16776 l_adr_accounting_coa_id       := NULL;
16777 l_adr_flexfield_segment_code  := NULL;
16778 l_adr_flex_value_set_id       := NULL;
16779 l_adr_value_type_code         := NULL;
16780 l_adr_value_combination_id    := NULL;
16781 l_adr_value_segment_code      := NULL;
16782 
16783 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16784 l_bflow_class_code           := '';    -- 4219869 Business Flow
16785 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16786 l_budgetary_control_flag     := 'Y';
16787 
16788 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16789 l_bflow_applied_to_amt       := NULL; -- 5132302
16790 l_entered_amt_idx            := NULL;          -- 4262811
16791 l_accted_amt_idx             := NULL;          -- 4262811
16792 l_acc_rev_flag               := NULL;          -- 4262811
16793 l_accrual_line_num           := NULL;          -- 4262811
16794 l_tmp_amt                    := NULL;          -- 4262811
16795 --
16796  
16797 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16798     l_balance_type_code <> 'B' THEN
16799 IF (NVL(
16800 xla_ae_sources_pkg.GetSystemSourceChar(
16801    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16802  , p_source_type_code      => 'Y'
16803  , p_source_application_id =>  602
16804 ),'
16805 ') =  'PO_PA_CANCELLED' OR 
16806 NVL(
16807 xla_ae_sources_pkg.GetSystemSourceChar(
16808    p_source_code           => 'XLA_EVENT_TYPE_CODE'
16809  , p_source_type_code      => 'Y'
16810  , p_source_application_id =>  602
16811 ),'
16812 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
16813 NVL(p_source_13,'
16814 ') =  'M' AND 
16815 (NVL(p_source_14,'
16816 ') <>  'AGREEMENT' OR 
16817 p_source_14 IS NULL ) AND 
16818 NVL(p_source_10,'
16819 ') =  'N'
16820  THEN 
16821 
16822    --
16823    XLA_AE_LINES_PKG.SetNewLine;
16824 
16825    p_balance_type_code          := l_balance_type_code;
16826    -- set the flag so later we will know whether the gain loss line needs to be created
16827    
16828    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16829      p_actual_flag :='A';
16830    END IF;
16831 
16832    --
16833    -- bulk performance
16834    --
16835    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16836                                       p_header_num   => 0); -- 4262811
16837    --
16838    -- set accounting line options
16839    --
16840    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16841            p_natural_side_code          => 'C'
16842          , p_gain_or_loss_flag          => 'N'
16843          , p_gl_transfer_mode_code      => 'S'
16844          , p_acct_entry_type_code       => 'A'
16845          , p_switch_side_flag           => 'Y'
16846          , p_merge_duplicate_code       => 'N'
16847          );
16848    --
16849    l_acc_rev_natural_side_code := 'D';  -- 4262811
16850    -- 
16851    --
16852    -- set accounting line type info
16853    --
16854    xla_ae_lines_pkg.SetAcctLineType
16855       (p_component_type             => l_component_type
16856       ,p_event_type_code            => l_event_type_code
16857       ,p_line_definition_owner_code => l_line_definition_owner_code
16858       ,p_line_definition_code       => l_line_definition_code
16859       ,p_accounting_line_code       => l_component_code
16860       ,p_accounting_line_type_code  => l_component_type_code
16861       ,p_accounting_line_appl_id    => l_component_appl_id
16862       ,p_amb_context_code           => l_amb_context_code
16863       ,p_entity_code                => l_entity_code
16864       ,p_event_class_code           => l_event_class_code);
16865    --
16866    -- set accounting class
16867    --
16868    xla_ae_lines_pkg.SetAcctClass(
16869            p_accounting_class_code  => 'PURCHASE_ORDER'
16870          , p_ae_header_id           => l_ae_header_id
16871          );
16872 
16873    --
16874    -- set rounding class
16875    --
16876    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16877                       'PURCHASE_ORDER';
16878 
16879    --
16880    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16881    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16882    --
16883    -- bulk performance
16884    --
16885    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16886 
16887    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16888       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16889 
16890    -- 4955764
16891    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16892       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16893 
16894    -- 4458381 Public Sector Enh
16895    
16896    --
16897    -- set accounting attributes for the line type
16898    --
16899    l_entered_amt_idx := 23;
16900    l_accted_amt_idx  := 28;
16901    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16902    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
16903    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
16904    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
16905    l_rec_acct_attrs.array_num_value(2)  := 
16906 xla_ae_sources_pkg.GetSystemSourceNum(
16907    p_source_code           => 'XLA_EVENT_APPL_ID'
16908  , p_source_type_code      => 'Y'
16909  , p_source_application_id =>  602
16910 );
16911    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
16912    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
16913    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
16914    l_rec_acct_attrs.array_char_value(4)  := 
16915 xla_ae_sources_pkg.GetSystemSourceChar(
16916    p_source_code           => 'XLA_ENTITY_CODE'
16917  , p_source_type_code      => 'Y'
16918  , p_source_application_id =>  602
16919 );
16920    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
16921    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
16922    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
16923    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
16924    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
16925    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
16926    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
16927    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
16928    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
16929    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
16930    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
16931    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
16932    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
16933    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
16934    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
16935    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
16936    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
16937    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
16938    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
16939    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
16940    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
16941    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
16942    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
16943    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
16944    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
16945    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
16946    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
16947    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
16948    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
16949    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
16950    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
16951    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
16952    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
16953    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
16954    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
16955    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
16956    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
16957    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
16958    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
16959    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
16960    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
16961    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
16962    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
16963    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
16964    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
16965    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
16966    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
16967    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
16968    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
16969    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
16970    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
16971    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
16972    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
16973    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
16974    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
16975    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
16976    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
16977    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
16978    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
16979    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
16980 
16981    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16982    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16983 
16984    ---------------------------------------------------------------------------------------------------------------
16985    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16986    ---------------------------------------------------------------------------------------------------------------
16987    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16988 
16989    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16990    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16991 
16992    IF xla_accounting_cache_pkg.GetValueChar
16993          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16994          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16995    AND l_bflow_method_code = 'PRIOR_ENTRY'
16996 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16997    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16998          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16999        )
17000    THEN
17001          xla_ae_lines_pkg.BflowUpgEntry
17002            (p_business_method_code    => l_bflow_method_code
17003            ,p_business_class_code     => l_bflow_class_code
17004            ,p_balance_type            => l_balance_type_code);
17005    ELSE
17006       NULL;
17007 -- No business flow processing for business flow method of NONE.
17008    END IF;
17009 
17010    --
17011    -- call analytical criteria
17012    --
17013    
17014    --
17015    -- call description
17016    --
17017    
17018 xla_ae_lines_pkg.SetLineDescription(
17019    p_ae_header_id => l_ae_header_id
17020   ,p_description  => Description_2 (
17021      p_application_id         => p_application_id
17022    , p_ae_header_id           => l_ae_header_id 
17023 , p_source_3 => p_source_3
17024    )
17025 );
17026 
17027 
17028    --
17029    -- call ADRs
17030    -- Bug 4922099
17031    --
17032    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17033         (NVL(l_actual_upg_option, 'N') = 'O') OR
17034         (NVL(l_enc_upg_option, 'N') = 'O')
17035       )
17036    THEN
17037    NULL;
17038    --
17039    --
17040    
17041   l_ccid := AcctDerRule_9(
17042            p_application_id           => p_application_id
17043          , p_ae_header_id             => l_ae_header_id 
17044 , p_source_9 => p_source_9
17045          , x_transaction_coa_id       => l_adr_transaction_coa_id
17046          , x_accounting_coa_id        => l_adr_accounting_coa_id
17047          , x_value_type_code          => l_adr_value_type_code
17048          , p_side                     => 'NA'
17049    );
17050 
17051    xla_ae_lines_pkg.set_ccid(
17052     p_code_combination_id          => l_ccid
17053   , p_value_type_code              => l_adr_value_type_code
17054   , p_transaction_coa_id           => l_adr_transaction_coa_id
17055   , p_accounting_coa_id            => l_adr_accounting_coa_id
17056   , p_adr_code                     => 'FV_ACCOUNT_RULE'
17057   , p_adr_type_code                => 'S'
17058   , p_component_type               => l_component_type
17059   , p_component_code               => l_component_code
17060   , p_component_type_code          => l_component_type_code
17061   , p_component_appl_id            => l_component_appl_id
17062   , p_amb_context_code             => l_amb_context_code
17063   , p_side                         => 'NA'
17064   );
17065 
17066 
17067    l_segment := AcctDerRule_8(
17068            p_application_id           => p_application_id
17069          , p_ae_header_id             => l_ae_header_id 
17070          , x_transaction_coa_id       => l_adr_transaction_coa_id
17071          , x_accounting_coa_id        => l_adr_accounting_coa_id
17072          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
17073          , x_flex_value_set_id        => l_adr_flex_value_set_id
17074          , x_value_type_code          => l_adr_value_type_code
17075          , x_value_combination_id     => l_adr_value_combination_id
17076          , x_value_segment_code       => l_adr_value_segment_code
17077          , p_side                     => 'NA'
17078          , p_override_seg_flag        => 'Y'
17079    );
17080 
17081    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
17082 
17083       xla_ae_lines_pkg.set_segment(
17084           p_to_segment_code         => 'GL_ACCOUNT'
17085         , p_segment_value           => l_segment
17086         , p_from_segment_code       => l_adr_value_segment_code
17087         , p_from_combination_id     => l_adr_value_combination_id
17088         , p_value_type_code         => l_adr_value_type_code
17089         , p_transaction_coa_id      => l_adr_transaction_coa_id
17090         , p_accounting_coa_id       => l_adr_accounting_coa_id
17091         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
17092         , p_flex_value_set_id       => l_adr_flex_value_set_id
17093         , p_adr_code                => 'FV_48X101_PURCHASING'
17094         , p_adr_type_code           => 'S'
17095         , p_component_type          => l_component_type
17096         , p_component_code          => l_component_code
17097         , p_component_type_code     => l_component_type_code
17098         , p_component_appl_id       => l_component_appl_id
17099         , p_amb_context_code        => l_amb_context_code
17100         , p_entity_code             => 'PURCHASE_ORDER'
17101         , p_event_class_code        => 'PO_PA'
17102         , p_side                    => 'NA'
17103         );
17104 
17105   END IF;
17106 
17107    --
17108    --
17109    END IF;
17110    --
17111    -- Bug 4922099
17112    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17113           (NVL(l_enc_upg_option, 'N') = 'O')
17114         ) AND
17115         (l_bflow_method_code = 'PRIOR_ENTRY')
17116       )
17117    THEN
17118       IF
17119       --
17120       1 = 2
17121       --
17122       THEN
17123       xla_accounting_err_pkg.build_message
17124                                     (p_appli_s_name            => 'XLA'
17125                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17126                                     ,p_token_1                 => 'LINE_NUMBER'
17127                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17128                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17129                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17130                                                                              l_component_type
17131                                                                             ,l_component_code
17132                                                                             ,l_component_type_code
17133                                                                             ,l_component_appl_id
17134                                                                             ,l_amb_context_code
17135                                                                             ,l_entity_code
17136                                                                             ,l_event_class_code
17137                                                                            )
17138                                     ,p_token_3                 => 'OWNER'
17139                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17140                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17141                                                                           ,p_lookup_code    => l_component_type_code
17142                                                                          )
17143                                     ,p_token_4                 => 'PRODUCT_NAME'
17144                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17145                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17146                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17147                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17148                                     ,p_ae_header_id            =>  NULL
17149                                        );
17150 
17151         IF (C_LEVEL_ERROR>= g_log_level) THEN
17152                  trace
17153                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17154                       ,p_level    => C_LEVEL_ERROR
17155                       ,p_module   => l_log_module);
17156         END IF;
17157       END IF;
17158    END IF;
17159    --
17160    --
17161    ------------------------------------------------------------------------------------------------
17162    -- 4219869 Business Flow
17163    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17164    -- Prior Entry.  Currently, the following code is always generated.
17165    ------------------------------------------------------------------------------------------------
17166    XLA_AE_LINES_PKG.ValidateCurrentLine;
17167 
17168    ------------------------------------------------------------------------------------
17169    -- 4219869 Business Flow
17170    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17171    ------------------------------------------------------------------------------------
17172    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17173 
17174    ----------------------------------------------------------------------------------
17175    -- 4219869 Business Flow
17176    -- Update journal entry status -- Need to generate this within IF <condition>
17177    ----------------------------------------------------------------------------------
17178    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17179          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17180          ,p_balance_type_code => l_balance_type_code
17181          );
17182 
17183    -------------------------------------------------------------------------------------------
17184    -- 4262811 - Generate the Accrual Reversal lines
17185    -------------------------------------------------------------------------------------------
17186    BEGIN
17187       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17188                               (g_array_event(p_event_id).array_value_num('header_index'));
17189       IF l_acc_rev_flag IS NULL THEN
17190          l_acc_rev_flag := 'N';
17191       END IF;
17192    EXCEPTION
17193       WHEN OTHERS THEN
17194          l_acc_rev_flag := 'N';
17195    END;
17196    --
17197    IF (l_acc_rev_flag = 'Y') THEN
17198 
17199        -- 4645092  ------------------------------------------------------------------------------
17200        -- To allow MPA report to determine if it should generate report process
17201        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17202        ------------------------------------------------------------------------------------------
17203 
17204        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17205        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17206 
17207        --
17208        -- Update the line information that should be overwritten
17209        --
17210        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17211                                          p_header_num   => 1);
17212        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17213 
17214        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17215 
17216        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17217           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17218        END IF;
17219 
17220       --
17221       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17222       --
17223       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17224           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17225       ELSE
17226           ---------------------------------------------------------------------------------------------------
17227           -- 4262811a Switch Sign
17228           ---------------------------------------------------------------------------------------------------
17229           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17230           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17231                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17232           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17233                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17234           -- 5132302
17235           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17236                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17237 
17238       END IF;
17239 
17240       -- 4955764
17241       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17242       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17243 
17244 
17245       XLA_AE_LINES_PKG.ValidateCurrentLine;
17246       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17247 
17248       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17249                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17250                ,p_balance_type_code => l_balance_type_code);
17251 
17252    END IF;
17253 
17254    -----------------------------------------------------------------------------------------
17255    -- 4262811 Multiperiod Accounting
17256    -----------------------------------------------------------------------------------------
17257      -- No MPA option is assigned.
17258 
17259 
17260 END IF;
17261 END IF;
17262 --
17263 
17264 --
17265 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17266    trace
17267       (p_msg      => 'END of AcctLineType_37'
17268       ,p_level    => C_LEVEL_PROCEDURE
17269       ,p_module   => l_log_module);
17270 END IF;
17271 --
17272 EXCEPTION
17273   WHEN xla_exceptions_pkg.application_exception THEN
17274       RAISE;
17275   WHEN OTHERS THEN
17276        xla_exceptions_pkg.raise_message
17277            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_37');
17278 END AcctLineType_37;
17279 --
17280 
17281 ---------------------------------------
17282 --
17283 -- PRIVATE FUNCTION
17284 --         AcctLineType_38
17285 --
17286 ---------------------------------------
17287 PROCEDURE AcctLineType_38 (
17288   p_application_id        IN NUMBER
17289  ,p_event_id              IN NUMBER
17290  ,p_calculate_acctd_flag  IN VARCHAR2
17291  ,p_calculate_g_l_flag    IN VARCHAR2
17292  ,p_actual_flag           IN OUT VARCHAR2
17293  ,p_balance_type_code     OUT VARCHAR2
17294  ,p_gain_or_loss_ref      OUT VARCHAR2
17295  
17296 --Journal entry Line Description
17297  , p_source_3            IN VARCHAR2
17298 --Federal Fund Category
17299  , p_source_7            IN VARCHAR2
17300 --Federal Fund Expired Status
17301  , p_source_8            IN VARCHAR2
17302 --Budget Account
17303  , p_source_9            IN NUMBER
17304 --Federal Prior Year Flag
17305  , p_source_10            IN VARCHAR2
17306 --Main Or Backing Code
17307  , p_source_13            IN VARCHAR2
17308 --PO Distribution Type
17309  , p_source_14            IN VARCHAR2
17310 --Accounting Reversal Flag
17311  , p_source_15            IN VARCHAR2
17312 --Distribution Link Type
17313  , p_source_17            IN VARCHAR2
17314 --PO Distribution Identifier
17315  , p_source_19            IN NUMBER
17316 --PO Header Identifier
17317  , p_source_20            IN NUMBER
17318 --Applied To Application Identifier
17319  , p_source_21            IN NUMBER
17320 --Applied To Distribution Link Type
17321  , p_source_22            IN VARCHAR2
17322 --Applied To Entity Code
17323  , p_source_23            IN VARCHAR2
17324 --Applied To Distribution Identifier 1
17325  , p_source_24            IN NUMBER
17326 --Applied To Header Identifier 1
17327  , p_source_25            IN NUMBER
17328 --Entered Amount
17329  , p_source_26            IN NUMBER
17330 --Currency Code
17331  , p_source_27            IN VARCHAR2
17332 --Accounted Amount
17333  , p_source_28            IN NUMBER
17334 --PO Encumbrance Upgrade Option
17335  , p_source_29            IN VARCHAR2
17336 --JFMIP Reference
17337  , p_source_31            IN VARCHAR2
17338 --PO Upgrade Encumbrance Type Identifier
17339  , p_source_32            IN NUMBER
17340 --Currency Conversion Date
17341  , p_source_35            IN DATE
17342 --Currency Conversion Rate
17343  , p_source_36            IN NUMBER
17344 --Currency Conversion Type
17345  , p_source_37            IN VARCHAR2
17346 )
17347 IS
17348 
17349 l_component_type              VARCHAR2(80);
17350 l_component_code              VARCHAR2(30);
17351 l_component_type_code         VARCHAR2(1);
17352 l_component_appl_id           INTEGER;
17353 l_amb_context_code            VARCHAR2(30);
17354 l_entity_code                 VARCHAR2(30);
17355 l_event_class_code            VARCHAR2(30);
17356 l_ae_header_id                NUMBER;
17357 l_event_type_code             VARCHAR2(30);
17358 l_line_definition_code        VARCHAR2(30);
17359 l_line_definition_owner_code  VARCHAR2(1);
17360 --
17361 -- adr variables
17362 l_segment                     VARCHAR2(30);
17363 l_ccid                        NUMBER;
17364 l_adr_transaction_coa_id      NUMBER;
17365 l_adr_accounting_coa_id       NUMBER;
17366 l_adr_flexfield_segment_code  VARCHAR2(30);
17367 l_adr_flex_value_set_id       NUMBER;
17368 l_adr_value_type_code         VARCHAR2(30);
17369 l_adr_value_combination_id    NUMBER;
17370 l_adr_value_segment_code      VARCHAR2(30);
17371 
17372 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17373 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17374 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17375 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17376 
17377 -- 4262811 Variables ------------------------------------------------------------------------------------------
17378 l_entered_amt_idx             NUMBER;
17379 l_accted_amt_idx              NUMBER;
17380 l_acc_rev_flag                VARCHAR2(1);
17381 l_accrual_line_num            NUMBER;
17382 l_tmp_amt                     NUMBER;
17383 l_acc_rev_natural_side_code   VARCHAR2(1);
17384 
17385 l_num_entries                 NUMBER;
17386 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17387 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17388 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17389 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17390 l_recog_line_1                NUMBER;
17391 l_recog_line_2                NUMBER;
17392 
17393 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17394 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17395 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17396 
17397 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17398 
17399 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17400 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17401 
17402 ---------------------------------------------------------------------------------------------------------------
17403 
17404 
17405 --
17406 -- bulk performance
17407 --
17408 l_balance_type_code           VARCHAR2(1);
17409 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17410 l_log_module                  VARCHAR2(240);
17411 
17412 --
17413 -- Upgrade strategy
17414 --
17415 l_actual_upg_option           VARCHAR2(1);
17416 l_enc_upg_option           VARCHAR2(1);
17417 
17418 --
17419 BEGIN
17420 --
17421 IF g_log_enabled THEN
17422       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
17423 END IF;
17424 --
17425 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17426 
17427       trace
17428          (p_msg      => 'BEGIN of AcctLineType_38'
17429          ,p_level    => C_LEVEL_PROCEDURE
17430          ,p_module   => l_log_module);
17431 
17432 END IF;
17433 --
17434 l_component_type             := 'AMB_JLT';
17435 l_component_code             := 'FV_PO_REVERSE_DR';
17436 l_component_type_code        := 'S';
17437 l_component_appl_id          :=  201;
17438 l_amb_context_code           := 'DEFAULT';
17439 l_entity_code                := 'PURCHASE_ORDER';
17440 l_event_class_code           := 'PO_PA';
17441 l_event_type_code            := 'PO_PA_ALL';
17442 l_line_definition_owner_code := 'S';
17443 l_line_definition_code       := 'FV_PO_ALL';
17444 --
17445 l_balance_type_code          := 'A';
17446 l_segment                     := NULL;
17447 l_ccid                        := NULL;
17448 l_adr_transaction_coa_id      := NULL;
17449 l_adr_accounting_coa_id       := NULL;
17450 l_adr_flexfield_segment_code  := NULL;
17451 l_adr_flex_value_set_id       := NULL;
17452 l_adr_value_type_code         := NULL;
17453 l_adr_value_combination_id    := NULL;
17454 l_adr_value_segment_code      := NULL;
17455 
17456 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17457 l_bflow_class_code           := '';    -- 4219869 Business Flow
17458 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17459 l_budgetary_control_flag     := 'Y';
17460 
17461 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17462 l_bflow_applied_to_amt       := NULL; -- 5132302
17463 l_entered_amt_idx            := NULL;          -- 4262811
17464 l_accted_amt_idx             := NULL;          -- 4262811
17465 l_acc_rev_flag               := NULL;          -- 4262811
17466 l_accrual_line_num           := NULL;          -- 4262811
17467 l_tmp_amt                    := NULL;          -- 4262811
17468 --
17469  
17470 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17471     l_balance_type_code <> 'B' THEN
17472 IF (NVL(
17473 xla_ae_sources_pkg.GetSystemSourceChar(
17474    p_source_code           => 'XLA_EVENT_TYPE_CODE'
17475  , p_source_type_code      => 'Y'
17476  , p_source_application_id =>  602
17477 ),'
17478 ') =  'PO_PA_CANCELLED' OR 
17479 NVL(
17480 xla_ae_sources_pkg.GetSystemSourceChar(
17481    p_source_code           => 'XLA_EVENT_TYPE_CODE'
17482  , p_source_type_code      => 'Y'
17483  , p_source_application_id =>  602
17484 ),'
17485 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
17486 NVL(p_source_13,'
17487 ') =  'M' AND 
17488 (NVL(p_source_14,'
17489 ') <>  'AGREEMENT' OR 
17490 p_source_14 IS NULL ) AND 
17491 NVL(p_source_10,'
17492 ') =  'N'
17493  THEN 
17494 
17495    --
17496    XLA_AE_LINES_PKG.SetNewLine;
17497 
17498    p_balance_type_code          := l_balance_type_code;
17499    -- set the flag so later we will know whether the gain loss line needs to be created
17500    
17501    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17502      p_actual_flag :='A';
17503    END IF;
17504 
17505    --
17506    -- bulk performance
17507    --
17508    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17509                                       p_header_num   => 0); -- 4262811
17510    --
17511    -- set accounting line options
17512    --
17513    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17514            p_natural_side_code          => 'D'
17515          , p_gain_or_loss_flag          => 'N'
17516          , p_gl_transfer_mode_code      => 'S'
17517          , p_acct_entry_type_code       => 'A'
17518          , p_switch_side_flag           => 'Y'
17519          , p_merge_duplicate_code       => 'N'
17520          );
17521    --
17522    l_acc_rev_natural_side_code := 'C';  -- 4262811
17523    -- 
17524    --
17525    -- set accounting line type info
17526    --
17527    xla_ae_lines_pkg.SetAcctLineType
17528       (p_component_type             => l_component_type
17529       ,p_event_type_code            => l_event_type_code
17530       ,p_line_definition_owner_code => l_line_definition_owner_code
17531       ,p_line_definition_code       => l_line_definition_code
17532       ,p_accounting_line_code       => l_component_code
17533       ,p_accounting_line_type_code  => l_component_type_code
17534       ,p_accounting_line_appl_id    => l_component_appl_id
17535       ,p_amb_context_code           => l_amb_context_code
17536       ,p_entity_code                => l_entity_code
17537       ,p_event_class_code           => l_event_class_code);
17538    --
17539    -- set accounting class
17540    --
17541    xla_ae_lines_pkg.SetAcctClass(
17542            p_accounting_class_code  => 'PURCHASE_ORDER'
17543          , p_ae_header_id           => l_ae_header_id
17544          );
17545 
17546    --
17547    -- set rounding class
17548    --
17549    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17550                       'PURCHASE_ORDER';
17551 
17552    --
17553    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17554    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17555    --
17556    -- bulk performance
17557    --
17558    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17559 
17560    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17561       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17562 
17563    -- 4955764
17564    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17565       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17566 
17567    -- 4458381 Public Sector Enh
17568    
17569    --
17570    -- set accounting attributes for the line type
17571    --
17572    l_entered_amt_idx := 23;
17573    l_accted_amt_idx  := 28;
17574    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17575    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
17576    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
17577    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
17578    l_rec_acct_attrs.array_num_value(2)  := 
17579 xla_ae_sources_pkg.GetSystemSourceNum(
17580    p_source_code           => 'XLA_EVENT_APPL_ID'
17581  , p_source_type_code      => 'Y'
17582  , p_source_application_id =>  602
17583 );
17584    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
17585    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
17586    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
17587    l_rec_acct_attrs.array_char_value(4)  := 
17588 xla_ae_sources_pkg.GetSystemSourceChar(
17589    p_source_code           => 'XLA_ENTITY_CODE'
17590  , p_source_type_code      => 'Y'
17591  , p_source_application_id =>  602
17592 );
17593    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
17594    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
17595    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
17596    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
17597    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
17598    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
17599    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
17600    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
17601    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
17602    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
17603    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
17604    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
17605    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
17606    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
17607    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
17608    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
17609    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
17610    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
17611    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
17612    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
17613    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
17614    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
17615    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
17616    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
17617    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
17618    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
17619    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
17620    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
17621    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
17622    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
17623    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
17624    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
17625    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
17626    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
17627    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
17628    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
17629    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
17630    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
17631    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
17632    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
17633    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
17634    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
17635    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
17636    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
17637    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
17638    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
17639    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
17640    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
17641    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
17642    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
17643    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
17644    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
17645    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
17646    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
17647    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
17648    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
17649    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
17650    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
17651    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
17652    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
17653 
17654    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17655    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17656 
17657    ---------------------------------------------------------------------------------------------------------------
17658    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17659    ---------------------------------------------------------------------------------------------------------------
17660    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17661 
17662    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17663    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17664 
17665    IF xla_accounting_cache_pkg.GetValueChar
17666          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17667          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17668    AND l_bflow_method_code = 'PRIOR_ENTRY'
17669 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17670    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17671          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17672        )
17673    THEN
17674          xla_ae_lines_pkg.BflowUpgEntry
17675            (p_business_method_code    => l_bflow_method_code
17676            ,p_business_class_code     => l_bflow_class_code
17677            ,p_balance_type            => l_balance_type_code);
17678    ELSE
17679       NULL;
17680 -- No business flow processing for business flow method of NONE.
17681    END IF;
17682 
17683    --
17684    -- call analytical criteria
17685    --
17686    
17687    --
17688    -- call description
17689    --
17690    
17691 xla_ae_lines_pkg.SetLineDescription(
17692    p_ae_header_id => l_ae_header_id
17693   ,p_description  => Description_2 (
17694      p_application_id         => p_application_id
17695    , p_ae_header_id           => l_ae_header_id 
17696 , p_source_3 => p_source_3
17697    )
17698 );
17699 
17700 
17701    --
17702    -- call ADRs
17703    -- Bug 4922099
17704    --
17705    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17706         (NVL(l_actual_upg_option, 'N') = 'O') OR
17707         (NVL(l_enc_upg_option, 'N') = 'O')
17708       )
17709    THEN
17710    NULL;
17711    --
17712    --
17713    
17714   l_ccid := AcctDerRule_9(
17715            p_application_id           => p_application_id
17716          , p_ae_header_id             => l_ae_header_id 
17717 , p_source_9 => p_source_9
17718          , x_transaction_coa_id       => l_adr_transaction_coa_id
17719          , x_accounting_coa_id        => l_adr_accounting_coa_id
17720          , x_value_type_code          => l_adr_value_type_code
17721          , p_side                     => 'NA'
17722    );
17723 
17724    xla_ae_lines_pkg.set_ccid(
17725     p_code_combination_id          => l_ccid
17726   , p_value_type_code              => l_adr_value_type_code
17727   , p_transaction_coa_id           => l_adr_transaction_coa_id
17728   , p_accounting_coa_id            => l_adr_accounting_coa_id
17729   , p_adr_code                     => 'FV_ACCOUNT_RULE'
17730   , p_adr_type_code                => 'S'
17731   , p_component_type               => l_component_type
17732   , p_component_code               => l_component_code
17733   , p_component_type_code          => l_component_type_code
17734   , p_component_appl_id            => l_component_appl_id
17735   , p_amb_context_code             => l_amb_context_code
17736   , p_side                         => 'NA'
17737   );
17738 
17739 
17740    l_segment := AcctDerRule_5(
17741            p_application_id           => p_application_id
17742          , p_ae_header_id             => l_ae_header_id 
17743 , p_source_7 => p_source_7
17744 , p_source_8 => p_source_8
17745          , x_transaction_coa_id       => l_adr_transaction_coa_id
17746          , x_accounting_coa_id        => l_adr_accounting_coa_id
17747          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
17748          , x_flex_value_set_id        => l_adr_flex_value_set_id
17749          , x_value_type_code          => l_adr_value_type_code
17750          , x_value_combination_id     => l_adr_value_combination_id
17751          , x_value_segment_code       => l_adr_value_segment_code
17752          , p_side                     => 'NA'
17753          , p_override_seg_flag        => 'Y'
17754    );
17755 
17756    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
17757 
17758       xla_ae_lines_pkg.set_segment(
17759           p_to_segment_code         => 'GL_ACCOUNT'
17760         , p_segment_value           => l_segment
17761         , p_from_segment_code       => l_adr_value_segment_code
17762         , p_from_combination_id     => l_adr_value_combination_id
17763         , p_value_type_code         => l_adr_value_type_code
17764         , p_transaction_coa_id      => l_adr_transaction_coa_id
17765         , p_accounting_coa_id       => l_adr_accounting_coa_id
17766         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
17767         , p_flex_value_set_id       => l_adr_flex_value_set_id
17768         , p_adr_code                => 'FV_46X002'
17769         , p_adr_type_code           => 'S'
17770         , p_component_type          => l_component_type
17771         , p_component_code          => l_component_code
17772         , p_component_type_code     => l_component_type_code
17773         , p_component_appl_id       => l_component_appl_id
17774         , p_amb_context_code        => l_amb_context_code
17775         , p_entity_code             => 'PURCHASE_ORDER'
17776         , p_event_class_code        => 'PO_PA'
17777         , p_side                    => 'NA'
17778         );
17779 
17780   END IF;
17781 
17782    --
17783    --
17784    END IF;
17785    --
17786    -- Bug 4922099
17787    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17788           (NVL(l_enc_upg_option, 'N') = 'O')
17789         ) AND
17790         (l_bflow_method_code = 'PRIOR_ENTRY')
17791       )
17792    THEN
17793       IF
17794       --
17795       1 = 2
17796       --
17797       THEN
17798       xla_accounting_err_pkg.build_message
17799                                     (p_appli_s_name            => 'XLA'
17800                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17801                                     ,p_token_1                 => 'LINE_NUMBER'
17802                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17803                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17804                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17805                                                                              l_component_type
17806                                                                             ,l_component_code
17807                                                                             ,l_component_type_code
17808                                                                             ,l_component_appl_id
17809                                                                             ,l_amb_context_code
17810                                                                             ,l_entity_code
17811                                                                             ,l_event_class_code
17812                                                                            )
17813                                     ,p_token_3                 => 'OWNER'
17814                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17815                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17816                                                                           ,p_lookup_code    => l_component_type_code
17817                                                                          )
17818                                     ,p_token_4                 => 'PRODUCT_NAME'
17819                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17820                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17821                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17822                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17823                                     ,p_ae_header_id            =>  NULL
17824                                        );
17825 
17826         IF (C_LEVEL_ERROR>= g_log_level) THEN
17827                  trace
17828                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17829                       ,p_level    => C_LEVEL_ERROR
17830                       ,p_module   => l_log_module);
17831         END IF;
17832       END IF;
17833    END IF;
17834    --
17835    --
17836    ------------------------------------------------------------------------------------------------
17837    -- 4219869 Business Flow
17838    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17839    -- Prior Entry.  Currently, the following code is always generated.
17840    ------------------------------------------------------------------------------------------------
17841    XLA_AE_LINES_PKG.ValidateCurrentLine;
17842 
17843    ------------------------------------------------------------------------------------
17844    -- 4219869 Business Flow
17845    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17846    ------------------------------------------------------------------------------------
17847    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17848 
17849    ----------------------------------------------------------------------------------
17850    -- 4219869 Business Flow
17851    -- Update journal entry status -- Need to generate this within IF <condition>
17852    ----------------------------------------------------------------------------------
17853    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17854          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17855          ,p_balance_type_code => l_balance_type_code
17856          );
17857 
17858    -------------------------------------------------------------------------------------------
17859    -- 4262811 - Generate the Accrual Reversal lines
17860    -------------------------------------------------------------------------------------------
17861    BEGIN
17862       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17863                               (g_array_event(p_event_id).array_value_num('header_index'));
17864       IF l_acc_rev_flag IS NULL THEN
17865          l_acc_rev_flag := 'N';
17866       END IF;
17867    EXCEPTION
17868       WHEN OTHERS THEN
17869          l_acc_rev_flag := 'N';
17870    END;
17871    --
17872    IF (l_acc_rev_flag = 'Y') THEN
17873 
17874        -- 4645092  ------------------------------------------------------------------------------
17875        -- To allow MPA report to determine if it should generate report process
17876        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17877        ------------------------------------------------------------------------------------------
17878 
17879        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17880        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17881 
17882        --
17883        -- Update the line information that should be overwritten
17884        --
17885        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17886                                          p_header_num   => 1);
17887        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17888 
17889        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17890 
17891        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17892           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17893        END IF;
17894 
17895       --
17896       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17897       --
17898       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17899           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17900       ELSE
17901           ---------------------------------------------------------------------------------------------------
17902           -- 4262811a Switch Sign
17903           ---------------------------------------------------------------------------------------------------
17904           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17905           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17906                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17907           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17908                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17909           -- 5132302
17910           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17911                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17912 
17913       END IF;
17914 
17915       -- 4955764
17916       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17917       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17918 
17919 
17920       XLA_AE_LINES_PKG.ValidateCurrentLine;
17921       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17922 
17923       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17924                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17925                ,p_balance_type_code => l_balance_type_code);
17926 
17927    END IF;
17928 
17929    -----------------------------------------------------------------------------------------
17930    -- 4262811 Multiperiod Accounting
17931    -----------------------------------------------------------------------------------------
17932      -- No MPA option is assigned.
17933 
17934 
17935 END IF;
17936 END IF;
17937 --
17938 
17939 --
17940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17941    trace
17942       (p_msg      => 'END of AcctLineType_38'
17943       ,p_level    => C_LEVEL_PROCEDURE
17944       ,p_module   => l_log_module);
17945 END IF;
17946 --
17947 EXCEPTION
17948   WHEN xla_exceptions_pkg.application_exception THEN
17949       RAISE;
17950   WHEN OTHERS THEN
17951        xla_exceptions_pkg.raise_message
17952            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_38');
17953 END AcctLineType_38;
17954 --
17955 
17956 ---------------------------------------
17957 --
17958 -- PRIVATE FUNCTION
17959 --         AcctLineType_39
17960 --
17961 ---------------------------------------
17962 PROCEDURE AcctLineType_39 (
17963   p_application_id        IN NUMBER
17964  ,p_event_id              IN NUMBER
17965  ,p_calculate_acctd_flag  IN VARCHAR2
17966  ,p_calculate_g_l_flag    IN VARCHAR2
17967  ,p_actual_flag           IN OUT VARCHAR2
17968  ,p_balance_type_code     OUT VARCHAR2
17969  ,p_gain_or_loss_ref      OUT VARCHAR2
17970  
17971 --Journal entry Line Description
17972  , p_source_3            IN VARCHAR2
17973 --Federal Fund Category
17974  , p_source_7            IN VARCHAR2
17975 --Federal Fund Expired Status
17976  , p_source_8            IN VARCHAR2
17977 --Budget Account
17978  , p_source_9            IN NUMBER
17979 --Federal Prior Year Flag
17980  , p_source_10            IN VARCHAR2
17981 --Federal Net Pya Adj Amt
17982  , p_source_11            IN NUMBER
17983 --Main Or Backing Code
17984  , p_source_13            IN VARCHAR2
17985 --PO Distribution Type
17986  , p_source_14            IN VARCHAR2
17987 --Accounting Reversal Flag
17988  , p_source_15            IN VARCHAR2
17989 --Distribution Link Type
17990  , p_source_17            IN VARCHAR2
17991 --PO Distribution Identifier
17992  , p_source_19            IN NUMBER
17993 --PO Header Identifier
17994  , p_source_20            IN NUMBER
17995 --Applied To Application Identifier
17996  , p_source_21            IN NUMBER
17997 --Applied To Distribution Link Type
17998  , p_source_22            IN VARCHAR2
17999 --Applied To Entity Code
18000  , p_source_23            IN VARCHAR2
18001 --Applied To Distribution Identifier 1
18002  , p_source_24            IN NUMBER
18003 --Applied To Header Identifier 1
18004  , p_source_25            IN NUMBER
18005 --Entered Amount
18006  , p_source_26            IN NUMBER
18007 --Currency Code
18008  , p_source_27            IN VARCHAR2
18009 --Accounted Amount
18010  , p_source_28            IN NUMBER
18011 --PO Encumbrance Upgrade Option
18012  , p_source_29            IN VARCHAR2
18013 --JFMIP Reference
18014  , p_source_31            IN VARCHAR2
18015 --PO Upgrade Encumbrance Type Identifier
18016  , p_source_32            IN NUMBER
18017 --Currency Conversion Date
18018  , p_source_35            IN DATE
18019 --Currency Conversion Rate
18020  , p_source_36            IN NUMBER
18021 --Currency Conversion Type
18022  , p_source_37            IN VARCHAR2
18023 )
18024 IS
18025 
18026 l_component_type              VARCHAR2(80);
18027 l_component_code              VARCHAR2(30);
18028 l_component_type_code         VARCHAR2(1);
18029 l_component_appl_id           INTEGER;
18030 l_amb_context_code            VARCHAR2(30);
18031 l_entity_code                 VARCHAR2(30);
18032 l_event_class_code            VARCHAR2(30);
18033 l_ae_header_id                NUMBER;
18034 l_event_type_code             VARCHAR2(30);
18035 l_line_definition_code        VARCHAR2(30);
18036 l_line_definition_owner_code  VARCHAR2(1);
18037 --
18038 -- adr variables
18039 l_segment                     VARCHAR2(30);
18040 l_ccid                        NUMBER;
18041 l_adr_transaction_coa_id      NUMBER;
18042 l_adr_accounting_coa_id       NUMBER;
18043 l_adr_flexfield_segment_code  VARCHAR2(30);
18044 l_adr_flex_value_set_id       NUMBER;
18045 l_adr_value_type_code         VARCHAR2(30);
18046 l_adr_value_combination_id    NUMBER;
18047 l_adr_value_segment_code      VARCHAR2(30);
18048 
18049 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18050 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18051 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18052 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18053 
18054 -- 4262811 Variables ------------------------------------------------------------------------------------------
18055 l_entered_amt_idx             NUMBER;
18056 l_accted_amt_idx              NUMBER;
18057 l_acc_rev_flag                VARCHAR2(1);
18058 l_accrual_line_num            NUMBER;
18059 l_tmp_amt                     NUMBER;
18060 l_acc_rev_natural_side_code   VARCHAR2(1);
18061 
18062 l_num_entries                 NUMBER;
18063 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18064 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18065 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18066 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18067 l_recog_line_1                NUMBER;
18068 l_recog_line_2                NUMBER;
18069 
18070 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18071 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18072 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18073 
18074 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18075 
18076 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18077 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18078 
18079 ---------------------------------------------------------------------------------------------------------------
18080 
18081 
18082 --
18083 -- bulk performance
18084 --
18085 l_balance_type_code           VARCHAR2(1);
18086 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18087 l_log_module                  VARCHAR2(240);
18088 
18089 --
18090 -- Upgrade strategy
18091 --
18092 l_actual_upg_option           VARCHAR2(1);
18093 l_enc_upg_option           VARCHAR2(1);
18094 
18095 --
18096 BEGIN
18097 --
18098 IF g_log_enabled THEN
18099       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
18100 END IF;
18101 --
18102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18103 
18104       trace
18105          (p_msg      => 'BEGIN of AcctLineType_39'
18106          ,p_level    => C_LEVEL_PROCEDURE
18107          ,p_module   => l_log_module);
18108 
18109 END IF;
18110 --
18111 l_component_type             := 'AMB_JLT';
18112 l_component_code             := 'FV_PO_REVERSE_PYA_DR';
18113 l_component_type_code        := 'S';
18114 l_component_appl_id          :=  201;
18115 l_amb_context_code           := 'DEFAULT';
18116 l_entity_code                := 'PURCHASE_ORDER';
18117 l_event_class_code           := 'PO_PA';
18118 l_event_type_code            := 'PO_PA_ALL';
18119 l_line_definition_owner_code := 'S';
18120 l_line_definition_code       := 'FV_PO_ALL';
18121 --
18122 l_balance_type_code          := 'A';
18123 l_segment                     := NULL;
18124 l_ccid                        := NULL;
18125 l_adr_transaction_coa_id      := NULL;
18126 l_adr_accounting_coa_id       := NULL;
18127 l_adr_flexfield_segment_code  := NULL;
18128 l_adr_flex_value_set_id       := NULL;
18129 l_adr_value_type_code         := NULL;
18130 l_adr_value_combination_id    := NULL;
18131 l_adr_value_segment_code      := NULL;
18132 
18133 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18134 l_bflow_class_code           := '';    -- 4219869 Business Flow
18135 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18136 l_budgetary_control_flag     := 'Y';
18137 
18138 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18139 l_bflow_applied_to_amt       := NULL; -- 5132302
18140 l_entered_amt_idx            := NULL;          -- 4262811
18141 l_accted_amt_idx             := NULL;          -- 4262811
18142 l_acc_rev_flag               := NULL;          -- 4262811
18143 l_accrual_line_num           := NULL;          -- 4262811
18144 l_tmp_amt                    := NULL;          -- 4262811
18145 --
18146  
18147 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18148     l_balance_type_code <> 'B' THEN
18149 IF NVL(
18150 xla_ae_sources_pkg.GetSystemSourceChar(
18151    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18152  , p_source_type_code      => 'Y'
18153  , p_source_application_id =>  602
18154 ),'
18155 ') =  'PO_PA_CANCELLED' AND 
18156 NVL(p_source_13,'
18157 ') =  'M' AND 
18158 (NVL(p_source_14,'
18159 ') <>  'AGREEMENT' OR 
18160 p_source_14 IS NULL ) AND 
18161 NVL(p_source_10,'
18162 ') =  'Y'
18163  THEN 
18164 
18165    --
18166    XLA_AE_LINES_PKG.SetNewLine;
18167 
18168    p_balance_type_code          := l_balance_type_code;
18169    -- set the flag so later we will know whether the gain loss line needs to be created
18170    
18171    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18172      p_actual_flag :='A';
18173    END IF;
18174 
18175    --
18176    -- bulk performance
18177    --
18178    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18179                                       p_header_num   => 0); -- 4262811
18180    --
18181    -- set accounting line options
18182    --
18183    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18184            p_natural_side_code          => 'C'
18185          , p_gain_or_loss_flag          => 'N'
18186          , p_gl_transfer_mode_code      => 'S'
18187          , p_acct_entry_type_code       => 'A'
18188          , p_switch_side_flag           => 'Y'
18189          , p_merge_duplicate_code       => 'N'
18190          );
18191    --
18192    l_acc_rev_natural_side_code := 'D';  -- 4262811
18193    -- 
18194    --
18195    -- set accounting line type info
18196    --
18197    xla_ae_lines_pkg.SetAcctLineType
18198       (p_component_type             => l_component_type
18199       ,p_event_type_code            => l_event_type_code
18200       ,p_line_definition_owner_code => l_line_definition_owner_code
18201       ,p_line_definition_code       => l_line_definition_code
18202       ,p_accounting_line_code       => l_component_code
18203       ,p_accounting_line_type_code  => l_component_type_code
18204       ,p_accounting_line_appl_id    => l_component_appl_id
18205       ,p_amb_context_code           => l_amb_context_code
18206       ,p_entity_code                => l_entity_code
18207       ,p_event_class_code           => l_event_class_code);
18208    --
18209    -- set accounting class
18210    --
18211    xla_ae_lines_pkg.SetAcctClass(
18212            p_accounting_class_code  => 'PURCHASE_ORDER'
18213          , p_ae_header_id           => l_ae_header_id
18214          );
18215 
18216    --
18217    -- set rounding class
18218    --
18219    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18220                       'PURCHASE_ORDER';
18221 
18222    --
18223    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18224    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18225    --
18226    -- bulk performance
18227    --
18228    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18229 
18230    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18231       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18232 
18233    -- 4955764
18234    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18235       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18236 
18237    -- 4458381 Public Sector Enh
18238    
18239    --
18240    -- set accounting attributes for the line type
18241    --
18242    l_entered_amt_idx := 23;
18243    l_accted_amt_idx  := 28;
18244    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18245    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18246    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
18247    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
18248    l_rec_acct_attrs.array_num_value(2)  := 
18249 xla_ae_sources_pkg.GetSystemSourceNum(
18250    p_source_code           => 'XLA_EVENT_APPL_ID'
18251  , p_source_type_code      => 'Y'
18252  , p_source_application_id =>  602
18253 );
18254    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
18255    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
18256    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
18257    l_rec_acct_attrs.array_char_value(4)  := 
18258 xla_ae_sources_pkg.GetSystemSourceChar(
18259    p_source_code           => 'XLA_ENTITY_CODE'
18260  , p_source_type_code      => 'Y'
18261  , p_source_application_id =>  602
18262 );
18263    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
18264    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
18265    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
18266    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
18267    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
18268    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
18269    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18270    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
18271    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
18272    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
18273    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
18274    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
18275    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18276    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
18277    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
18278    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
18279    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
18280    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
18281    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
18282    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
18283    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
18284    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
18285    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
18286    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
18287    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
18288    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
18289    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
18290    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
18291    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
18292    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
18293    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
18294    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
18295    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
18296    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
18297    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
18298    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
18299    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
18300    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
18301    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
18302    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
18303    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
18304    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
18305    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
18306    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
18307    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
18308    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
18309    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
18310    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
18311    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
18312    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
18313    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
18314    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
18315    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
18316    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
18317    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
18318    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
18319    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
18320    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
18321    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
18322    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
18323 
18324    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18325    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18326 
18327    ---------------------------------------------------------------------------------------------------------------
18328    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18329    ---------------------------------------------------------------------------------------------------------------
18330    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18331 
18332    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18333    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18334 
18335    IF xla_accounting_cache_pkg.GetValueChar
18336          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18337          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18338    AND l_bflow_method_code = 'PRIOR_ENTRY'
18339 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18340    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18341          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18342        )
18343    THEN
18344          xla_ae_lines_pkg.BflowUpgEntry
18345            (p_business_method_code    => l_bflow_method_code
18346            ,p_business_class_code     => l_bflow_class_code
18347            ,p_balance_type            => l_balance_type_code);
18348    ELSE
18349       NULL;
18350 -- No business flow processing for business flow method of NONE.
18351    END IF;
18352 
18353    --
18354    -- call analytical criteria
18355    --
18356    
18357    --
18358    -- call description
18359    --
18360    
18361 xla_ae_lines_pkg.SetLineDescription(
18362    p_ae_header_id => l_ae_header_id
18363   ,p_description  => Description_2 (
18364      p_application_id         => p_application_id
18365    , p_ae_header_id           => l_ae_header_id 
18366 , p_source_3 => p_source_3
18367    )
18368 );
18369 
18370 
18371    --
18372    -- call ADRs
18373    -- Bug 4922099
18374    --
18375    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18376         (NVL(l_actual_upg_option, 'N') = 'O') OR
18377         (NVL(l_enc_upg_option, 'N') = 'O')
18378       )
18379    THEN
18380    NULL;
18381    --
18382    --
18383    
18384   l_ccid := AcctDerRule_9(
18385            p_application_id           => p_application_id
18386          , p_ae_header_id             => l_ae_header_id 
18387 , p_source_9 => p_source_9
18388          , x_transaction_coa_id       => l_adr_transaction_coa_id
18389          , x_accounting_coa_id        => l_adr_accounting_coa_id
18390          , x_value_type_code          => l_adr_value_type_code
18391          , p_side                     => 'NA'
18392    );
18393 
18394    xla_ae_lines_pkg.set_ccid(
18395     p_code_combination_id          => l_ccid
18396   , p_value_type_code              => l_adr_value_type_code
18397   , p_transaction_coa_id           => l_adr_transaction_coa_id
18398   , p_accounting_coa_id            => l_adr_accounting_coa_id
18399   , p_adr_code                     => 'FV_ACCOUNT_RULE'
18400   , p_adr_type_code                => 'S'
18401   , p_component_type               => l_component_type
18402   , p_component_code               => l_component_code
18403   , p_component_type_code          => l_component_type_code
18404   , p_component_appl_id            => l_component_appl_id
18405   , p_amb_context_code             => l_amb_context_code
18406   , p_side                         => 'NA'
18407   );
18408 
18409 
18410    l_segment := AcctDerRule_12(
18411            p_application_id           => p_application_id
18412          , p_ae_header_id             => l_ae_header_id 
18413 , p_source_7 => p_source_7
18414 , p_source_8 => p_source_8
18415 , p_source_10 => p_source_10
18416 , p_source_11 => p_source_11
18417          , x_transaction_coa_id       => l_adr_transaction_coa_id
18418          , x_accounting_coa_id        => l_adr_accounting_coa_id
18419          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
18420          , x_flex_value_set_id        => l_adr_flex_value_set_id
18421          , x_value_type_code          => l_adr_value_type_code
18422          , x_value_combination_id     => l_adr_value_combination_id
18423          , x_value_segment_code       => l_adr_value_segment_code
18424          , p_side                     => 'NA'
18425          , p_override_seg_flag        => 'Y'
18426    );
18427 
18428    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
18429 
18430       xla_ae_lines_pkg.set_segment(
18431           p_to_segment_code         => 'GL_ACCOUNT'
18432         , p_segment_value           => l_segment
18433         , p_from_segment_code       => l_adr_value_segment_code
18434         , p_from_combination_id     => l_adr_value_combination_id
18435         , p_value_type_code         => l_adr_value_type_code
18436         , p_transaction_coa_id      => l_adr_transaction_coa_id
18437         , p_accounting_coa_id       => l_adr_accounting_coa_id
18438         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
18439         , p_flex_value_set_id       => l_adr_flex_value_set_id
18440         , p_adr_code                => 'FV_PYA_46X002_487101'
18441         , p_adr_type_code           => 'S'
18442         , p_component_type          => l_component_type
18443         , p_component_code          => l_component_code
18444         , p_component_type_code     => l_component_type_code
18445         , p_component_appl_id       => l_component_appl_id
18446         , p_amb_context_code        => l_amb_context_code
18447         , p_entity_code             => 'PURCHASE_ORDER'
18448         , p_event_class_code        => 'PO_PA'
18449         , p_side                    => 'NA'
18450         );
18451 
18452   END IF;
18453 
18454    --
18455    --
18456    END IF;
18457    --
18458    -- Bug 4922099
18459    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18460           (NVL(l_enc_upg_option, 'N') = 'O')
18461         ) AND
18462         (l_bflow_method_code = 'PRIOR_ENTRY')
18463       )
18464    THEN
18465       IF
18466       --
18467       1 = 2
18468       --
18469       THEN
18470       xla_accounting_err_pkg.build_message
18471                                     (p_appli_s_name            => 'XLA'
18472                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18473                                     ,p_token_1                 => 'LINE_NUMBER'
18474                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18475                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18476                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18477                                                                              l_component_type
18478                                                                             ,l_component_code
18479                                                                             ,l_component_type_code
18480                                                                             ,l_component_appl_id
18481                                                                             ,l_amb_context_code
18482                                                                             ,l_entity_code
18483                                                                             ,l_event_class_code
18484                                                                            )
18485                                     ,p_token_3                 => 'OWNER'
18486                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18487                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18488                                                                           ,p_lookup_code    => l_component_type_code
18489                                                                          )
18490                                     ,p_token_4                 => 'PRODUCT_NAME'
18491                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18492                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18493                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18494                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18495                                     ,p_ae_header_id            =>  NULL
18496                                        );
18497 
18498         IF (C_LEVEL_ERROR>= g_log_level) THEN
18499                  trace
18500                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18501                       ,p_level    => C_LEVEL_ERROR
18502                       ,p_module   => l_log_module);
18503         END IF;
18504       END IF;
18505    END IF;
18506    --
18507    --
18508    ------------------------------------------------------------------------------------------------
18509    -- 4219869 Business Flow
18510    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18511    -- Prior Entry.  Currently, the following code is always generated.
18512    ------------------------------------------------------------------------------------------------
18513    XLA_AE_LINES_PKG.ValidateCurrentLine;
18514 
18515    ------------------------------------------------------------------------------------
18516    -- 4219869 Business Flow
18517    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18518    ------------------------------------------------------------------------------------
18519    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18520 
18521    ----------------------------------------------------------------------------------
18522    -- 4219869 Business Flow
18523    -- Update journal entry status -- Need to generate this within IF <condition>
18524    ----------------------------------------------------------------------------------
18525    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18526          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18527          ,p_balance_type_code => l_balance_type_code
18528          );
18529 
18530    -------------------------------------------------------------------------------------------
18531    -- 4262811 - Generate the Accrual Reversal lines
18532    -------------------------------------------------------------------------------------------
18533    BEGIN
18534       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18535                               (g_array_event(p_event_id).array_value_num('header_index'));
18536       IF l_acc_rev_flag IS NULL THEN
18537          l_acc_rev_flag := 'N';
18538       END IF;
18539    EXCEPTION
18540       WHEN OTHERS THEN
18541          l_acc_rev_flag := 'N';
18542    END;
18543    --
18544    IF (l_acc_rev_flag = 'Y') THEN
18545 
18546        -- 4645092  ------------------------------------------------------------------------------
18547        -- To allow MPA report to determine if it should generate report process
18548        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18549        ------------------------------------------------------------------------------------------
18550 
18551        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18552        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18553 
18554        --
18555        -- Update the line information that should be overwritten
18556        --
18557        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18558                                          p_header_num   => 1);
18559        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18560 
18561        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18562 
18563        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18564           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18565        END IF;
18566 
18567       --
18568       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18569       --
18570       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18571           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18572       ELSE
18573           ---------------------------------------------------------------------------------------------------
18574           -- 4262811a Switch Sign
18575           ---------------------------------------------------------------------------------------------------
18576           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18577           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18578                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18579           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18580                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18581           -- 5132302
18582           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18583                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18584 
18585       END IF;
18586 
18587       -- 4955764
18588       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18589       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18590 
18591 
18592       XLA_AE_LINES_PKG.ValidateCurrentLine;
18593       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18594 
18595       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18596                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18597                ,p_balance_type_code => l_balance_type_code);
18598 
18599    END IF;
18600 
18601    -----------------------------------------------------------------------------------------
18602    -- 4262811 Multiperiod Accounting
18603    -----------------------------------------------------------------------------------------
18604      -- No MPA option is assigned.
18605 
18606 
18607 END IF;
18608 END IF;
18609 --
18610 
18611 --
18612 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18613    trace
18614       (p_msg      => 'END of AcctLineType_39'
18615       ,p_level    => C_LEVEL_PROCEDURE
18616       ,p_module   => l_log_module);
18617 END IF;
18618 --
18619 EXCEPTION
18620   WHEN xla_exceptions_pkg.application_exception THEN
18621       RAISE;
18622   WHEN OTHERS THEN
18623        xla_exceptions_pkg.raise_message
18624            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_39');
18625 END AcctLineType_39;
18626 --
18627 
18628 ---------------------------------------
18629 --
18630 -- PRIVATE FUNCTION
18631 --         AcctLineType_40
18632 --
18633 ---------------------------------------
18634 PROCEDURE AcctLineType_40 (
18635   p_application_id        IN NUMBER
18636  ,p_event_id              IN NUMBER
18637  ,p_calculate_acctd_flag  IN VARCHAR2
18638  ,p_calculate_g_l_flag    IN VARCHAR2
18639  ,p_actual_flag           IN OUT VARCHAR2
18640  ,p_balance_type_code     OUT VARCHAR2
18641  ,p_gain_or_loss_ref      OUT VARCHAR2
18642  
18643 --Federal Fund Category
18644  , p_source_7            IN VARCHAR2
18645 --Federal Fund Expired Status
18646  , p_source_8            IN VARCHAR2
18647 --Budget Account
18648  , p_source_9            IN NUMBER
18649 --Federal Prior Year Flag
18650  , p_source_10            IN VARCHAR2
18651 --Main Or Backing Code
18652  , p_source_13            IN VARCHAR2
18653 --PO Distribution Type
18654  , p_source_14            IN VARCHAR2
18655 --Accounting Reversal Flag
18656  , p_source_15            IN VARCHAR2
18657 --Distribution Link Type
18658  , p_source_17            IN VARCHAR2
18659 --PO Distribution Identifier
18660  , p_source_19            IN NUMBER
18661 --PO Header Identifier
18662  , p_source_20            IN NUMBER
18663 --Applied To Application Identifier
18664  , p_source_21            IN NUMBER
18665 --Applied To Distribution Link Type
18666  , p_source_22            IN VARCHAR2
18667 --Applied To Entity Code
18668  , p_source_23            IN VARCHAR2
18669 --Applied To Distribution Identifier 1
18670  , p_source_24            IN NUMBER
18671 --Applied To Header Identifier 1
18672  , p_source_25            IN NUMBER
18673 --Entered Amount
18674  , p_source_26            IN NUMBER
18675 --Currency Code
18676  , p_source_27            IN VARCHAR2
18677 --Accounted Amount
18678  , p_source_28            IN NUMBER
18679 --PO Encumbrance Upgrade Option
18680  , p_source_29            IN VARCHAR2
18681 --JFMIP Reference
18682  , p_source_31            IN VARCHAR2
18683 --PO Upgrade Encumbrance Type Identifier
18684  , p_source_32            IN NUMBER
18685 )
18686 IS
18687 
18688 l_component_type              VARCHAR2(80);
18689 l_component_code              VARCHAR2(30);
18690 l_component_type_code         VARCHAR2(1);
18691 l_component_appl_id           INTEGER;
18692 l_amb_context_code            VARCHAR2(30);
18693 l_entity_code                 VARCHAR2(30);
18694 l_event_class_code            VARCHAR2(30);
18695 l_ae_header_id                NUMBER;
18696 l_event_type_code             VARCHAR2(30);
18697 l_line_definition_code        VARCHAR2(30);
18698 l_line_definition_owner_code  VARCHAR2(1);
18699 --
18700 -- adr variables
18701 l_segment                     VARCHAR2(30);
18702 l_ccid                        NUMBER;
18703 l_adr_transaction_coa_id      NUMBER;
18704 l_adr_accounting_coa_id       NUMBER;
18705 l_adr_flexfield_segment_code  VARCHAR2(30);
18706 l_adr_flex_value_set_id       NUMBER;
18707 l_adr_value_type_code         VARCHAR2(30);
18708 l_adr_value_combination_id    NUMBER;
18709 l_adr_value_segment_code      VARCHAR2(30);
18710 
18711 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18712 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18713 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18714 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18715 
18716 -- 4262811 Variables ------------------------------------------------------------------------------------------
18717 l_entered_amt_idx             NUMBER;
18718 l_accted_amt_idx              NUMBER;
18719 l_acc_rev_flag                VARCHAR2(1);
18720 l_accrual_line_num            NUMBER;
18721 l_tmp_amt                     NUMBER;
18722 l_acc_rev_natural_side_code   VARCHAR2(1);
18723 
18724 l_num_entries                 NUMBER;
18725 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18726 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18727 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18728 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18729 l_recog_line_1                NUMBER;
18730 l_recog_line_2                NUMBER;
18731 
18732 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18733 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18734 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18735 
18736 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18737 
18738 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18739 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18740 
18741 ---------------------------------------------------------------------------------------------------------------
18742 
18743 
18744 --
18745 -- bulk performance
18746 --
18747 l_balance_type_code           VARCHAR2(1);
18748 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18749 l_log_module                  VARCHAR2(240);
18750 
18751 --
18752 -- Upgrade strategy
18753 --
18754 l_actual_upg_option           VARCHAR2(1);
18755 l_enc_upg_option           VARCHAR2(1);
18756 
18757 --
18758 BEGIN
18759 --
18760 IF g_log_enabled THEN
18761       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
18762 END IF;
18763 --
18764 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18765 
18766       trace
18767          (p_msg      => 'BEGIN of AcctLineType_40'
18768          ,p_level    => C_LEVEL_PROCEDURE
18769          ,p_module   => l_log_module);
18770 
18771 END IF;
18772 --
18773 l_component_type             := 'AMB_JLT';
18774 l_component_code             := 'FV_PO_UNRESERVE_CR';
18775 l_component_type_code        := 'S';
18776 l_component_appl_id          :=  201;
18777 l_amb_context_code           := 'DEFAULT';
18778 l_entity_code                := 'PURCHASE_ORDER';
18779 l_event_class_code           := 'PO_PA';
18780 l_event_type_code            := 'PO_PA_ALL';
18781 l_line_definition_owner_code := 'S';
18782 l_line_definition_code       := 'FV_PO_ALL';
18783 --
18784 l_balance_type_code          := 'A';
18785 l_segment                     := NULL;
18786 l_ccid                        := NULL;
18787 l_adr_transaction_coa_id      := NULL;
18788 l_adr_accounting_coa_id       := NULL;
18789 l_adr_flexfield_segment_code  := NULL;
18790 l_adr_flex_value_set_id       := NULL;
18791 l_adr_value_type_code         := NULL;
18792 l_adr_value_combination_id    := NULL;
18793 l_adr_value_segment_code      := NULL;
18794 
18795 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
18796 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
18797 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
18798 l_budgetary_control_flag     := 'Y';
18799 
18800 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18801 l_bflow_applied_to_amt       := NULL; -- 5132302
18802 l_entered_amt_idx            := NULL;          -- 4262811
18803 l_accted_amt_idx             := NULL;          -- 4262811
18804 l_acc_rev_flag               := NULL;          -- 4262811
18805 l_accrual_line_num           := NULL;          -- 4262811
18806 l_tmp_amt                    := NULL;          -- 4262811
18807 --
18808  
18809 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18810     l_balance_type_code <> 'B' THEN
18811 IF (NVL(
18812 xla_ae_sources_pkg.GetSystemSourceChar(
18813    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18814  , p_source_type_code      => 'Y'
18815  , p_source_application_id =>  602
18816 ),'
18817 ') =  'PO_PA_UNRESERVED' OR 
18818 NVL(
18819 xla_ae_sources_pkg.GetSystemSourceChar(
18820    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18821  , p_source_type_code      => 'Y'
18822  , p_source_application_id =>  602
18823 ),'
18824 ') =  'PO_PA_REJECTED' OR 
18825 NVL(
18826 xla_ae_sources_pkg.GetSystemSourceChar(
18827    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18828  , p_source_type_code      => 'Y'
18829  , p_source_application_id =>  602
18830 ),'
18831 ') =  'PO_PA_INV_CANCELLED' OR 
18832 (NVL(
18833 xla_ae_sources_pkg.GetSystemSourceChar(
18834    p_source_code           => 'XLA_EVENT_TYPE_CODE'
18835  , p_source_type_code      => 'Y'
18836  , p_source_application_id =>  602
18837 ),'
18838 ') =  'PO_PA_FINAL_CLOSED' AND 
18839 NVL(p_source_10,'
18840 ') <>  'Y')
18841 ) AND NVL(p_source_13,'
18842 ') =  'M' AND 
18843 (NVL(p_source_14,'
18844 ') <>  'AGREEMENT' OR 
18845 p_source_14 IS NULL )
18846  THEN 
18847 
18848    --
18849    XLA_AE_LINES_PKG.SetNewLine;
18850 
18851    p_balance_type_code          := l_balance_type_code;
18852    -- set the flag so later we will know whether the gain loss line needs to be created
18853    
18854    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18855      p_actual_flag :='A';
18856    END IF;
18857 
18858    --
18859    -- bulk performance
18860    --
18861    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18862                                       p_header_num   => 0); -- 4262811
18863    --
18864    -- set accounting line options
18865    --
18866    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18867            p_natural_side_code          => 'C'
18868          , p_gain_or_loss_flag          => 'N'
18869          , p_gl_transfer_mode_code      => 'S'
18870          , p_acct_entry_type_code       => 'A'
18871          , p_switch_side_flag           => 'N'
18872          , p_merge_duplicate_code       => 'N'
18873          );
18874    --
18875    l_acc_rev_natural_side_code := 'D';  -- 4262811
18876    -- 
18877    --
18878    -- set accounting line type info
18879    --
18880    xla_ae_lines_pkg.SetAcctLineType
18881       (p_component_type             => l_component_type
18882       ,p_event_type_code            => l_event_type_code
18883       ,p_line_definition_owner_code => l_line_definition_owner_code
18884       ,p_line_definition_code       => l_line_definition_code
18885       ,p_accounting_line_code       => l_component_code
18886       ,p_accounting_line_type_code  => l_component_type_code
18887       ,p_accounting_line_appl_id    => l_component_appl_id
18888       ,p_amb_context_code           => l_amb_context_code
18889       ,p_entity_code                => l_entity_code
18890       ,p_event_class_code           => l_event_class_code);
18891    --
18892    -- set accounting class
18893    --
18894    xla_ae_lines_pkg.SetAcctClass(
18895            p_accounting_class_code  => 'PURCHASE_ORDER'
18896          , p_ae_header_id           => l_ae_header_id
18897          );
18898 
18899    --
18900    -- set rounding class
18901    --
18902    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18903                       'PURCHASE_ORDER';
18904 
18905    --
18906    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18907    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18908    --
18909    -- bulk performance
18910    --
18911    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18912 
18913    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18914       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18915 
18916    -- 4955764
18917    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18918       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18919 
18920    -- 4458381 Public Sector Enh
18921    
18922    --
18923    -- set accounting attributes for the line type
18924    --
18925    l_entered_amt_idx := 23;
18926    l_accted_amt_idx  := 25;
18927    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18928    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
18929    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
18930    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
18931    l_rec_acct_attrs.array_num_value(2)  := 
18932 xla_ae_sources_pkg.GetSystemSourceNum(
18933    p_source_code           => 'XLA_EVENT_APPL_ID'
18934  , p_source_type_code      => 'Y'
18935  , p_source_application_id =>  602
18936 );
18937    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
18938    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
18939    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
18940    l_rec_acct_attrs.array_char_value(4)  := 
18941 xla_ae_sources_pkg.GetSystemSourceChar(
18942    p_source_code           => 'XLA_ENTITY_CODE'
18943  , p_source_type_code      => 'Y'
18944  , p_source_application_id =>  602
18945 );
18946    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
18947    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
18948    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
18949    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
18950    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
18951    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
18952    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18953    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
18954    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
18955    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
18956    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
18957    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
18958    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18959    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
18960    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
18961    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
18962    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
18963    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
18964    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
18965    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
18966    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
18967    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
18968    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
18969    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
18970    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
18971    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
18972    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
18973    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
18974    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
18975    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
18976    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
18977    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
18978    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
18979    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
18980    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
18981    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
18982    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
18983    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
18984    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
18985    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
18986    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
18987    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
18988    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
18989    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
18990    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
18991    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
18992    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
18993    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
18994    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
18995    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
18996    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
18997    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
18998    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
18999    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
19000 
19001    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19002    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19003 
19004    ---------------------------------------------------------------------------------------------------------------
19005    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19006    ---------------------------------------------------------------------------------------------------------------
19007    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19008 
19009    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19010    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19011 
19012    IF xla_accounting_cache_pkg.GetValueChar
19013          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19014          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19015    AND l_bflow_method_code = 'PRIOR_ENTRY'
19016 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19017    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19018          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19019        )
19020    THEN
19021          xla_ae_lines_pkg.BflowUpgEntry
19022            (p_business_method_code    => l_bflow_method_code
19023            ,p_business_class_code     => l_bflow_class_code
19024            ,p_balance_type            => l_balance_type_code);
19025    ELSE
19026       NULL;
19027 XLA_AE_LINES_PKG.business_flow_validation(
19028                                 p_business_method_code     => l_bflow_method_code
19029                                ,p_business_class_code      => l_bflow_class_code
19030                                ,p_inherit_description_flag => l_inherit_desc_flag);
19031    END IF;
19032 
19033    --
19034    -- call analytical criteria
19035    --
19036    -- Inherited Analytical Criteria for business flow method of Prior Entry.
19037    --
19038    -- call description
19039    --
19040    -- No description or it is inherited.
19041    --
19042    -- call ADRs
19043    -- Bug 4922099
19044    --
19045    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19046         (NVL(l_actual_upg_option, 'N') = 'O') OR
19047         (NVL(l_enc_upg_option, 'N') = 'O')
19048       )
19049    THEN
19050    NULL;
19051    --
19052    --
19053    
19054   l_ccid := AcctDerRule_9(
19055            p_application_id           => p_application_id
19056          , p_ae_header_id             => l_ae_header_id 
19057 , p_source_9 => p_source_9
19058          , x_transaction_coa_id       => l_adr_transaction_coa_id
19059          , x_accounting_coa_id        => l_adr_accounting_coa_id
19060          , x_value_type_code          => l_adr_value_type_code
19061          , p_side                     => 'NA'
19062    );
19063 
19064    xla_ae_lines_pkg.set_ccid(
19065     p_code_combination_id          => l_ccid
19066   , p_value_type_code              => l_adr_value_type_code
19067   , p_transaction_coa_id           => l_adr_transaction_coa_id
19068   , p_accounting_coa_id            => l_adr_accounting_coa_id
19069   , p_adr_code                     => 'FV_ACCOUNT_RULE'
19070   , p_adr_type_code                => 'S'
19071   , p_component_type               => l_component_type
19072   , p_component_code               => l_component_code
19073   , p_component_type_code          => l_component_type_code
19074   , p_component_appl_id            => l_component_appl_id
19075   , p_amb_context_code             => l_amb_context_code
19076   , p_side                         => 'NA'
19077   );
19078 
19079 
19080    l_segment := AcctDerRule_5(
19081            p_application_id           => p_application_id
19082          , p_ae_header_id             => l_ae_header_id 
19083 , p_source_7 => p_source_7
19084 , p_source_8 => p_source_8
19085          , x_transaction_coa_id       => l_adr_transaction_coa_id
19086          , x_accounting_coa_id        => l_adr_accounting_coa_id
19087          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
19088          , x_flex_value_set_id        => l_adr_flex_value_set_id
19089          , x_value_type_code          => l_adr_value_type_code
19090          , x_value_combination_id     => l_adr_value_combination_id
19091          , x_value_segment_code       => l_adr_value_segment_code
19092          , p_side                     => 'NA'
19093          , p_override_seg_flag        => 'Y'
19094    );
19095 
19096    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
19097 
19098       xla_ae_lines_pkg.set_segment(
19099           p_to_segment_code         => 'GL_ACCOUNT'
19100         , p_segment_value           => l_segment
19101         , p_from_segment_code       => l_adr_value_segment_code
19102         , p_from_combination_id     => l_adr_value_combination_id
19103         , p_value_type_code         => l_adr_value_type_code
19104         , p_transaction_coa_id      => l_adr_transaction_coa_id
19105         , p_accounting_coa_id       => l_adr_accounting_coa_id
19106         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
19107         , p_flex_value_set_id       => l_adr_flex_value_set_id
19108         , p_adr_code                => 'FV_46X002'
19109         , p_adr_type_code           => 'S'
19110         , p_component_type          => l_component_type
19111         , p_component_code          => l_component_code
19112         , p_component_type_code     => l_component_type_code
19113         , p_component_appl_id       => l_component_appl_id
19114         , p_amb_context_code        => l_amb_context_code
19115         , p_entity_code             => 'PURCHASE_ORDER'
19116         , p_event_class_code        => 'PO_PA'
19117         , p_side                    => 'NA'
19118         );
19119 
19120   END IF;
19121 
19122    --
19123    --
19124    END IF;
19125    --
19126    -- Bug 4922099
19127    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19128           (NVL(l_enc_upg_option, 'N') = 'O')
19129         ) AND
19130         (l_bflow_method_code = 'PRIOR_ENTRY')
19131       )
19132    THEN
19133       IF
19134       --
19135       1 = 2
19136       --
19137       THEN
19138       xla_accounting_err_pkg.build_message
19139                                     (p_appli_s_name            => 'XLA'
19140                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19141                                     ,p_token_1                 => 'LINE_NUMBER'
19142                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19143                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19144                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19145                                                                              l_component_type
19146                                                                             ,l_component_code
19147                                                                             ,l_component_type_code
19148                                                                             ,l_component_appl_id
19149                                                                             ,l_amb_context_code
19150                                                                             ,l_entity_code
19151                                                                             ,l_event_class_code
19152                                                                            )
19153                                     ,p_token_3                 => 'OWNER'
19154                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19155                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19156                                                                           ,p_lookup_code    => l_component_type_code
19157                                                                          )
19158                                     ,p_token_4                 => 'PRODUCT_NAME'
19159                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19160                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19161                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19162                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19163                                     ,p_ae_header_id            =>  NULL
19164                                        );
19165 
19166         IF (C_LEVEL_ERROR>= g_log_level) THEN
19167                  trace
19168                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19169                       ,p_level    => C_LEVEL_ERROR
19170                       ,p_module   => l_log_module);
19171         END IF;
19172       END IF;
19173    END IF;
19174    --
19175    --
19176    ------------------------------------------------------------------------------------------------
19177    -- 4219869 Business Flow
19178    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19179    -- Prior Entry.  Currently, the following code is always generated.
19180    ------------------------------------------------------------------------------------------------
19181    -- No ValidateCurrentLine for business flow method of Prior Entry
19182 
19183    ------------------------------------------------------------------------------------
19184    -- 4219869 Business Flow
19185    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19186    ------------------------------------------------------------------------------------
19187    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19188 
19189    ----------------------------------------------------------------------------------
19190    -- 4219869 Business Flow
19191    -- Update journal entry status -- Need to generate this within IF <condition>
19192    ----------------------------------------------------------------------------------
19193    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19194          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19195          ,p_balance_type_code => l_balance_type_code
19196          );
19197 
19198    -------------------------------------------------------------------------------------------
19199    -- 4262811 - Generate the Accrual Reversal lines
19200    -------------------------------------------------------------------------------------------
19201    BEGIN
19202       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19203                               (g_array_event(p_event_id).array_value_num('header_index'));
19204       IF l_acc_rev_flag IS NULL THEN
19205          l_acc_rev_flag := 'N';
19206       END IF;
19207    EXCEPTION
19208       WHEN OTHERS THEN
19209          l_acc_rev_flag := 'N';
19210    END;
19211    --
19212    IF (l_acc_rev_flag = 'Y') THEN
19213 
19214        -- 4645092  ------------------------------------------------------------------------------
19215        -- To allow MPA report to determine if it should generate report process
19216        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19217        ------------------------------------------------------------------------------------------
19218 
19219        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19220        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19221 
19222        --
19223        -- Update the line information that should be overwritten
19224        --
19225        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19226                                          p_header_num   => 1);
19227        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19228 
19229        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19230 
19231        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19232           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19233        END IF;
19234 
19235       --
19236       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19237       --
19238       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19239           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19240       ELSE
19241           ---------------------------------------------------------------------------------------------------
19242           -- 4262811a Switch Sign
19243           ---------------------------------------------------------------------------------------------------
19244           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19245           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19246                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19247           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19248                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19249           -- 5132302
19250           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19251                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19252 
19253       END IF;
19254 
19255       -- 4955764
19256       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19257       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19258 
19259 
19260       XLA_AE_LINES_PKG.ValidateCurrentLine;
19261       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19262 
19263       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19264                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19265                ,p_balance_type_code => l_balance_type_code);
19266 
19267    END IF;
19268 
19269    -----------------------------------------------------------------------------------------
19270    -- 4262811 Multiperiod Accounting
19271    -----------------------------------------------------------------------------------------
19272      -- No MPA option is assigned.
19273 
19274 
19275 END IF;
19276 END IF;
19277 --
19278 
19279 --
19280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19281    trace
19282       (p_msg      => 'END of AcctLineType_40'
19283       ,p_level    => C_LEVEL_PROCEDURE
19284       ,p_module   => l_log_module);
19285 END IF;
19286 --
19287 EXCEPTION
19288   WHEN xla_exceptions_pkg.application_exception THEN
19289       RAISE;
19290   WHEN OTHERS THEN
19291        xla_exceptions_pkg.raise_message
19292            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_40');
19293 END AcctLineType_40;
19294 --
19295 
19296 ---------------------------------------
19297 --
19298 -- PRIVATE FUNCTION
19299 --         AcctLineType_41
19300 --
19301 ---------------------------------------
19302 PROCEDURE AcctLineType_41 (
19303   p_application_id        IN NUMBER
19304  ,p_event_id              IN NUMBER
19305  ,p_calculate_acctd_flag  IN VARCHAR2
19306  ,p_calculate_g_l_flag    IN VARCHAR2
19307  ,p_actual_flag           IN OUT VARCHAR2
19308  ,p_balance_type_code     OUT VARCHAR2
19309  ,p_gain_or_loss_ref      OUT VARCHAR2
19310  
19311 --Budget Account
19312  , p_source_9            IN NUMBER
19313 --Federal Prior Year Flag
19314  , p_source_10            IN VARCHAR2
19315 --Main Or Backing Code
19316  , p_source_13            IN VARCHAR2
19317 --Accounting Reversal Flag
19318  , p_source_15            IN VARCHAR2
19319 --Distribution Link Type
19320  , p_source_17            IN VARCHAR2
19321 --PO Distribution Identifier
19322  , p_source_19            IN NUMBER
19323 --PO Header Identifier
19324  , p_source_20            IN NUMBER
19325 --Applied To Application Identifier
19326  , p_source_21            IN NUMBER
19327 --Applied To Distribution Link Type
19328  , p_source_22            IN VARCHAR2
19329 --Applied To Entity Code
19330  , p_source_23            IN VARCHAR2
19331 --Applied To Distribution Identifier 1
19332  , p_source_24            IN NUMBER
19333 --Applied To Header Identifier 1
19334  , p_source_25            IN NUMBER
19335 --Entered Amount
19336  , p_source_26            IN NUMBER
19337 --Currency Code
19338  , p_source_27            IN VARCHAR2
19339 --Accounted Amount
19340  , p_source_28            IN NUMBER
19341 --PO Encumbrance Upgrade Option
19342  , p_source_29            IN VARCHAR2
19343 --JFMIP Reference
19344  , p_source_31            IN VARCHAR2
19345 --PO Upgrade Encumbrance Type Identifier
19346  , p_source_32            IN NUMBER
19347 )
19348 IS
19349 
19350 l_component_type              VARCHAR2(80);
19351 l_component_code              VARCHAR2(30);
19352 l_component_type_code         VARCHAR2(1);
19353 l_component_appl_id           INTEGER;
19354 l_amb_context_code            VARCHAR2(30);
19355 l_entity_code                 VARCHAR2(30);
19356 l_event_class_code            VARCHAR2(30);
19357 l_ae_header_id                NUMBER;
19358 l_event_type_code             VARCHAR2(30);
19359 l_line_definition_code        VARCHAR2(30);
19360 l_line_definition_owner_code  VARCHAR2(1);
19361 --
19362 -- adr variables
19363 l_segment                     VARCHAR2(30);
19364 l_ccid                        NUMBER;
19365 l_adr_transaction_coa_id      NUMBER;
19366 l_adr_accounting_coa_id       NUMBER;
19367 l_adr_flexfield_segment_code  VARCHAR2(30);
19368 l_adr_flex_value_set_id       NUMBER;
19369 l_adr_value_type_code         VARCHAR2(30);
19370 l_adr_value_combination_id    NUMBER;
19371 l_adr_value_segment_code      VARCHAR2(30);
19372 
19373 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19374 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19375 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19376 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19377 
19378 -- 4262811 Variables ------------------------------------------------------------------------------------------
19379 l_entered_amt_idx             NUMBER;
19380 l_accted_amt_idx              NUMBER;
19381 l_acc_rev_flag                VARCHAR2(1);
19382 l_accrual_line_num            NUMBER;
19383 l_tmp_amt                     NUMBER;
19384 l_acc_rev_natural_side_code   VARCHAR2(1);
19385 
19386 l_num_entries                 NUMBER;
19387 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19388 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19389 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19390 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19391 l_recog_line_1                NUMBER;
19392 l_recog_line_2                NUMBER;
19393 
19394 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19395 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19396 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19397 
19398 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19399 
19400 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19401 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19402 
19403 ---------------------------------------------------------------------------------------------------------------
19404 
19405 
19406 --
19407 -- bulk performance
19408 --
19409 l_balance_type_code           VARCHAR2(1);
19410 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19411 l_log_module                  VARCHAR2(240);
19412 
19413 --
19414 -- Upgrade strategy
19415 --
19416 l_actual_upg_option           VARCHAR2(1);
19417 l_enc_upg_option           VARCHAR2(1);
19418 
19419 --
19420 BEGIN
19421 --
19422 IF g_log_enabled THEN
19423       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
19424 END IF;
19425 --
19426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19427 
19428       trace
19429          (p_msg      => 'BEGIN of AcctLineType_41'
19430          ,p_level    => C_LEVEL_PROCEDURE
19431          ,p_module   => l_log_module);
19432 
19433 END IF;
19434 --
19435 l_component_type             := 'AMB_JLT';
19436 l_component_code             := 'FV_PO_UNRESERVE_DR';
19437 l_component_type_code        := 'S';
19438 l_component_appl_id          :=  201;
19439 l_amb_context_code           := 'DEFAULT';
19440 l_entity_code                := 'PURCHASE_ORDER';
19441 l_event_class_code           := 'PO_PA';
19442 l_event_type_code            := 'PO_PA_ALL';
19443 l_line_definition_owner_code := 'S';
19444 l_line_definition_code       := 'FV_PO_ALL';
19445 --
19446 l_balance_type_code          := 'A';
19447 l_segment                     := NULL;
19448 l_ccid                        := NULL;
19449 l_adr_transaction_coa_id      := NULL;
19450 l_adr_accounting_coa_id       := NULL;
19451 l_adr_flexfield_segment_code  := NULL;
19452 l_adr_flex_value_set_id       := NULL;
19453 l_adr_value_type_code         := NULL;
19454 l_adr_value_combination_id    := NULL;
19455 l_adr_value_segment_code      := NULL;
19456 
19457 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
19458 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
19459 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
19460 l_budgetary_control_flag     := 'Y';
19461 
19462 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19463 l_bflow_applied_to_amt       := NULL; -- 5132302
19464 l_entered_amt_idx            := NULL;          -- 4262811
19465 l_accted_amt_idx             := NULL;          -- 4262811
19466 l_acc_rev_flag               := NULL;          -- 4262811
19467 l_accrual_line_num           := NULL;          -- 4262811
19468 l_tmp_amt                    := NULL;          -- 4262811
19469 --
19470  
19471 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19472     l_balance_type_code <> 'B' THEN
19473 IF (NVL(
19474 xla_ae_sources_pkg.GetSystemSourceChar(
19475    p_source_code           => 'XLA_EVENT_TYPE_CODE'
19476  , p_source_type_code      => 'Y'
19477  , p_source_application_id =>  602
19478 ),'
19479 ') =  'PO_PA_UNRESERVED' OR 
19480 NVL(
19481 xla_ae_sources_pkg.GetSystemSourceChar(
19482    p_source_code           => 'XLA_EVENT_TYPE_CODE'
19483  , p_source_type_code      => 'Y'
19484  , p_source_application_id =>  602
19485 ),'
19486 ') =  'PO_PA_REJECTED' OR 
19487 NVL(
19488 xla_ae_sources_pkg.GetSystemSourceChar(
19489    p_source_code           => 'XLA_EVENT_TYPE_CODE'
19490  , p_source_type_code      => 'Y'
19491  , p_source_application_id =>  602
19492 ),'
19493 ') =  'PO_PA_INV_CANCELLED' OR 
19494 (NVL(
19495 xla_ae_sources_pkg.GetSystemSourceChar(
19496    p_source_code           => 'XLA_EVENT_TYPE_CODE'
19497  , p_source_type_code      => 'Y'
19498  , p_source_application_id =>  602
19499 ),'
19500 ') =  'PO_PA_FINAL_CLOSED' AND 
19501 NVL(p_source_10,'
19502 ') <>  'Y')
19503 ) AND NVL(p_source_13,'
19504 ') =  'M' AND 
19505 (NVL(p_source_17,'
19506 ') <>  'AGREEMENT' OR 
19507 p_source_17 IS NULL )
19508  THEN 
19509 
19510    --
19511    XLA_AE_LINES_PKG.SetNewLine;
19512 
19513    p_balance_type_code          := l_balance_type_code;
19514    -- set the flag so later we will know whether the gain loss line needs to be created
19515    
19516    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19517      p_actual_flag :='A';
19518    END IF;
19519 
19520    --
19521    -- bulk performance
19522    --
19523    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19524                                       p_header_num   => 0); -- 4262811
19525    --
19526    -- set accounting line options
19527    --
19528    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19529            p_natural_side_code          => 'D'
19530          , p_gain_or_loss_flag          => 'N'
19531          , p_gl_transfer_mode_code      => 'S'
19532          , p_acct_entry_type_code       => 'A'
19533          , p_switch_side_flag           => 'N'
19534          , p_merge_duplicate_code       => 'N'
19535          );
19536    --
19537    l_acc_rev_natural_side_code := 'C';  -- 4262811
19538    -- 
19539    --
19540    -- set accounting line type info
19541    --
19542    xla_ae_lines_pkg.SetAcctLineType
19543       (p_component_type             => l_component_type
19544       ,p_event_type_code            => l_event_type_code
19545       ,p_line_definition_owner_code => l_line_definition_owner_code
19546       ,p_line_definition_code       => l_line_definition_code
19547       ,p_accounting_line_code       => l_component_code
19548       ,p_accounting_line_type_code  => l_component_type_code
19549       ,p_accounting_line_appl_id    => l_component_appl_id
19550       ,p_amb_context_code           => l_amb_context_code
19551       ,p_entity_code                => l_entity_code
19552       ,p_event_class_code           => l_event_class_code);
19553    --
19554    -- set accounting class
19555    --
19556    xla_ae_lines_pkg.SetAcctClass(
19557            p_accounting_class_code  => 'PURCHASE_ORDER'
19558          , p_ae_header_id           => l_ae_header_id
19559          );
19560 
19561    --
19562    -- set rounding class
19563    --
19564    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19565                       'PURCHASE_ORDER';
19566 
19567    --
19568    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19569    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19570    --
19571    -- bulk performance
19572    --
19573    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19574 
19575    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19576       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19577 
19578    -- 4955764
19579    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19580       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19581 
19582    -- 4458381 Public Sector Enh
19583    
19584    --
19585    -- set accounting attributes for the line type
19586    --
19587    l_entered_amt_idx := 23;
19588    l_accted_amt_idx  := 25;
19589    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19590    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
19591    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
19592    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
19593    l_rec_acct_attrs.array_num_value(2)  := 
19594 xla_ae_sources_pkg.GetSystemSourceNum(
19595    p_source_code           => 'XLA_EVENT_APPL_ID'
19596  , p_source_type_code      => 'Y'
19597  , p_source_application_id =>  602
19598 );
19599    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
19600    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
19601    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
19602    l_rec_acct_attrs.array_char_value(4)  := 
19603 xla_ae_sources_pkg.GetSystemSourceChar(
19604    p_source_code           => 'XLA_ENTITY_CODE'
19605  , p_source_type_code      => 'Y'
19606  , p_source_application_id =>  602
19607 );
19608    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
19609    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
19610    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
19611    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
19612    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
19613    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
19614    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
19615    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
19616    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
19617    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
19618    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
19619    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
19620    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
19621    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
19622    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
19623    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
19624    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
19625    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
19626    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
19627    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
19628    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
19629    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
19630    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
19631    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
19632    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
19633    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
19634    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
19635    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
19636    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
19637    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
19638    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
19639    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
19640    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
19641    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
19642    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
19643    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
19644    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
19645    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
19646    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
19647    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
19648    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
19649    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
19650    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
19651    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
19652    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
19653    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
19654    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
19655    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
19656    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
19657    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
19658    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
19659    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
19660    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
19661    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
19662 
19663    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19664    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19665 
19666    ---------------------------------------------------------------------------------------------------------------
19667    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19668    ---------------------------------------------------------------------------------------------------------------
19669    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19670 
19671    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19672    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19673 
19674    IF xla_accounting_cache_pkg.GetValueChar
19675          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19676          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19677    AND l_bflow_method_code = 'PRIOR_ENTRY'
19678 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19679    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19680          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19681        )
19682    THEN
19683          xla_ae_lines_pkg.BflowUpgEntry
19684            (p_business_method_code    => l_bflow_method_code
19685            ,p_business_class_code     => l_bflow_class_code
19686            ,p_balance_type            => l_balance_type_code);
19687    ELSE
19688       NULL;
19689 XLA_AE_LINES_PKG.business_flow_validation(
19690                                 p_business_method_code     => l_bflow_method_code
19691                                ,p_business_class_code      => l_bflow_class_code
19692                                ,p_inherit_description_flag => l_inherit_desc_flag);
19693    END IF;
19694 
19695    --
19696    -- call analytical criteria
19697    --
19698    -- Inherited Analytical Criteria for business flow method of Prior Entry.
19699    --
19700    -- call description
19701    --
19702    -- No description or it is inherited.
19703    --
19704    -- call ADRs
19705    -- Bug 4922099
19706    --
19707    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19708         (NVL(l_actual_upg_option, 'N') = 'O') OR
19709         (NVL(l_enc_upg_option, 'N') = 'O')
19710       )
19711    THEN
19712    NULL;
19713    --
19714    --
19715    
19716   l_ccid := AcctDerRule_9(
19717            p_application_id           => p_application_id
19718          , p_ae_header_id             => l_ae_header_id 
19719 , p_source_9 => p_source_9
19720          , x_transaction_coa_id       => l_adr_transaction_coa_id
19721          , x_accounting_coa_id        => l_adr_accounting_coa_id
19722          , x_value_type_code          => l_adr_value_type_code
19723          , p_side                     => 'NA'
19724    );
19725 
19726    xla_ae_lines_pkg.set_ccid(
19727     p_code_combination_id          => l_ccid
19728   , p_value_type_code              => l_adr_value_type_code
19729   , p_transaction_coa_id           => l_adr_transaction_coa_id
19730   , p_accounting_coa_id            => l_adr_accounting_coa_id
19731   , p_adr_code                     => 'FV_ACCOUNT_RULE'
19732   , p_adr_type_code                => 'S'
19733   , p_component_type               => l_component_type
19734   , p_component_code               => l_component_code
19735   , p_component_type_code          => l_component_type_code
19736   , p_component_appl_id            => l_component_appl_id
19737   , p_amb_context_code             => l_amb_context_code
19738   , p_side                         => 'NA'
19739   );
19740 
19741 
19742    l_segment := AcctDerRule_8(
19743            p_application_id           => p_application_id
19744          , p_ae_header_id             => l_ae_header_id 
19745          , x_transaction_coa_id       => l_adr_transaction_coa_id
19746          , x_accounting_coa_id        => l_adr_accounting_coa_id
19747          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
19748          , x_flex_value_set_id        => l_adr_flex_value_set_id
19749          , x_value_type_code          => l_adr_value_type_code
19750          , x_value_combination_id     => l_adr_value_combination_id
19751          , x_value_segment_code       => l_adr_value_segment_code
19752          , p_side                     => 'NA'
19753          , p_override_seg_flag        => 'Y'
19754    );
19755 
19756    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
19757 
19758       xla_ae_lines_pkg.set_segment(
19759           p_to_segment_code         => 'GL_ACCOUNT'
19760         , p_segment_value           => l_segment
19761         , p_from_segment_code       => l_adr_value_segment_code
19762         , p_from_combination_id     => l_adr_value_combination_id
19763         , p_value_type_code         => l_adr_value_type_code
19764         , p_transaction_coa_id      => l_adr_transaction_coa_id
19765         , p_accounting_coa_id       => l_adr_accounting_coa_id
19766         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
19767         , p_flex_value_set_id       => l_adr_flex_value_set_id
19768         , p_adr_code                => 'FV_48X101_PURCHASING'
19769         , p_adr_type_code           => 'S'
19770         , p_component_type          => l_component_type
19771         , p_component_code          => l_component_code
19772         , p_component_type_code     => l_component_type_code
19773         , p_component_appl_id       => l_component_appl_id
19774         , p_amb_context_code        => l_amb_context_code
19775         , p_entity_code             => 'PURCHASE_ORDER'
19776         , p_event_class_code        => 'PO_PA'
19777         , p_side                    => 'NA'
19778         );
19779 
19780   END IF;
19781 
19782    --
19783    --
19784    END IF;
19785    --
19786    -- Bug 4922099
19787    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19788           (NVL(l_enc_upg_option, 'N') = 'O')
19789         ) AND
19790         (l_bflow_method_code = 'PRIOR_ENTRY')
19791       )
19792    THEN
19793       IF
19794       --
19795       1 = 2
19796       --
19797       THEN
19798       xla_accounting_err_pkg.build_message
19799                                     (p_appli_s_name            => 'XLA'
19800                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19801                                     ,p_token_1                 => 'LINE_NUMBER'
19802                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19803                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19804                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19805                                                                              l_component_type
19806                                                                             ,l_component_code
19807                                                                             ,l_component_type_code
19808                                                                             ,l_component_appl_id
19809                                                                             ,l_amb_context_code
19810                                                                             ,l_entity_code
19811                                                                             ,l_event_class_code
19812                                                                            )
19813                                     ,p_token_3                 => 'OWNER'
19814                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19815                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19816                                                                           ,p_lookup_code    => l_component_type_code
19817                                                                          )
19818                                     ,p_token_4                 => 'PRODUCT_NAME'
19819                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19820                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19821                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19822                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19823                                     ,p_ae_header_id            =>  NULL
19824                                        );
19825 
19826         IF (C_LEVEL_ERROR>= g_log_level) THEN
19827                  trace
19828                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19829                       ,p_level    => C_LEVEL_ERROR
19830                       ,p_module   => l_log_module);
19831         END IF;
19832       END IF;
19833    END IF;
19834    --
19835    --
19836    ------------------------------------------------------------------------------------------------
19837    -- 4219869 Business Flow
19838    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19839    -- Prior Entry.  Currently, the following code is always generated.
19840    ------------------------------------------------------------------------------------------------
19841    -- No ValidateCurrentLine for business flow method of Prior Entry
19842 
19843    ------------------------------------------------------------------------------------
19844    -- 4219869 Business Flow
19845    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19846    ------------------------------------------------------------------------------------
19847    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19848 
19849    ----------------------------------------------------------------------------------
19850    -- 4219869 Business Flow
19851    -- Update journal entry status -- Need to generate this within IF <condition>
19852    ----------------------------------------------------------------------------------
19853    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19854          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19855          ,p_balance_type_code => l_balance_type_code
19856          );
19857 
19858    -------------------------------------------------------------------------------------------
19859    -- 4262811 - Generate the Accrual Reversal lines
19860    -------------------------------------------------------------------------------------------
19861    BEGIN
19862       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19863                               (g_array_event(p_event_id).array_value_num('header_index'));
19864       IF l_acc_rev_flag IS NULL THEN
19865          l_acc_rev_flag := 'N';
19866       END IF;
19867    EXCEPTION
19868       WHEN OTHERS THEN
19869          l_acc_rev_flag := 'N';
19870    END;
19871    --
19872    IF (l_acc_rev_flag = 'Y') THEN
19873 
19874        -- 4645092  ------------------------------------------------------------------------------
19875        -- To allow MPA report to determine if it should generate report process
19876        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19877        ------------------------------------------------------------------------------------------
19878 
19879        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19880        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19881 
19882        --
19883        -- Update the line information that should be overwritten
19884        --
19885        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19886                                          p_header_num   => 1);
19887        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19888 
19889        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19890 
19891        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19892           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19893        END IF;
19894 
19895       --
19896       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19897       --
19898       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19899           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19900       ELSE
19901           ---------------------------------------------------------------------------------------------------
19902           -- 4262811a Switch Sign
19903           ---------------------------------------------------------------------------------------------------
19904           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19905           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19906                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19907           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19908                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19909           -- 5132302
19910           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19911                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19912 
19913       END IF;
19914 
19915       -- 4955764
19916       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19917       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19918 
19919 
19920       XLA_AE_LINES_PKG.ValidateCurrentLine;
19921       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19922 
19923       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19924                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19925                ,p_balance_type_code => l_balance_type_code);
19926 
19927    END IF;
19928 
19929    -----------------------------------------------------------------------------------------
19930    -- 4262811 Multiperiod Accounting
19931    -----------------------------------------------------------------------------------------
19932      -- No MPA option is assigned.
19933 
19934 
19935 END IF;
19936 END IF;
19937 --
19938 
19939 --
19940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19941    trace
19942       (p_msg      => 'END of AcctLineType_41'
19943       ,p_level    => C_LEVEL_PROCEDURE
19944       ,p_module   => l_log_module);
19945 END IF;
19946 --
19947 EXCEPTION
19948   WHEN xla_exceptions_pkg.application_exception THEN
19949       RAISE;
19950   WHEN OTHERS THEN
19951        xla_exceptions_pkg.raise_message
19952            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_41');
19953 END AcctLineType_41;
19954 --
19955 
19956 ---------------------------------------
19957 --
19958 -- PRIVATE FUNCTION
19959 --         AcctLineType_42
19960 --
19961 ---------------------------------------
19962 PROCEDURE AcctLineType_42 (
19963   p_application_id        IN NUMBER
19964  ,p_event_id              IN NUMBER
19965  ,p_calculate_acctd_flag  IN VARCHAR2
19966  ,p_calculate_g_l_flag    IN VARCHAR2
19967  ,p_actual_flag           IN OUT VARCHAR2
19968  ,p_balance_type_code     OUT VARCHAR2
19969  ,p_gain_or_loss_ref      OUT VARCHAR2
19970  
19971 --Budget Account
19972  , p_source_9            IN NUMBER
19973 --Main Or Backing Code
19974  , p_source_13            IN VARCHAR2
19975 --Accounting Reversal Flag
19976  , p_source_15            IN VARCHAR2
19977 --Distribution Link Type
19978  , p_source_17            IN VARCHAR2
19979 --PO Distribution Identifier
19980  , p_source_19            IN NUMBER
19981 --PO Header Identifier
19982  , p_source_20            IN NUMBER
19983 --Applied To Application Identifier
19984  , p_source_21            IN NUMBER
19985 --Applied To Distribution Link Type
19986  , p_source_22            IN VARCHAR2
19987 --Applied To Entity Code
19988  , p_source_23            IN VARCHAR2
19989 --Applied To Distribution Identifier 1
19990  , p_source_24            IN NUMBER
19991 --Applied To Header Identifier 1
19992  , p_source_25            IN NUMBER
19993 --Entered Amount
19994  , p_source_26            IN NUMBER
19995 --Currency Code
19996  , p_source_27            IN VARCHAR2
19997 --Accounted Amount
19998  , p_source_28            IN NUMBER
19999 --PO Encumbrance Upgrade Option
20000  , p_source_29            IN VARCHAR2
20001 --JFMIP Reference
20002  , p_source_31            IN VARCHAR2
20003 --PO Upgrade Encumbrance Type Identifier
20004  , p_source_32            IN NUMBER
20005 --Allocated to Main Document Distribution Type
20006  , p_source_33            IN VARCHAR2
20007 --Allocated to Main Document Distribution Identifier
20008  , p_source_34            IN NUMBER
20009 )
20010 IS
20011 
20012 l_component_type              VARCHAR2(80);
20013 l_component_code              VARCHAR2(30);
20014 l_component_type_code         VARCHAR2(1);
20015 l_component_appl_id           INTEGER;
20016 l_amb_context_code            VARCHAR2(30);
20017 l_entity_code                 VARCHAR2(30);
20018 l_event_class_code            VARCHAR2(30);
20019 l_ae_header_id                NUMBER;
20020 l_event_type_code             VARCHAR2(30);
20021 l_line_definition_code        VARCHAR2(30);
20022 l_line_definition_owner_code  VARCHAR2(1);
20023 --
20024 -- adr variables
20025 l_segment                     VARCHAR2(30);
20026 l_ccid                        NUMBER;
20027 l_adr_transaction_coa_id      NUMBER;
20028 l_adr_accounting_coa_id       NUMBER;
20029 l_adr_flexfield_segment_code  VARCHAR2(30);
20030 l_adr_flex_value_set_id       NUMBER;
20031 l_adr_value_type_code         VARCHAR2(30);
20032 l_adr_value_combination_id    NUMBER;
20033 l_adr_value_segment_code      VARCHAR2(30);
20034 
20035 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20036 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20037 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20038 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20039 
20040 -- 4262811 Variables ------------------------------------------------------------------------------------------
20041 l_entered_amt_idx             NUMBER;
20042 l_accted_amt_idx              NUMBER;
20043 l_acc_rev_flag                VARCHAR2(1);
20044 l_accrual_line_num            NUMBER;
20045 l_tmp_amt                     NUMBER;
20046 l_acc_rev_natural_side_code   VARCHAR2(1);
20047 
20048 l_num_entries                 NUMBER;
20049 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20050 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20051 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20052 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20053 l_recog_line_1                NUMBER;
20054 l_recog_line_2                NUMBER;
20055 
20056 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20057 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20058 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20059 
20060 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20061 
20062 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20063 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20064 
20065 ---------------------------------------------------------------------------------------------------------------
20066 
20067 
20068 --
20069 -- bulk performance
20070 --
20071 l_balance_type_code           VARCHAR2(1);
20072 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20073 l_log_module                  VARCHAR2(240);
20074 
20075 --
20076 -- Upgrade strategy
20077 --
20078 l_actual_upg_option           VARCHAR2(1);
20079 l_enc_upg_option           VARCHAR2(1);
20080 
20081 --
20082 BEGIN
20083 --
20084 IF g_log_enabled THEN
20085       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
20086 END IF;
20087 --
20088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20089 
20090       trace
20091          (p_msg      => 'BEGIN of AcctLineType_42'
20092          ,p_level    => C_LEVEL_PROCEDURE
20093          ,p_module   => l_log_module);
20094 
20095 END IF;
20096 --
20097 l_component_type             := 'AMB_JLT';
20098 l_component_code             := 'FV_REINSTATE_BPA_PO_REVERSE_CR';
20099 l_component_type_code        := 'S';
20100 l_component_appl_id          :=  201;
20101 l_amb_context_code           := 'DEFAULT';
20102 l_entity_code                := 'PURCHASE_ORDER';
20103 l_event_class_code           := 'PO_PA';
20104 l_event_type_code            := 'PO_PA_ALL';
20105 l_line_definition_owner_code := 'S';
20106 l_line_definition_code       := 'FV_PO_ALL';
20107 --
20108 l_balance_type_code          := 'A';
20109 l_segment                     := NULL;
20110 l_ccid                        := NULL;
20111 l_adr_transaction_coa_id      := NULL;
20112 l_adr_accounting_coa_id       := NULL;
20113 l_adr_flexfield_segment_code  := NULL;
20114 l_adr_flex_value_set_id       := NULL;
20115 l_adr_value_type_code         := NULL;
20116 l_adr_value_combination_id    := NULL;
20117 l_adr_value_segment_code      := NULL;
20118 
20119 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
20120 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
20121 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
20122 l_budgetary_control_flag     := 'Y';
20123 
20124 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20125 l_bflow_applied_to_amt       := NULL; -- 5132302
20126 l_entered_amt_idx            := NULL;          -- 4262811
20127 l_accted_amt_idx             := NULL;          -- 4262811
20128 l_acc_rev_flag               := NULL;          -- 4262811
20129 l_accrual_line_num           := NULL;          -- 4262811
20130 l_tmp_amt                    := NULL;          -- 4262811
20131 --
20132  
20133 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20134     l_balance_type_code <> 'B' THEN
20135 IF (NVL(
20136 xla_ae_sources_pkg.GetSystemSourceChar(
20137    p_source_code           => 'XLA_EVENT_TYPE_CODE'
20138  , p_source_type_code      => 'Y'
20139  , p_source_application_id =>  602
20140 ),'
20141 ') =  'PO_PA_CANCELLED' OR 
20142 NVL(
20143 xla_ae_sources_pkg.GetSystemSourceChar(
20144    p_source_code           => 'XLA_EVENT_TYPE_CODE'
20145  , p_source_type_code      => 'Y'
20146  , p_source_application_id =>  602
20147 ),'
20148 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
20149 NVL(p_source_13,'
20150 ') =  'B_PA'
20151  THEN 
20152 
20153    --
20154    XLA_AE_LINES_PKG.SetNewLine;
20155 
20156    p_balance_type_code          := l_balance_type_code;
20157    -- set the flag so later we will know whether the gain loss line needs to be created
20158    
20159    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20160      p_actual_flag :='A';
20161    END IF;
20162 
20163    --
20164    -- bulk performance
20165    --
20166    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20167                                       p_header_num   => 0); -- 4262811
20168    --
20169    -- set accounting line options
20170    --
20171    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20172            p_natural_side_code          => 'C'
20173          , p_gain_or_loss_flag          => 'N'
20174          , p_gl_transfer_mode_code      => 'S'
20175          , p_acct_entry_type_code       => 'A'
20176          , p_switch_side_flag           => 'N'
20177          , p_merge_duplicate_code       => 'N'
20178          );
20179    --
20180    l_acc_rev_natural_side_code := 'D';  -- 4262811
20181    -- 
20182    --
20183    -- set accounting line type info
20184    --
20185    xla_ae_lines_pkg.SetAcctLineType
20186       (p_component_type             => l_component_type
20187       ,p_event_type_code            => l_event_type_code
20188       ,p_line_definition_owner_code => l_line_definition_owner_code
20189       ,p_line_definition_code       => l_line_definition_code
20190       ,p_accounting_line_code       => l_component_code
20191       ,p_accounting_line_type_code  => l_component_type_code
20192       ,p_accounting_line_appl_id    => l_component_appl_id
20193       ,p_amb_context_code           => l_amb_context_code
20194       ,p_entity_code                => l_entity_code
20195       ,p_event_class_code           => l_event_class_code);
20196    --
20197    -- set accounting class
20198    --
20199    xla_ae_lines_pkg.SetAcctClass(
20200            p_accounting_class_code  => 'REQUISITION'
20201          , p_ae_header_id           => l_ae_header_id
20202          );
20203 
20204    --
20205    -- set rounding class
20206    --
20207    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20208                       'REQUISITION';
20209 
20210    --
20211    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20212    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20213    --
20214    -- bulk performance
20215    --
20216    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20217 
20218    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20219       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20220 
20221    -- 4955764
20222    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20223       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20224 
20225    -- 4458381 Public Sector Enh
20226    
20227    --
20228    -- set accounting attributes for the line type
20229    --
20230    l_entered_amt_idx := 23;
20231    l_accted_amt_idx  := 25;
20232    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20233    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20234    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
20235    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
20236    l_rec_acct_attrs.array_num_value(2)  := 
20237 xla_ae_sources_pkg.GetSystemSourceNum(
20238    p_source_code           => 'XLA_EVENT_APPL_ID'
20239  , p_source_type_code      => 'Y'
20240  , p_source_application_id =>  602
20241 );
20242    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
20243    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
20244    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
20245    l_rec_acct_attrs.array_char_value(4)  := 
20246 xla_ae_sources_pkg.GetSystemSourceChar(
20247    p_source_code           => 'XLA_ENTITY_CODE'
20248  , p_source_type_code      => 'Y'
20249  , p_source_application_id =>  602
20250 );
20251    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
20252    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
20253    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
20254    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
20255    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
20256    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
20257    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20258    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
20259    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
20260    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
20261    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
20262    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
20263    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20264    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
20265    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
20266    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
20267    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
20268    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
20269    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
20270    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
20271    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
20272    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
20273    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
20274    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
20275    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
20276    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
20277    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
20278    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
20279    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
20280    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
20281    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
20282    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
20283    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
20284    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
20285    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
20286    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
20287    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
20288    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
20289    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
20290    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
20291    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
20292    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
20293    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
20294    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
20295    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
20296    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
20297    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
20298    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
20299    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
20300    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
20301    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
20302    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
20303    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
20304    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
20305 
20306    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20307    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20308 
20309    ---------------------------------------------------------------------------------------------------------------
20310    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20311    ---------------------------------------------------------------------------------------------------------------
20312    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20313 
20314    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20315    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20316 
20317    IF xla_accounting_cache_pkg.GetValueChar
20318          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20319          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20320    AND l_bflow_method_code = 'PRIOR_ENTRY'
20321 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20322    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20323          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20324        )
20325    THEN
20326          xla_ae_lines_pkg.BflowUpgEntry
20327            (p_business_method_code    => l_bflow_method_code
20328            ,p_business_class_code     => l_bflow_class_code
20329            ,p_balance_type            => l_balance_type_code);
20330    ELSE
20331       NULL;
20332 XLA_AE_LINES_PKG.business_flow_validation(
20333                                 p_business_method_code     => l_bflow_method_code
20334                                ,p_business_class_code      => l_bflow_class_code
20335                                ,p_inherit_description_flag => l_inherit_desc_flag);
20336    END IF;
20337 
20338    --
20339    -- call analytical criteria
20340    --
20341    -- Inherited Analytical Criteria for business flow method of Prior Entry.
20342    --
20343    -- call description
20344    --
20345    -- No description or it is inherited.
20346    --
20347    -- call ADRs
20348    -- Bug 4922099
20349    --
20350    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20351         (NVL(l_actual_upg_option, 'N') = 'O') OR
20352         (NVL(l_enc_upg_option, 'N') = 'O')
20353       )
20354    THEN
20355    NULL;
20356    --
20357    --
20358    
20359    --
20360    --
20361    END IF;
20362    --
20363    -- Bug 4922099
20364    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20365           (NVL(l_enc_upg_option, 'N') = 'O')
20366         ) AND
20367         (l_bflow_method_code = 'PRIOR_ENTRY')
20368       )
20369    THEN
20370       IF
20371       --
20372       1 = 1
20373       --
20374       THEN
20375       xla_accounting_err_pkg.build_message
20376                                     (p_appli_s_name            => 'XLA'
20377                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20378                                     ,p_token_1                 => 'LINE_NUMBER'
20379                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20380                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20381                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20382                                                                              l_component_type
20383                                                                             ,l_component_code
20384                                                                             ,l_component_type_code
20385                                                                             ,l_component_appl_id
20386                                                                             ,l_amb_context_code
20387                                                                             ,l_entity_code
20388                                                                             ,l_event_class_code
20389                                                                            )
20390                                     ,p_token_3                 => 'OWNER'
20391                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20392                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20393                                                                           ,p_lookup_code    => l_component_type_code
20394                                                                          )
20395                                     ,p_token_4                 => 'PRODUCT_NAME'
20396                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20397                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20398                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20399                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20400                                     ,p_ae_header_id            =>  NULL
20401                                        );
20402 
20403         IF (C_LEVEL_ERROR>= g_log_level) THEN
20404                  trace
20405                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20406                       ,p_level    => C_LEVEL_ERROR
20407                       ,p_module   => l_log_module);
20408         END IF;
20409       END IF;
20410    END IF;
20411    --
20412    --
20413    ------------------------------------------------------------------------------------------------
20414    -- 4219869 Business Flow
20415    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20416    -- Prior Entry.  Currently, the following code is always generated.
20417    ------------------------------------------------------------------------------------------------
20418    -- No ValidateCurrentLine for business flow method of Prior Entry
20419 
20420    ------------------------------------------------------------------------------------
20421    -- 4219869 Business Flow
20422    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20423    ------------------------------------------------------------------------------------
20424    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20425 
20426    ----------------------------------------------------------------------------------
20427    -- 4219869 Business Flow
20428    -- Update journal entry status -- Need to generate this within IF <condition>
20429    ----------------------------------------------------------------------------------
20430    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20431          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20432          ,p_balance_type_code => l_balance_type_code
20433          );
20434 
20435    -------------------------------------------------------------------------------------------
20436    -- 4262811 - Generate the Accrual Reversal lines
20437    -------------------------------------------------------------------------------------------
20438    BEGIN
20439       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20440                               (g_array_event(p_event_id).array_value_num('header_index'));
20441       IF l_acc_rev_flag IS NULL THEN
20442          l_acc_rev_flag := 'N';
20443       END IF;
20444    EXCEPTION
20445       WHEN OTHERS THEN
20446          l_acc_rev_flag := 'N';
20447    END;
20448    --
20449    IF (l_acc_rev_flag = 'Y') THEN
20450 
20451        -- 4645092  ------------------------------------------------------------------------------
20452        -- To allow MPA report to determine if it should generate report process
20453        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20454        ------------------------------------------------------------------------------------------
20455 
20456        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20457        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20458 
20459        --
20460        -- Update the line information that should be overwritten
20461        --
20462        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20463                                          p_header_num   => 1);
20464        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20465 
20466        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20467 
20468        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20469           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20470        END IF;
20471 
20472       --
20473       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20474       --
20475       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20476           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20477       ELSE
20478           ---------------------------------------------------------------------------------------------------
20479           -- 4262811a Switch Sign
20480           ---------------------------------------------------------------------------------------------------
20481           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20482           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20483                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20484           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20485                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20486           -- 5132302
20487           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20488                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20489 
20490       END IF;
20491 
20492       -- 4955764
20493       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20494       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20495 
20496 
20497       XLA_AE_LINES_PKG.ValidateCurrentLine;
20498       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20499 
20500       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20501                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20502                ,p_balance_type_code => l_balance_type_code);
20503 
20504    END IF;
20505 
20506    -----------------------------------------------------------------------------------------
20507    -- 4262811 Multiperiod Accounting
20508    -----------------------------------------------------------------------------------------
20509      -- No MPA option is assigned.
20510 
20511 
20512 END IF;
20513 END IF;
20514 --
20515 
20516 --
20517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20518    trace
20519       (p_msg      => 'END of AcctLineType_42'
20520       ,p_level    => C_LEVEL_PROCEDURE
20521       ,p_module   => l_log_module);
20522 END IF;
20523 --
20524 EXCEPTION
20525   WHEN xla_exceptions_pkg.application_exception THEN
20526       RAISE;
20527   WHEN OTHERS THEN
20528        xla_exceptions_pkg.raise_message
20529            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_42');
20530 END AcctLineType_42;
20531 --
20532 
20533 ---------------------------------------
20534 --
20535 -- PRIVATE FUNCTION
20536 --         AcctLineType_43
20537 --
20538 ---------------------------------------
20539 PROCEDURE AcctLineType_43 (
20540   p_application_id        IN NUMBER
20541  ,p_event_id              IN NUMBER
20542  ,p_calculate_acctd_flag  IN VARCHAR2
20543  ,p_calculate_g_l_flag    IN VARCHAR2
20544  ,p_actual_flag           IN OUT VARCHAR2
20545  ,p_balance_type_code     OUT VARCHAR2
20546  ,p_gain_or_loss_ref      OUT VARCHAR2
20547  
20548 --Budget Account
20549  , p_source_9            IN NUMBER
20550 --Main Or Backing Code
20551  , p_source_13            IN VARCHAR2
20552 --Accounting Reversal Flag
20553  , p_source_15            IN VARCHAR2
20554 --Distribution Link Type
20555  , p_source_17            IN VARCHAR2
20556 --PO Distribution Identifier
20557  , p_source_19            IN NUMBER
20558 --PO Header Identifier
20559  , p_source_20            IN NUMBER
20560 --Applied To Application Identifier
20561  , p_source_21            IN NUMBER
20562 --Applied To Distribution Link Type
20563  , p_source_22            IN VARCHAR2
20564 --Applied To Entity Code
20565  , p_source_23            IN VARCHAR2
20566 --Applied To Distribution Identifier 1
20567  , p_source_24            IN NUMBER
20568 --Applied To Header Identifier 1
20569  , p_source_25            IN NUMBER
20570 --Entered Amount
20571  , p_source_26            IN NUMBER
20572 --Currency Code
20573  , p_source_27            IN VARCHAR2
20574 --Accounted Amount
20575  , p_source_28            IN NUMBER
20576 --PO Encumbrance Upgrade Option
20577  , p_source_29            IN VARCHAR2
20578 --JFMIP Reference
20579  , p_source_31            IN VARCHAR2
20580 --PO Upgrade Encumbrance Type Identifier
20581  , p_source_32            IN NUMBER
20582 --Allocated to Main Document Distribution Type
20583  , p_source_33            IN VARCHAR2
20584 --Allocated to Main Document Distribution Identifier
20585  , p_source_34            IN NUMBER
20586 )
20587 IS
20588 
20589 l_component_type              VARCHAR2(80);
20590 l_component_code              VARCHAR2(30);
20591 l_component_type_code         VARCHAR2(1);
20592 l_component_appl_id           INTEGER;
20593 l_amb_context_code            VARCHAR2(30);
20594 l_entity_code                 VARCHAR2(30);
20595 l_event_class_code            VARCHAR2(30);
20596 l_ae_header_id                NUMBER;
20597 l_event_type_code             VARCHAR2(30);
20598 l_line_definition_code        VARCHAR2(30);
20599 l_line_definition_owner_code  VARCHAR2(1);
20600 --
20601 -- adr variables
20602 l_segment                     VARCHAR2(30);
20603 l_ccid                        NUMBER;
20604 l_adr_transaction_coa_id      NUMBER;
20605 l_adr_accounting_coa_id       NUMBER;
20606 l_adr_flexfield_segment_code  VARCHAR2(30);
20607 l_adr_flex_value_set_id       NUMBER;
20608 l_adr_value_type_code         VARCHAR2(30);
20609 l_adr_value_combination_id    NUMBER;
20610 l_adr_value_segment_code      VARCHAR2(30);
20611 
20612 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20613 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20614 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20615 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20616 
20617 -- 4262811 Variables ------------------------------------------------------------------------------------------
20618 l_entered_amt_idx             NUMBER;
20619 l_accted_amt_idx              NUMBER;
20620 l_acc_rev_flag                VARCHAR2(1);
20621 l_accrual_line_num            NUMBER;
20622 l_tmp_amt                     NUMBER;
20623 l_acc_rev_natural_side_code   VARCHAR2(1);
20624 
20625 l_num_entries                 NUMBER;
20626 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20627 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20628 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20629 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20630 l_recog_line_1                NUMBER;
20631 l_recog_line_2                NUMBER;
20632 
20633 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20634 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20635 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20636 
20637 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20638 
20639 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20640 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20641 
20642 ---------------------------------------------------------------------------------------------------------------
20643 
20644 
20645 --
20646 -- bulk performance
20647 --
20648 l_balance_type_code           VARCHAR2(1);
20649 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20650 l_log_module                  VARCHAR2(240);
20651 
20652 --
20653 -- Upgrade strategy
20654 --
20655 l_actual_upg_option           VARCHAR2(1);
20656 l_enc_upg_option           VARCHAR2(1);
20657 
20658 --
20659 BEGIN
20660 --
20661 IF g_log_enabled THEN
20662       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
20663 END IF;
20664 --
20665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20666 
20667       trace
20668          (p_msg      => 'BEGIN of AcctLineType_43'
20669          ,p_level    => C_LEVEL_PROCEDURE
20670          ,p_module   => l_log_module);
20671 
20672 END IF;
20673 --
20674 l_component_type             := 'AMB_JLT';
20675 l_component_code             := 'FV_REINSTATE_BPA_PO_REVERSE_DR';
20676 l_component_type_code        := 'S';
20677 l_component_appl_id          :=  201;
20678 l_amb_context_code           := 'DEFAULT';
20679 l_entity_code                := 'PURCHASE_ORDER';
20680 l_event_class_code           := 'PO_PA';
20681 l_event_type_code            := 'PO_PA_ALL';
20682 l_line_definition_owner_code := 'S';
20683 l_line_definition_code       := 'FV_PO_ALL';
20684 --
20685 l_balance_type_code          := 'A';
20686 l_segment                     := NULL;
20687 l_ccid                        := NULL;
20688 l_adr_transaction_coa_id      := NULL;
20689 l_adr_accounting_coa_id       := NULL;
20690 l_adr_flexfield_segment_code  := NULL;
20691 l_adr_flex_value_set_id       := NULL;
20692 l_adr_value_type_code         := NULL;
20693 l_adr_value_combination_id    := NULL;
20694 l_adr_value_segment_code      := NULL;
20695 
20696 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
20697 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
20698 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
20699 l_budgetary_control_flag     := 'Y';
20700 
20701 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20702 l_bflow_applied_to_amt       := NULL; -- 5132302
20703 l_entered_amt_idx            := NULL;          -- 4262811
20704 l_accted_amt_idx             := NULL;          -- 4262811
20705 l_acc_rev_flag               := NULL;          -- 4262811
20706 l_accrual_line_num           := NULL;          -- 4262811
20707 l_tmp_amt                    := NULL;          -- 4262811
20708 --
20709  
20710 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20711     l_balance_type_code <> 'B' THEN
20712 IF (NVL(
20713 xla_ae_sources_pkg.GetSystemSourceChar(
20714    p_source_code           => 'XLA_EVENT_TYPE_CODE'
20715  , p_source_type_code      => 'Y'
20716  , p_source_application_id =>  602
20717 ),'
20718 ') =  'PO_PA_CANCELLED' OR 
20719 NVL(
20720 xla_ae_sources_pkg.GetSystemSourceChar(
20721    p_source_code           => 'XLA_EVENT_TYPE_CODE'
20722  , p_source_type_code      => 'Y'
20723  , p_source_application_id =>  602
20724 ),'
20725 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
20726 NVL(p_source_13,'
20727 ') =  'B_PA'
20728  THEN 
20729 
20730    --
20731    XLA_AE_LINES_PKG.SetNewLine;
20732 
20733    p_balance_type_code          := l_balance_type_code;
20734    -- set the flag so later we will know whether the gain loss line needs to be created
20735    
20736    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20737      p_actual_flag :='A';
20738    END IF;
20739 
20740    --
20741    -- bulk performance
20742    --
20743    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20744                                       p_header_num   => 0); -- 4262811
20745    --
20746    -- set accounting line options
20747    --
20748    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20749            p_natural_side_code          => 'D'
20750          , p_gain_or_loss_flag          => 'N'
20751          , p_gl_transfer_mode_code      => 'S'
20752          , p_acct_entry_type_code       => 'A'
20753          , p_switch_side_flag           => 'N'
20754          , p_merge_duplicate_code       => 'N'
20755          );
20756    --
20757    l_acc_rev_natural_side_code := 'C';  -- 4262811
20758    -- 
20759    --
20760    -- set accounting line type info
20761    --
20762    xla_ae_lines_pkg.SetAcctLineType
20763       (p_component_type             => l_component_type
20764       ,p_event_type_code            => l_event_type_code
20765       ,p_line_definition_owner_code => l_line_definition_owner_code
20766       ,p_line_definition_code       => l_line_definition_code
20767       ,p_accounting_line_code       => l_component_code
20768       ,p_accounting_line_type_code  => l_component_type_code
20769       ,p_accounting_line_appl_id    => l_component_appl_id
20770       ,p_amb_context_code           => l_amb_context_code
20771       ,p_entity_code                => l_entity_code
20772       ,p_event_class_code           => l_event_class_code);
20773    --
20774    -- set accounting class
20775    --
20776    xla_ae_lines_pkg.SetAcctClass(
20777            p_accounting_class_code  => 'PURCHASE_ORDER'
20778          , p_ae_header_id           => l_ae_header_id
20779          );
20780 
20781    --
20782    -- set rounding class
20783    --
20784    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20785                       'PURCHASE_ORDER';
20786 
20787    --
20788    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20789    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20790    --
20791    -- bulk performance
20792    --
20793    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20794 
20795    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20796       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20797 
20798    -- 4955764
20799    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20801 
20802    -- 4458381 Public Sector Enh
20803    
20804    --
20805    -- set accounting attributes for the line type
20806    --
20807    l_entered_amt_idx := 23;
20808    l_accted_amt_idx  := 25;
20809    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20810    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20811    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
20812    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
20813    l_rec_acct_attrs.array_num_value(2)  := 
20814 xla_ae_sources_pkg.GetSystemSourceNum(
20815    p_source_code           => 'XLA_EVENT_APPL_ID'
20816  , p_source_type_code      => 'Y'
20817  , p_source_application_id =>  602
20818 );
20819    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
20820    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
20821    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
20822    l_rec_acct_attrs.array_char_value(4)  := 
20823 xla_ae_sources_pkg.GetSystemSourceChar(
20824    p_source_code           => 'XLA_ENTITY_CODE'
20825  , p_source_type_code      => 'Y'
20826  , p_source_application_id =>  602
20827 );
20828    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
20829    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
20830    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
20831    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
20832    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
20833    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
20834    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20835    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
20836    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
20837    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
20838    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
20839    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
20840    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20841    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
20842    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
20843    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
20844    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
20845    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
20846    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
20847    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
20848    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
20849    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
20850    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
20851    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
20852    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
20853    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
20854    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
20855    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
20856    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
20857    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
20858    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
20859    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
20860    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
20861    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
20862    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
20863    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
20864    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
20865    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
20866    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
20867    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
20868    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
20869    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
20870    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
20871    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
20872    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
20873    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
20874    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
20875    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
20876    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
20877    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
20878    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
20879    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
20880    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
20881    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
20882 
20883    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20884    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20885 
20886    ---------------------------------------------------------------------------------------------------------------
20887    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20888    ---------------------------------------------------------------------------------------------------------------
20889    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20890 
20891    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20892    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20893 
20894    IF xla_accounting_cache_pkg.GetValueChar
20895          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20896          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20897    AND l_bflow_method_code = 'PRIOR_ENTRY'
20898 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20899    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20900          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20901        )
20902    THEN
20903          xla_ae_lines_pkg.BflowUpgEntry
20904            (p_business_method_code    => l_bflow_method_code
20905            ,p_business_class_code     => l_bflow_class_code
20906            ,p_balance_type            => l_balance_type_code);
20907    ELSE
20908       NULL;
20909 XLA_AE_LINES_PKG.business_flow_validation(
20910                                 p_business_method_code     => l_bflow_method_code
20911                                ,p_business_class_code      => l_bflow_class_code
20912                                ,p_inherit_description_flag => l_inherit_desc_flag);
20913    END IF;
20914 
20915    --
20916    -- call analytical criteria
20917    --
20918    -- Inherited Analytical Criteria for business flow method of Prior Entry.
20919    --
20920    -- call description
20921    --
20922    -- No description or it is inherited.
20923    --
20924    -- call ADRs
20925    -- Bug 4922099
20926    --
20927    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20928         (NVL(l_actual_upg_option, 'N') = 'O') OR
20929         (NVL(l_enc_upg_option, 'N') = 'O')
20930       )
20931    THEN
20932    NULL;
20933    --
20934    --
20935    
20936    --
20937    --
20938    END IF;
20939    --
20940    -- Bug 4922099
20941    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20942           (NVL(l_enc_upg_option, 'N') = 'O')
20943         ) AND
20944         (l_bflow_method_code = 'PRIOR_ENTRY')
20945       )
20946    THEN
20947       IF
20948       --
20949       1 = 1
20950       --
20951       THEN
20952       xla_accounting_err_pkg.build_message
20953                                     (p_appli_s_name            => 'XLA'
20954                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20955                                     ,p_token_1                 => 'LINE_NUMBER'
20956                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20957                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20958                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20959                                                                              l_component_type
20960                                                                             ,l_component_code
20961                                                                             ,l_component_type_code
20962                                                                             ,l_component_appl_id
20963                                                                             ,l_amb_context_code
20964                                                                             ,l_entity_code
20965                                                                             ,l_event_class_code
20966                                                                            )
20967                                     ,p_token_3                 => 'OWNER'
20968                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20969                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20970                                                                           ,p_lookup_code    => l_component_type_code
20971                                                                          )
20972                                     ,p_token_4                 => 'PRODUCT_NAME'
20973                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20974                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20975                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20976                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20977                                     ,p_ae_header_id            =>  NULL
20978                                        );
20979 
20980         IF (C_LEVEL_ERROR>= g_log_level) THEN
20981                  trace
20982                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20983                       ,p_level    => C_LEVEL_ERROR
20984                       ,p_module   => l_log_module);
20985         END IF;
20986       END IF;
20987    END IF;
20988    --
20989    --
20990    ------------------------------------------------------------------------------------------------
20991    -- 4219869 Business Flow
20992    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20993    -- Prior Entry.  Currently, the following code is always generated.
20994    ------------------------------------------------------------------------------------------------
20995    -- No ValidateCurrentLine for business flow method of Prior Entry
20996 
20997    ------------------------------------------------------------------------------------
20998    -- 4219869 Business Flow
20999    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21000    ------------------------------------------------------------------------------------
21001    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21002 
21003    ----------------------------------------------------------------------------------
21004    -- 4219869 Business Flow
21005    -- Update journal entry status -- Need to generate this within IF <condition>
21006    ----------------------------------------------------------------------------------
21007    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21008          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21009          ,p_balance_type_code => l_balance_type_code
21010          );
21011 
21012    -------------------------------------------------------------------------------------------
21013    -- 4262811 - Generate the Accrual Reversal lines
21014    -------------------------------------------------------------------------------------------
21015    BEGIN
21016       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21017                               (g_array_event(p_event_id).array_value_num('header_index'));
21018       IF l_acc_rev_flag IS NULL THEN
21019          l_acc_rev_flag := 'N';
21020       END IF;
21021    EXCEPTION
21022       WHEN OTHERS THEN
21023          l_acc_rev_flag := 'N';
21024    END;
21025    --
21026    IF (l_acc_rev_flag = 'Y') THEN
21027 
21028        -- 4645092  ------------------------------------------------------------------------------
21029        -- To allow MPA report to determine if it should generate report process
21030        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21031        ------------------------------------------------------------------------------------------
21032 
21033        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21034        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21035 
21036        --
21037        -- Update the line information that should be overwritten
21038        --
21039        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21040                                          p_header_num   => 1);
21041        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21042 
21043        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21044 
21045        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21046           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21047        END IF;
21048 
21049       --
21050       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21051       --
21052       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21053           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21054       ELSE
21055           ---------------------------------------------------------------------------------------------------
21056           -- 4262811a Switch Sign
21057           ---------------------------------------------------------------------------------------------------
21058           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21059           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21060                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21061           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21062                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21063           -- 5132302
21064           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21065                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21066 
21067       END IF;
21068 
21069       -- 4955764
21070       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21071       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21072 
21073 
21074       XLA_AE_LINES_PKG.ValidateCurrentLine;
21075       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21076 
21077       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21078                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21079                ,p_balance_type_code => l_balance_type_code);
21080 
21081    END IF;
21082 
21083    -----------------------------------------------------------------------------------------
21084    -- 4262811 Multiperiod Accounting
21085    -----------------------------------------------------------------------------------------
21086      -- No MPA option is assigned.
21087 
21088 
21089 END IF;
21090 END IF;
21091 --
21092 
21093 --
21094 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21095    trace
21096       (p_msg      => 'END of AcctLineType_43'
21097       ,p_level    => C_LEVEL_PROCEDURE
21098       ,p_module   => l_log_module);
21099 END IF;
21100 --
21101 EXCEPTION
21102   WHEN xla_exceptions_pkg.application_exception THEN
21103       RAISE;
21104   WHEN OTHERS THEN
21105        xla_exceptions_pkg.raise_message
21106            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_43');
21107 END AcctLineType_43;
21108 --
21109 
21110 ---------------------------------------
21111 --
21112 -- PRIVATE FUNCTION
21113 --         AcctLineType_44
21114 --
21115 ---------------------------------------
21116 PROCEDURE AcctLineType_44 (
21117   p_application_id        IN NUMBER
21118  ,p_event_id              IN NUMBER
21119  ,p_calculate_acctd_flag  IN VARCHAR2
21120  ,p_calculate_g_l_flag    IN VARCHAR2
21121  ,p_actual_flag           IN OUT VARCHAR2
21122  ,p_balance_type_code     OUT VARCHAR2
21123  ,p_gain_or_loss_ref      OUT VARCHAR2
21124  
21125 --Journal entry Line Description
21126  , p_source_3            IN VARCHAR2
21127 --Federal Fund Category
21128  , p_source_7            IN VARCHAR2
21129 --Budget Account
21130  , p_source_9            IN NUMBER
21131 --Main Or Backing Code
21132  , p_source_13            IN VARCHAR2
21133 --Accounting Reversal Flag
21134  , p_source_15            IN VARCHAR2
21135 --Distribution Link Type
21136  , p_source_17            IN VARCHAR2
21137 --PO Distribution Identifier
21138  , p_source_19            IN NUMBER
21139 --PO Header Identifier
21140  , p_source_20            IN NUMBER
21141 --Applied To Application Identifier
21142  , p_source_21            IN NUMBER
21143 --Applied To Distribution Link Type
21144  , p_source_22            IN VARCHAR2
21145 --Applied To Entity Code
21146  , p_source_23            IN VARCHAR2
21147 --Applied To Distribution Identifier 1
21148  , p_source_24            IN NUMBER
21149 --Applied To Header Identifier 1
21150  , p_source_25            IN NUMBER
21151 --Entered Amount
21152  , p_source_26            IN NUMBER
21153 --Currency Code
21154  , p_source_27            IN VARCHAR2
21155 --Accounted Amount
21156  , p_source_28            IN NUMBER
21157 --PO Encumbrance Upgrade Option
21158  , p_source_29            IN VARCHAR2
21159 --JFMIP Reference
21160  , p_source_31            IN VARCHAR2
21161 --PO Upgrade Encumbrance Type Identifier
21162  , p_source_32            IN NUMBER
21163 --Allocated to Main Document Distribution Type
21164  , p_source_33            IN VARCHAR2
21165 --Allocated to Main Document Distribution Identifier
21166  , p_source_34            IN NUMBER
21167 --Currency Conversion Date
21168  , p_source_35            IN DATE
21169 --Currency Conversion Rate
21170  , p_source_36            IN NUMBER
21171 --Currency Conversion Type
21172  , p_source_37            IN VARCHAR2
21173 )
21174 IS
21175 
21176 l_component_type              VARCHAR2(80);
21177 l_component_code              VARCHAR2(30);
21178 l_component_type_code         VARCHAR2(1);
21179 l_component_appl_id           INTEGER;
21180 l_amb_context_code            VARCHAR2(30);
21181 l_entity_code                 VARCHAR2(30);
21182 l_event_class_code            VARCHAR2(30);
21183 l_ae_header_id                NUMBER;
21184 l_event_type_code             VARCHAR2(30);
21185 l_line_definition_code        VARCHAR2(30);
21186 l_line_definition_owner_code  VARCHAR2(1);
21187 --
21188 -- adr variables
21189 l_segment                     VARCHAR2(30);
21190 l_ccid                        NUMBER;
21191 l_adr_transaction_coa_id      NUMBER;
21192 l_adr_accounting_coa_id       NUMBER;
21193 l_adr_flexfield_segment_code  VARCHAR2(30);
21194 l_adr_flex_value_set_id       NUMBER;
21195 l_adr_value_type_code         VARCHAR2(30);
21196 l_adr_value_combination_id    NUMBER;
21197 l_adr_value_segment_code      VARCHAR2(30);
21198 
21199 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21200 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21201 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21202 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21203 
21204 -- 4262811 Variables ------------------------------------------------------------------------------------------
21205 l_entered_amt_idx             NUMBER;
21206 l_accted_amt_idx              NUMBER;
21207 l_acc_rev_flag                VARCHAR2(1);
21208 l_accrual_line_num            NUMBER;
21209 l_tmp_amt                     NUMBER;
21210 l_acc_rev_natural_side_code   VARCHAR2(1);
21211 
21212 l_num_entries                 NUMBER;
21213 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21214 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21215 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21216 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21217 l_recog_line_1                NUMBER;
21218 l_recog_line_2                NUMBER;
21219 
21220 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21221 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21222 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21223 
21224 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21225 
21226 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21227 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21228 
21229 ---------------------------------------------------------------------------------------------------------------
21230 
21231 
21232 --
21233 -- bulk performance
21234 --
21235 l_balance_type_code           VARCHAR2(1);
21236 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21237 l_log_module                  VARCHAR2(240);
21238 
21239 --
21240 -- Upgrade strategy
21241 --
21242 l_actual_upg_option           VARCHAR2(1);
21243 l_enc_upg_option           VARCHAR2(1);
21244 
21245 --
21246 BEGIN
21247 --
21248 IF g_log_enabled THEN
21249       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
21250 END IF;
21251 --
21252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21253 
21254       trace
21255          (p_msg      => 'BEGIN of AcctLineType_44'
21256          ,p_level    => C_LEVEL_PROCEDURE
21257          ,p_module   => l_log_module);
21258 
21259 END IF;
21260 --
21261 l_component_type             := 'AMB_JLT';
21262 l_component_code             := 'FV_REINSTATE_REQ_PO_REVERSE_CR';
21263 l_component_type_code        := 'S';
21264 l_component_appl_id          :=  201;
21265 l_amb_context_code           := 'DEFAULT';
21266 l_entity_code                := 'PURCHASE_ORDER';
21267 l_event_class_code           := 'PO_PA';
21268 l_event_type_code            := 'PO_PA_ALL';
21269 l_line_definition_owner_code := 'S';
21270 l_line_definition_code       := 'FV_PO_ALL';
21271 --
21272 l_balance_type_code          := 'A';
21273 l_segment                     := NULL;
21274 l_ccid                        := NULL;
21275 l_adr_transaction_coa_id      := NULL;
21276 l_adr_accounting_coa_id       := NULL;
21277 l_adr_flexfield_segment_code  := NULL;
21278 l_adr_flex_value_set_id       := NULL;
21279 l_adr_value_type_code         := NULL;
21280 l_adr_value_combination_id    := NULL;
21281 l_adr_value_segment_code      := NULL;
21282 
21283 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21284 l_bflow_class_code           := '';    -- 4219869 Business Flow
21285 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21286 l_budgetary_control_flag     := 'Y';
21287 
21288 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21289 l_bflow_applied_to_amt       := NULL; -- 5132302
21290 l_entered_amt_idx            := NULL;          -- 4262811
21291 l_accted_amt_idx             := NULL;          -- 4262811
21292 l_acc_rev_flag               := NULL;          -- 4262811
21293 l_accrual_line_num           := NULL;          -- 4262811
21294 l_tmp_amt                    := NULL;          -- 4262811
21295 --
21296  
21297 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21298     l_balance_type_code <> 'B' THEN
21299 IF (NVL(
21300 xla_ae_sources_pkg.GetSystemSourceChar(
21301    p_source_code           => 'XLA_EVENT_TYPE_CODE'
21302  , p_source_type_code      => 'Y'
21303  , p_source_application_id =>  602
21304 ),'
21305 ') =  'PO_PA_CANCELLED' OR 
21306 NVL(
21307 xla_ae_sources_pkg.GetSystemSourceChar(
21308    p_source_code           => 'XLA_EVENT_TYPE_CODE'
21309  , p_source_type_code      => 'Y'
21310  , p_source_application_id =>  602
21311 ),'
21312 ') =  'PO_PA_CR_MEMO_CANCELLED') AND 
21313 NVL(p_source_13,'
21314 ') =  'B_REQ'
21315  THEN 
21316 
21317    --
21318    XLA_AE_LINES_PKG.SetNewLine;
21319 
21320    p_balance_type_code          := l_balance_type_code;
21321    -- set the flag so later we will know whether the gain loss line needs to be created
21322    
21323    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21324      p_actual_flag :='A';
21325    END IF;
21326 
21327    --
21328    -- bulk performance
21329    --
21330    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21331                                       p_header_num   => 0); -- 4262811
21332    --
21333    -- set accounting line options
21334    --
21335    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21336            p_natural_side_code          => 'C'
21337          , p_gain_or_loss_flag          => 'N'
21338          , p_gl_transfer_mode_code      => 'S'
21339          , p_acct_entry_type_code       => 'A'
21340          , p_switch_side_flag           => 'N'
21341          , p_merge_duplicate_code       => 'N'
21342          );
21343    --
21344    l_acc_rev_natural_side_code := 'D';  -- 4262811
21345    -- 
21346    --
21347    -- set accounting line type info
21348    --
21349    xla_ae_lines_pkg.SetAcctLineType
21350       (p_component_type             => l_component_type
21351       ,p_event_type_code            => l_event_type_code
21352       ,p_line_definition_owner_code => l_line_definition_owner_code
21353       ,p_line_definition_code       => l_line_definition_code
21354       ,p_accounting_line_code       => l_component_code
21355       ,p_accounting_line_type_code  => l_component_type_code
21356       ,p_accounting_line_appl_id    => l_component_appl_id
21357       ,p_amb_context_code           => l_amb_context_code
21358       ,p_entity_code                => l_entity_code
21359       ,p_event_class_code           => l_event_class_code);
21360    --
21361    -- set accounting class
21362    --
21363    xla_ae_lines_pkg.SetAcctClass(
21364            p_accounting_class_code  => 'REQUISITION'
21365          , p_ae_header_id           => l_ae_header_id
21366          );
21367 
21368    --
21369    -- set rounding class
21370    --
21371    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21372                       'REQUISITION';
21373 
21374    --
21375    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21376    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21377    --
21378    -- bulk performance
21379    --
21380    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21381 
21382    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21383       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21384 
21385    -- 4955764
21386    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21387       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21388 
21389    -- 4458381 Public Sector Enh
21390    
21391    --
21392    -- set accounting attributes for the line type
21393    --
21394    l_entered_amt_idx := 23;
21395    l_accted_amt_idx  := 28;
21396    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21397    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21398    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
21399    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
21400    l_rec_acct_attrs.array_num_value(2)  := 
21401 xla_ae_sources_pkg.GetSystemSourceNum(
21402    p_source_code           => 'XLA_EVENT_APPL_ID'
21403  , p_source_type_code      => 'Y'
21404  , p_source_application_id =>  602
21405 );
21406    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
21407    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
21408    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
21409    l_rec_acct_attrs.array_char_value(4)  := 
21410 xla_ae_sources_pkg.GetSystemSourceChar(
21411    p_source_code           => 'XLA_ENTITY_CODE'
21412  , p_source_type_code      => 'Y'
21413  , p_source_application_id =>  602
21414 );
21415    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
21416    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
21417    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
21418    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
21419    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
21420    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
21421    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
21422    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
21423    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
21424    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
21425    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
21426    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
21427    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
21428    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
21429    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
21430    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
21431    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
21432    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
21433    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
21434    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
21435    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
21436    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
21437    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
21438    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
21439    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
21440    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
21441    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
21442    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
21443    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
21444    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
21445    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
21446    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
21447    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
21448    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
21449    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
21450    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
21451    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
21452    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
21453    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
21454    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
21455    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
21456    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
21457    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
21458    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
21459    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
21460    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
21461    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
21462    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
21463    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
21464    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
21465    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
21466    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
21467    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
21468    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
21469    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
21470    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
21471    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
21472    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
21473    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
21474    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
21475 
21476    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21477    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21478 
21479    ---------------------------------------------------------------------------------------------------------------
21480    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21481    ---------------------------------------------------------------------------------------------------------------
21482    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21483 
21484    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21485    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21486 
21487    IF xla_accounting_cache_pkg.GetValueChar
21488          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21489          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21490    AND l_bflow_method_code = 'PRIOR_ENTRY'
21491 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21492    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21493          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21494        )
21495    THEN
21496          xla_ae_lines_pkg.BflowUpgEntry
21497            (p_business_method_code    => l_bflow_method_code
21498            ,p_business_class_code     => l_bflow_class_code
21499            ,p_balance_type            => l_balance_type_code);
21500    ELSE
21501       NULL;
21502 -- No business flow processing for business flow method of NONE.
21503    END IF;
21504 
21505    --
21506    -- call analytical criteria
21507    --
21508    
21509    --
21510    -- call description
21511    --
21512    
21513 xla_ae_lines_pkg.SetLineDescription(
21514    p_ae_header_id => l_ae_header_id
21515   ,p_description  => Description_2 (
21516      p_application_id         => p_application_id
21517    , p_ae_header_id           => l_ae_header_id 
21518 , p_source_3 => p_source_3
21519    )
21520 );
21521 
21522 
21523    --
21524    -- call ADRs
21525    -- Bug 4922099
21526    --
21527    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21528         (NVL(l_actual_upg_option, 'N') = 'O') OR
21529         (NVL(l_enc_upg_option, 'N') = 'O')
21530       )
21531    THEN
21532    NULL;
21533    --
21534    --
21535    
21536   l_ccid := AcctDerRule_9(
21537            p_application_id           => p_application_id
21538          , p_ae_header_id             => l_ae_header_id 
21539 , p_source_9 => p_source_9
21540          , x_transaction_coa_id       => l_adr_transaction_coa_id
21541          , x_accounting_coa_id        => l_adr_accounting_coa_id
21542          , x_value_type_code          => l_adr_value_type_code
21543          , p_side                     => 'NA'
21544    );
21545 
21546    xla_ae_lines_pkg.set_ccid(
21547     p_code_combination_id          => l_ccid
21548   , p_value_type_code              => l_adr_value_type_code
21549   , p_transaction_coa_id           => l_adr_transaction_coa_id
21550   , p_accounting_coa_id            => l_adr_accounting_coa_id
21551   , p_adr_code                     => 'FV_ACCOUNT_RULE'
21552   , p_adr_type_code                => 'S'
21553   , p_component_type               => l_component_type
21554   , p_component_code               => l_component_code
21555   , p_component_type_code          => l_component_type_code
21556   , p_component_appl_id            => l_component_appl_id
21557   , p_amb_context_code             => l_amb_context_code
21558   , p_side                         => 'NA'
21559   );
21560 
21561 
21562    l_segment := AcctDerRule_6(
21563            p_application_id           => p_application_id
21564          , p_ae_header_id             => l_ae_header_id 
21565 , p_source_7 => p_source_7
21566          , x_transaction_coa_id       => l_adr_transaction_coa_id
21567          , x_accounting_coa_id        => l_adr_accounting_coa_id
21568          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
21569          , x_flex_value_set_id        => l_adr_flex_value_set_id
21570          , x_value_type_code          => l_adr_value_type_code
21571          , x_value_combination_id     => l_adr_value_combination_id
21572          , x_value_segment_code       => l_adr_value_segment_code
21573          , p_side                     => 'NA'
21574          , p_override_seg_flag        => 'Y'
21575    );
21576 
21577    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
21578 
21579       xla_ae_lines_pkg.set_segment(
21580           p_to_segment_code         => 'GL_ACCOUNT'
21581         , p_segment_value           => l_segment
21582         , p_from_segment_code       => l_adr_value_segment_code
21583         , p_from_combination_id     => l_adr_value_combination_id
21584         , p_value_type_code         => l_adr_value_type_code
21585         , p_transaction_coa_id      => l_adr_transaction_coa_id
21586         , p_accounting_coa_id       => l_adr_accounting_coa_id
21587         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
21588         , p_flex_value_set_id       => l_adr_flex_value_set_id
21589         , p_adr_code                => 'FV_47X002_REQUISITION'
21590         , p_adr_type_code           => 'S'
21591         , p_component_type          => l_component_type
21592         , p_component_code          => l_component_code
21593         , p_component_type_code     => l_component_type_code
21594         , p_component_appl_id       => l_component_appl_id
21595         , p_amb_context_code        => l_amb_context_code
21596         , p_entity_code             => 'PURCHASE_ORDER'
21597         , p_event_class_code        => 'PO_PA'
21598         , p_side                    => 'NA'
21599         );
21600 
21601   END IF;
21602 
21603    --
21604    --
21605    END IF;
21606    --
21607    -- Bug 4922099
21608    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21609           (NVL(l_enc_upg_option, 'N') = 'O')
21610         ) AND
21611         (l_bflow_method_code = 'PRIOR_ENTRY')
21612       )
21613    THEN
21614       IF
21615       --
21616       1 = 2
21617       --
21618       THEN
21619       xla_accounting_err_pkg.build_message
21620                                     (p_appli_s_name            => 'XLA'
21621                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21622                                     ,p_token_1                 => 'LINE_NUMBER'
21623                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21624                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21625                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21626                                                                              l_component_type
21627                                                                             ,l_component_code
21628                                                                             ,l_component_type_code
21629                                                                             ,l_component_appl_id
21630                                                                             ,l_amb_context_code
21631                                                                             ,l_entity_code
21632                                                                             ,l_event_class_code
21633                                                                            )
21634                                     ,p_token_3                 => 'OWNER'
21635                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21636                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21637                                                                           ,p_lookup_code    => l_component_type_code
21638                                                                          )
21639                                     ,p_token_4                 => 'PRODUCT_NAME'
21640                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21641                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21642                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21643                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21644                                     ,p_ae_header_id            =>  NULL
21645                                        );
21646 
21647         IF (C_LEVEL_ERROR>= g_log_level) THEN
21648                  trace
21649                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21650                       ,p_level    => C_LEVEL_ERROR
21651                       ,p_module   => l_log_module);
21652         END IF;
21653       END IF;
21654    END IF;
21655    --
21656    --
21657    ------------------------------------------------------------------------------------------------
21658    -- 4219869 Business Flow
21659    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21660    -- Prior Entry.  Currently, the following code is always generated.
21661    ------------------------------------------------------------------------------------------------
21662    XLA_AE_LINES_PKG.ValidateCurrentLine;
21663 
21664    ------------------------------------------------------------------------------------
21665    -- 4219869 Business Flow
21666    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21667    ------------------------------------------------------------------------------------
21668    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21669 
21670    ----------------------------------------------------------------------------------
21671    -- 4219869 Business Flow
21672    -- Update journal entry status -- Need to generate this within IF <condition>
21673    ----------------------------------------------------------------------------------
21674    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21675          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21676          ,p_balance_type_code => l_balance_type_code
21677          );
21678 
21679    -------------------------------------------------------------------------------------------
21680    -- 4262811 - Generate the Accrual Reversal lines
21681    -------------------------------------------------------------------------------------------
21682    BEGIN
21683       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21684                               (g_array_event(p_event_id).array_value_num('header_index'));
21685       IF l_acc_rev_flag IS NULL THEN
21686          l_acc_rev_flag := 'N';
21687       END IF;
21688    EXCEPTION
21689       WHEN OTHERS THEN
21690          l_acc_rev_flag := 'N';
21691    END;
21692    --
21693    IF (l_acc_rev_flag = 'Y') THEN
21694 
21695        -- 4645092  ------------------------------------------------------------------------------
21696        -- To allow MPA report to determine if it should generate report process
21697        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21698        ------------------------------------------------------------------------------------------
21699 
21700        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21701        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21702 
21703        --
21704        -- Update the line information that should be overwritten
21705        --
21706        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21707                                          p_header_num   => 1);
21708        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21709 
21710        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21711 
21712        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21713           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21714        END IF;
21715 
21716       --
21717       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21718       --
21719       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21720           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21721       ELSE
21722           ---------------------------------------------------------------------------------------------------
21723           -- 4262811a Switch Sign
21724           ---------------------------------------------------------------------------------------------------
21725           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21726           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21727                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21728           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21729                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21730           -- 5132302
21731           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21732                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21733 
21734       END IF;
21735 
21736       -- 4955764
21737       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21738       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21739 
21740 
21741       XLA_AE_LINES_PKG.ValidateCurrentLine;
21742       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21743 
21744       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21745                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21746                ,p_balance_type_code => l_balance_type_code);
21747 
21748    END IF;
21749 
21750    -----------------------------------------------------------------------------------------
21751    -- 4262811 Multiperiod Accounting
21752    -----------------------------------------------------------------------------------------
21753      -- No MPA option is assigned.
21754 
21755 
21756 END IF;
21757 END IF;
21758 --
21759 
21760 --
21761 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21762    trace
21763       (p_msg      => 'END of AcctLineType_44'
21764       ,p_level    => C_LEVEL_PROCEDURE
21765       ,p_module   => l_log_module);
21766 END IF;
21767 --
21768 EXCEPTION
21769   WHEN xla_exceptions_pkg.application_exception THEN
21770       RAISE;
21771   WHEN OTHERS THEN
21772        xla_exceptions_pkg.raise_message
21773            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_44');
21774 END AcctLineType_44;
21775 --
21776 
21777 ---------------------------------------
21778 --
21779 -- PRIVATE FUNCTION
21780 --         AcctLineType_45
21781 --
21782 ---------------------------------------
21783 PROCEDURE AcctLineType_45 (
21784   p_application_id        IN NUMBER
21785  ,p_event_id              IN NUMBER
21786  ,p_calculate_acctd_flag  IN VARCHAR2
21787  ,p_calculate_g_l_flag    IN VARCHAR2
21788  ,p_actual_flag           IN OUT VARCHAR2
21789  ,p_balance_type_code     OUT VARCHAR2
21790  ,p_gain_or_loss_ref      OUT VARCHAR2
21791  
21792 --Journal entry Line Description
21793  , p_source_3            IN VARCHAR2
21794 --Federal Fund Category
21795  , p_source_7            IN VARCHAR2
21796 --Federal Fund Expired Status
21797  , p_source_8            IN VARCHAR2
21798 --Budget Account
21799  , p_source_9            IN NUMBER
21800 --Main Or Backing Code
21801  , p_source_13            IN VARCHAR2
21802 --Accounting Reversal Flag
21803  , p_source_15            IN VARCHAR2
21804 --Distribution Link Type
21805  , p_source_17            IN VARCHAR2
21806 --PO Distribution Identifier
21807  , p_source_19            IN NUMBER
21808 --PO Header Identifier
21809  , p_source_20            IN NUMBER
21810 --Applied To Application Identifier
21811  , p_source_21            IN NUMBER
21812 --Applied To Distribution Link Type
21813  , p_source_22            IN VARCHAR2
21814 --Applied To Entity Code
21815  , p_source_23            IN VARCHAR2
21816 --Applied To Distribution Identifier 1
21817  , p_source_24            IN NUMBER
21818 --Applied To Header Identifier 1
21819  , p_source_25            IN NUMBER
21820 --Entered Amount
21821  , p_source_26            IN NUMBER
21822 --Currency Code
21823  , p_source_27            IN VARCHAR2
21824 --Accounted Amount
21825  , p_source_28            IN NUMBER
21826 --PO Encumbrance Upgrade Option
21827  , p_source_29            IN VARCHAR2
21828 --JFMIP Reference
21829  , p_source_31            IN VARCHAR2
21830 --PO Upgrade Encumbrance Type Identifier
21831  , p_source_32            IN NUMBER
21832 --Allocated to Main Document Distribution Type
21833  , p_source_33            IN VARCHAR2
21834 --Allocated to Main Document Distribution Identifier
21835  , p_source_34            IN NUMBER
21836 --Currency Conversion Date
21837  , p_source_35            IN DATE
21838 --Currency Conversion Rate
21839  , p_source_36            IN NUMBER
21840 --Currency Conversion Type
21841  , p_source_37            IN VARCHAR2
21842 )
21843 IS
21844 
21845 l_component_type              VARCHAR2(80);
21846 l_component_code              VARCHAR2(30);
21847 l_component_type_code         VARCHAR2(1);
21848 l_component_appl_id           INTEGER;
21849 l_amb_context_code            VARCHAR2(30);
21850 l_entity_code                 VARCHAR2(30);
21851 l_event_class_code            VARCHAR2(30);
21852 l_ae_header_id                NUMBER;
21853 l_event_type_code             VARCHAR2(30);
21854 l_line_definition_code        VARCHAR2(30);
21855 l_line_definition_owner_code  VARCHAR2(1);
21856 --
21857 -- adr variables
21858 l_segment                     VARCHAR2(30);
21859 l_ccid                        NUMBER;
21860 l_adr_transaction_coa_id      NUMBER;
21861 l_adr_accounting_coa_id       NUMBER;
21862 l_adr_flexfield_segment_code  VARCHAR2(30);
21863 l_adr_flex_value_set_id       NUMBER;
21864 l_adr_value_type_code         VARCHAR2(30);
21865 l_adr_value_combination_id    NUMBER;
21866 l_adr_value_segment_code      VARCHAR2(30);
21867 
21868 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21869 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21870 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21871 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21872 
21873 -- 4262811 Variables ------------------------------------------------------------------------------------------
21874 l_entered_amt_idx             NUMBER;
21875 l_accted_amt_idx              NUMBER;
21876 l_acc_rev_flag                VARCHAR2(1);
21877 l_accrual_line_num            NUMBER;
21878 l_tmp_amt                     NUMBER;
21879 l_acc_rev_natural_side_code   VARCHAR2(1);
21880 
21881 l_num_entries                 NUMBER;
21882 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21883 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21884 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21885 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21886 l_recog_line_1                NUMBER;
21887 l_recog_line_2                NUMBER;
21888 
21889 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21890 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21891 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21892 
21893 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21894 
21895 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21896 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21897 
21898 ---------------------------------------------------------------------------------------------------------------
21899 
21900 
21901 --
21902 -- bulk performance
21903 --
21904 l_balance_type_code           VARCHAR2(1);
21905 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21906 l_log_module                  VARCHAR2(240);
21907 
21908 --
21909 -- Upgrade strategy
21910 --
21911 l_actual_upg_option           VARCHAR2(1);
21912 l_enc_upg_option           VARCHAR2(1);
21913 
21914 --
21915 BEGIN
21916 --
21917 IF g_log_enabled THEN
21918       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
21919 END IF;
21920 --
21921 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21922 
21923       trace
21924          (p_msg      => 'BEGIN of AcctLineType_45'
21925          ,p_level    => C_LEVEL_PROCEDURE
21926          ,p_module   => l_log_module);
21927 
21928 END IF;
21929 --
21930 l_component_type             := 'AMB_JLT';
21931 l_component_code             := 'FV_REINSTATE_REQ_PO_REVERSE_DR';
21932 l_component_type_code        := 'S';
21933 l_component_appl_id          :=  201;
21934 l_amb_context_code           := 'DEFAULT';
21935 l_entity_code                := 'PURCHASE_ORDER';
21936 l_event_class_code           := 'PO_PA';
21937 l_event_type_code            := 'PO_PA_ALL';
21938 l_line_definition_owner_code := 'S';
21939 l_line_definition_code       := 'FV_PO_ALL';
21940 --
21941 l_balance_type_code          := 'A';
21942 l_segment                     := NULL;
21943 l_ccid                        := NULL;
21944 l_adr_transaction_coa_id      := NULL;
21945 l_adr_accounting_coa_id       := NULL;
21946 l_adr_flexfield_segment_code  := NULL;
21947 l_adr_flex_value_set_id       := NULL;
21948 l_adr_value_type_code         := NULL;
21949 l_adr_value_combination_id    := NULL;
21950 l_adr_value_segment_code      := NULL;
21951 
21952 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21953 l_bflow_class_code           := '';    -- 4219869 Business Flow
21954 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21955 l_budgetary_control_flag     := 'Y';
21956 
21957 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21958 l_bflow_applied_to_amt       := NULL; -- 5132302
21959 l_entered_amt_idx            := NULL;          -- 4262811
21960 l_accted_amt_idx             := NULL;          -- 4262811
21961 l_acc_rev_flag               := NULL;          -- 4262811
21962 l_accrual_line_num           := NULL;          -- 4262811
21963 l_tmp_amt                    := NULL;          -- 4262811
21964 --
21965  
21966 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21967     l_balance_type_code <> 'B' THEN
21968 IF NVL(
21969 xla_ae_sources_pkg.GetSystemSourceChar(
21970    p_source_code           => 'XLA_EVENT_TYPE_CODE'
21971  , p_source_type_code      => 'Y'
21972  , p_source_application_id =>  602
21973 ),'
21974 ') =  'PO_PA_CANCELLED' AND 
21975 NVL(p_source_13,'
21976 ') =  'B_REQ'
21977  THEN 
21978 
21979    --
21980    XLA_AE_LINES_PKG.SetNewLine;
21981 
21982    p_balance_type_code          := l_balance_type_code;
21983    -- set the flag so later we will know whether the gain loss line needs to be created
21984    
21985    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21986      p_actual_flag :='A';
21987    END IF;
21988 
21989    --
21990    -- bulk performance
21991    --
21992    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21993                                       p_header_num   => 0); -- 4262811
21994    --
21995    -- set accounting line options
21996    --
21997    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21998            p_natural_side_code          => 'D'
21999          , p_gain_or_loss_flag          => 'N'
22000          , p_gl_transfer_mode_code      => 'S'
22001          , p_acct_entry_type_code       => 'A'
22002          , p_switch_side_flag           => 'N'
22003          , p_merge_duplicate_code       => 'N'
22004          );
22005    --
22006    l_acc_rev_natural_side_code := 'C';  -- 4262811
22007    -- 
22008    --
22009    -- set accounting line type info
22010    --
22011    xla_ae_lines_pkg.SetAcctLineType
22012       (p_component_type             => l_component_type
22013       ,p_event_type_code            => l_event_type_code
22014       ,p_line_definition_owner_code => l_line_definition_owner_code
22015       ,p_line_definition_code       => l_line_definition_code
22016       ,p_accounting_line_code       => l_component_code
22017       ,p_accounting_line_type_code  => l_component_type_code
22018       ,p_accounting_line_appl_id    => l_component_appl_id
22019       ,p_amb_context_code           => l_amb_context_code
22020       ,p_entity_code                => l_entity_code
22021       ,p_event_class_code           => l_event_class_code);
22022    --
22023    -- set accounting class
22024    --
22025    xla_ae_lines_pkg.SetAcctClass(
22026            p_accounting_class_code  => 'REQUISITION'
22027          , p_ae_header_id           => l_ae_header_id
22028          );
22029 
22030    --
22031    -- set rounding class
22032    --
22033    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22034                       'REQUISITION';
22035 
22036    --
22037    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22038    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22039    --
22040    -- bulk performance
22041    --
22042    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22043 
22044    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22045       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22046 
22047    -- 4955764
22048    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22049       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22050 
22051    -- 4458381 Public Sector Enh
22052    
22053    --
22054    -- set accounting attributes for the line type
22055    --
22056    l_entered_amt_idx := 23;
22057    l_accted_amt_idx  := 28;
22058    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22059    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22060    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
22061    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
22062    l_rec_acct_attrs.array_num_value(2)  := 
22063 xla_ae_sources_pkg.GetSystemSourceNum(
22064    p_source_code           => 'XLA_EVENT_APPL_ID'
22065  , p_source_type_code      => 'Y'
22066  , p_source_application_id =>  602
22067 );
22068    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
22069    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
22070    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
22071    l_rec_acct_attrs.array_char_value(4)  := 
22072 xla_ae_sources_pkg.GetSystemSourceChar(
22073    p_source_code           => 'XLA_ENTITY_CODE'
22074  , p_source_type_code      => 'Y'
22075  , p_source_application_id =>  602
22076 );
22077    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
22078    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
22079    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
22080    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
22081    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
22082    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
22083    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
22084    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
22085    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
22086    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
22087    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
22088    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
22089    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
22090    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
22091    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
22092    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
22093    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
22094    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
22095    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
22096    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
22097    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
22098    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
22099    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
22100    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
22101    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
22102    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
22103    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
22104    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
22105    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
22106    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
22107    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
22108    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
22109    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
22110    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
22111    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
22112    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
22113    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
22114    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
22115    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
22116    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
22117    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
22118    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
22119    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
22120    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
22121    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
22122    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
22123    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
22124    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
22125    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
22126    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
22127    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
22128    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
22129    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
22130    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
22131    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
22132    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_19);
22133    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
22134    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
22135    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
22136    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
22137 
22138    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22139    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22140 
22141    ---------------------------------------------------------------------------------------------------------------
22142    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22143    ---------------------------------------------------------------------------------------------------------------
22144    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22145 
22146    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22147    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22148 
22149    IF xla_accounting_cache_pkg.GetValueChar
22150          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22151          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22152    AND l_bflow_method_code = 'PRIOR_ENTRY'
22153 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22154    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22155          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22156        )
22157    THEN
22158          xla_ae_lines_pkg.BflowUpgEntry
22159            (p_business_method_code    => l_bflow_method_code
22160            ,p_business_class_code     => l_bflow_class_code
22161            ,p_balance_type            => l_balance_type_code);
22162    ELSE
22163       NULL;
22164 -- No business flow processing for business flow method of NONE.
22165    END IF;
22166 
22167    --
22168    -- call analytical criteria
22169    --
22170    
22171    --
22172    -- call description
22173    --
22174    
22175 xla_ae_lines_pkg.SetLineDescription(
22176    p_ae_header_id => l_ae_header_id
22177   ,p_description  => Description_2 (
22178      p_application_id         => p_application_id
22179    , p_ae_header_id           => l_ae_header_id 
22180 , p_source_3 => p_source_3
22181    )
22182 );
22183 
22184 
22185    --
22186    -- call ADRs
22187    -- Bug 4922099
22188    --
22189    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22190         (NVL(l_actual_upg_option, 'N') = 'O') OR
22191         (NVL(l_enc_upg_option, 'N') = 'O')
22192       )
22193    THEN
22194    NULL;
22195    --
22196    --
22197    
22198   l_ccid := AcctDerRule_9(
22199            p_application_id           => p_application_id
22200          , p_ae_header_id             => l_ae_header_id 
22201 , p_source_9 => p_source_9
22202          , x_transaction_coa_id       => l_adr_transaction_coa_id
22203          , x_accounting_coa_id        => l_adr_accounting_coa_id
22204          , x_value_type_code          => l_adr_value_type_code
22205          , p_side                     => 'NA'
22206    );
22207 
22208    xla_ae_lines_pkg.set_ccid(
22209     p_code_combination_id          => l_ccid
22210   , p_value_type_code              => l_adr_value_type_code
22211   , p_transaction_coa_id           => l_adr_transaction_coa_id
22212   , p_accounting_coa_id            => l_adr_accounting_coa_id
22213   , p_adr_code                     => 'FV_ACCOUNT_RULE'
22214   , p_adr_type_code                => 'S'
22215   , p_component_type               => l_component_type
22216   , p_component_code               => l_component_code
22217   , p_component_type_code          => l_component_type_code
22218   , p_component_appl_id            => l_component_appl_id
22219   , p_amb_context_code             => l_amb_context_code
22220   , p_side                         => 'NA'
22221   );
22222 
22223 
22224    l_segment := AcctDerRule_5(
22225            p_application_id           => p_application_id
22226          , p_ae_header_id             => l_ae_header_id 
22227 , p_source_7 => p_source_7
22228 , p_source_8 => p_source_8
22229          , x_transaction_coa_id       => l_adr_transaction_coa_id
22230          , x_accounting_coa_id        => l_adr_accounting_coa_id
22231          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
22232          , x_flex_value_set_id        => l_adr_flex_value_set_id
22233          , x_value_type_code          => l_adr_value_type_code
22234          , x_value_combination_id     => l_adr_value_combination_id
22235          , x_value_segment_code       => l_adr_value_segment_code
22236          , p_side                     => 'NA'
22237          , p_override_seg_flag        => 'Y'
22238    );
22239 
22240    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
22241 
22242       xla_ae_lines_pkg.set_segment(
22243           p_to_segment_code         => 'GL_ACCOUNT'
22244         , p_segment_value           => l_segment
22245         , p_from_segment_code       => l_adr_value_segment_code
22246         , p_from_combination_id     => l_adr_value_combination_id
22247         , p_value_type_code         => l_adr_value_type_code
22248         , p_transaction_coa_id      => l_adr_transaction_coa_id
22249         , p_accounting_coa_id       => l_adr_accounting_coa_id
22250         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
22251         , p_flex_value_set_id       => l_adr_flex_value_set_id
22252         , p_adr_code                => 'FV_46X002'
22253         , p_adr_type_code           => 'S'
22254         , p_component_type          => l_component_type
22255         , p_component_code          => l_component_code
22256         , p_component_type_code     => l_component_type_code
22257         , p_component_appl_id       => l_component_appl_id
22258         , p_amb_context_code        => l_amb_context_code
22259         , p_entity_code             => 'PURCHASE_ORDER'
22260         , p_event_class_code        => 'PO_PA'
22261         , p_side                    => 'NA'
22262         );
22263 
22264   END IF;
22265 
22266    --
22267    --
22268    END IF;
22269    --
22270    -- Bug 4922099
22271    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22272           (NVL(l_enc_upg_option, 'N') = 'O')
22273         ) AND
22274         (l_bflow_method_code = 'PRIOR_ENTRY')
22275       )
22276    THEN
22277       IF
22278       --
22279       1 = 2
22280       --
22281       THEN
22282       xla_accounting_err_pkg.build_message
22283                                     (p_appli_s_name            => 'XLA'
22284                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22285                                     ,p_token_1                 => 'LINE_NUMBER'
22286                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22287                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22288                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22289                                                                              l_component_type
22290                                                                             ,l_component_code
22291                                                                             ,l_component_type_code
22292                                                                             ,l_component_appl_id
22293                                                                             ,l_amb_context_code
22294                                                                             ,l_entity_code
22295                                                                             ,l_event_class_code
22296                                                                            )
22297                                     ,p_token_3                 => 'OWNER'
22298                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22299                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22300                                                                           ,p_lookup_code    => l_component_type_code
22301                                                                          )
22302                                     ,p_token_4                 => 'PRODUCT_NAME'
22303                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22304                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22305                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22306                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22307                                     ,p_ae_header_id            =>  NULL
22308                                        );
22309 
22310         IF (C_LEVEL_ERROR>= g_log_level) THEN
22311                  trace
22312                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22313                       ,p_level    => C_LEVEL_ERROR
22314                       ,p_module   => l_log_module);
22315         END IF;
22316       END IF;
22317    END IF;
22318    --
22319    --
22320    ------------------------------------------------------------------------------------------------
22321    -- 4219869 Business Flow
22322    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22323    -- Prior Entry.  Currently, the following code is always generated.
22324    ------------------------------------------------------------------------------------------------
22325    XLA_AE_LINES_PKG.ValidateCurrentLine;
22326 
22327    ------------------------------------------------------------------------------------
22328    -- 4219869 Business Flow
22329    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22330    ------------------------------------------------------------------------------------
22331    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22332 
22333    ----------------------------------------------------------------------------------
22334    -- 4219869 Business Flow
22335    -- Update journal entry status -- Need to generate this within IF <condition>
22336    ----------------------------------------------------------------------------------
22337    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22338          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22339          ,p_balance_type_code => l_balance_type_code
22340          );
22341 
22342    -------------------------------------------------------------------------------------------
22343    -- 4262811 - Generate the Accrual Reversal lines
22344    -------------------------------------------------------------------------------------------
22345    BEGIN
22346       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22347                               (g_array_event(p_event_id).array_value_num('header_index'));
22348       IF l_acc_rev_flag IS NULL THEN
22349          l_acc_rev_flag := 'N';
22350       END IF;
22351    EXCEPTION
22352       WHEN OTHERS THEN
22353          l_acc_rev_flag := 'N';
22354    END;
22355    --
22356    IF (l_acc_rev_flag = 'Y') THEN
22357 
22358        -- 4645092  ------------------------------------------------------------------------------
22359        -- To allow MPA report to determine if it should generate report process
22360        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22361        ------------------------------------------------------------------------------------------
22362 
22363        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22364        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22365 
22366        --
22367        -- Update the line information that should be overwritten
22368        --
22369        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22370                                          p_header_num   => 1);
22371        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22372 
22373        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22374 
22375        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22376           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22377        END IF;
22378 
22379       --
22380       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22381       --
22382       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22383           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22384       ELSE
22385           ---------------------------------------------------------------------------------------------------
22386           -- 4262811a Switch Sign
22387           ---------------------------------------------------------------------------------------------------
22388           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22389           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22390                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22391           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22392                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22393           -- 5132302
22394           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22395                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22396 
22397       END IF;
22398 
22399       -- 4955764
22400       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22401       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22402 
22403 
22404       XLA_AE_LINES_PKG.ValidateCurrentLine;
22405       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22406 
22407       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22408                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22409                ,p_balance_type_code => l_balance_type_code);
22410 
22411    END IF;
22412 
22413    -----------------------------------------------------------------------------------------
22414    -- 4262811 Multiperiod Accounting
22415    -----------------------------------------------------------------------------------------
22416      -- No MPA option is assigned.
22417 
22418 
22419 END IF;
22420 END IF;
22421 --
22422 
22423 --
22424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22425    trace
22426       (p_msg      => 'END of AcctLineType_45'
22427       ,p_level    => C_LEVEL_PROCEDURE
22428       ,p_module   => l_log_module);
22429 END IF;
22430 --
22431 EXCEPTION
22432   WHEN xla_exceptions_pkg.application_exception THEN
22433       RAISE;
22434   WHEN OTHERS THEN
22435        xla_exceptions_pkg.raise_message
22436            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_45');
22437 END AcctLineType_45;
22438 --
22439 
22440 ---------------------------------------
22441 --
22442 -- PRIVATE FUNCTION
22443 --         AcctLineType_46
22444 --
22445 ---------------------------------------
22446 PROCEDURE AcctLineType_46 (
22447   p_application_id        IN NUMBER
22448  ,p_event_id              IN NUMBER
22449  ,p_calculate_acctd_flag  IN VARCHAR2
22450  ,p_calculate_g_l_flag    IN VARCHAR2
22451  ,p_actual_flag           IN OUT VARCHAR2
22452  ,p_balance_type_code     OUT VARCHAR2
22453  ,p_gain_or_loss_ref      OUT VARCHAR2
22454  
22455 --Budget Account
22456  , p_source_9            IN NUMBER
22457 --Main Or Backing Code
22458  , p_source_13            IN VARCHAR2
22459 --Accounting Reversal Flag
22460  , p_source_15            IN VARCHAR2
22461 --Distribution Link Type
22462  , p_source_17            IN VARCHAR2
22463 --PO Distribution Identifier
22464  , p_source_19            IN NUMBER
22465 --Applied To Application Identifier
22466  , p_source_21            IN NUMBER
22467 --Applied To Distribution Link Type
22468  , p_source_22            IN VARCHAR2
22469 --Applied To Entity Code
22470  , p_source_23            IN VARCHAR2
22471 --Applied To Distribution Identifier 1
22472  , p_source_24            IN NUMBER
22473 --Applied To Header Identifier 1
22474  , p_source_25            IN NUMBER
22475 --Entered Amount
22476  , p_source_26            IN NUMBER
22477 --Currency Code
22478  , p_source_27            IN VARCHAR2
22479 --Accounted Amount
22480  , p_source_28            IN NUMBER
22481 --PO Encumbrance Upgrade Option
22482  , p_source_29            IN VARCHAR2
22483 --PO Upgrade Encumbrance Type Identifier
22484  , p_source_32            IN NUMBER
22485 --PO Release Identifier
22486  , p_source_41            IN NUMBER
22487 )
22488 IS
22489 
22490 l_component_type              VARCHAR2(80);
22491 l_component_code              VARCHAR2(30);
22492 l_component_type_code         VARCHAR2(1);
22493 l_component_appl_id           INTEGER;
22494 l_amb_context_code            VARCHAR2(30);
22495 l_entity_code                 VARCHAR2(30);
22496 l_event_class_code            VARCHAR2(30);
22497 l_ae_header_id                NUMBER;
22498 l_event_type_code             VARCHAR2(30);
22499 l_line_definition_code        VARCHAR2(30);
22500 l_line_definition_owner_code  VARCHAR2(1);
22501 --
22502 -- adr variables
22503 l_segment                     VARCHAR2(30);
22504 l_ccid                        NUMBER;
22505 l_adr_transaction_coa_id      NUMBER;
22506 l_adr_accounting_coa_id       NUMBER;
22507 l_adr_flexfield_segment_code  VARCHAR2(30);
22508 l_adr_flex_value_set_id       NUMBER;
22509 l_adr_value_type_code         VARCHAR2(30);
22510 l_adr_value_combination_id    NUMBER;
22511 l_adr_value_segment_code      VARCHAR2(30);
22512 
22513 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22514 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22515 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22516 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22517 
22518 -- 4262811 Variables ------------------------------------------------------------------------------------------
22519 l_entered_amt_idx             NUMBER;
22520 l_accted_amt_idx              NUMBER;
22521 l_acc_rev_flag                VARCHAR2(1);
22522 l_accrual_line_num            NUMBER;
22523 l_tmp_amt                     NUMBER;
22524 l_acc_rev_natural_side_code   VARCHAR2(1);
22525 
22526 l_num_entries                 NUMBER;
22527 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22528 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22529 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22530 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22531 l_recog_line_1                NUMBER;
22532 l_recog_line_2                NUMBER;
22533 
22534 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22535 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22536 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22537 
22538 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22539 
22540 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22541 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22542 
22543 ---------------------------------------------------------------------------------------------------------------
22544 
22545 
22546 --
22547 -- bulk performance
22548 --
22549 l_balance_type_code           VARCHAR2(1);
22550 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22551 l_log_module                  VARCHAR2(240);
22552 
22553 --
22554 -- Upgrade strategy
22555 --
22556 l_actual_upg_option           VARCHAR2(1);
22557 l_enc_upg_option           VARCHAR2(1);
22558 
22559 --
22560 BEGIN
22561 --
22562 IF g_log_enabled THEN
22563       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
22564 END IF;
22565 --
22566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22567 
22568       trace
22569          (p_msg      => 'BEGIN of AcctLineType_46'
22570          ,p_level    => C_LEVEL_PROCEDURE
22571          ,p_module   => l_log_module);
22572 
22573 END IF;
22574 --
22575 l_component_type             := 'AMB_JLT';
22576 l_component_code             := 'FV_REL_CANCEL_CR';
22577 l_component_type_code        := 'S';
22578 l_component_appl_id          :=  201;
22579 l_amb_context_code           := 'DEFAULT';
22580 l_entity_code                := 'RELEASE';
22581 l_event_class_code           := 'RELEASE';
22582 l_event_type_code            := 'RELEASE_ALL';
22583 l_line_definition_owner_code := 'S';
22584 l_line_definition_code       := 'FV_RELEASE_ALL';
22585 --
22586 l_balance_type_code          := 'A';
22587 l_segment                     := NULL;
22588 l_ccid                        := NULL;
22589 l_adr_transaction_coa_id      := NULL;
22590 l_adr_accounting_coa_id       := NULL;
22591 l_adr_flexfield_segment_code  := NULL;
22592 l_adr_flex_value_set_id       := NULL;
22593 l_adr_value_type_code         := NULL;
22594 l_adr_value_combination_id    := NULL;
22595 l_adr_value_segment_code      := NULL;
22596 
22597 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
22598 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
22599 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
22600 l_budgetary_control_flag     := 'Y';
22601 
22602 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22603 l_bflow_applied_to_amt       := NULL; -- 5132302
22604 l_entered_amt_idx            := NULL;          -- 4262811
22605 l_accted_amt_idx             := NULL;          -- 4262811
22606 l_acc_rev_flag               := NULL;          -- 4262811
22607 l_accrual_line_num           := NULL;          -- 4262811
22608 l_tmp_amt                    := NULL;          -- 4262811
22609 --
22610  
22611 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22612     l_balance_type_code <> 'B' THEN
22613 IF (NVL(
22614 xla_ae_sources_pkg.GetSystemSourceChar(
22615    p_source_code           => 'XLA_EVENT_TYPE_CODE'
22616  , p_source_type_code      => 'Y'
22617  , p_source_application_id =>  602
22618 ),'
22619 ') =  'RELEASE_CANCELLED' OR 
22620 NVL(
22621 xla_ae_sources_pkg.GetSystemSourceChar(
22622    p_source_code           => 'XLA_EVENT_TYPE_CODE'
22623  , p_source_type_code      => 'Y'
22624  , p_source_application_id =>  602
22625 ),'
22626 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
22627 NVL(p_source_13,'
22628 ') =  'M'
22629  THEN 
22630 
22631    --
22632    XLA_AE_LINES_PKG.SetNewLine;
22633 
22634    p_balance_type_code          := l_balance_type_code;
22635    -- set the flag so later we will know whether the gain loss line needs to be created
22636    
22637    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22638      p_actual_flag :='A';
22639    END IF;
22640 
22641    --
22642    -- bulk performance
22643    --
22644    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22645                                       p_header_num   => 0); -- 4262811
22646    --
22647    -- set accounting line options
22648    --
22649    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22650            p_natural_side_code          => 'C'
22651          , p_gain_or_loss_flag          => 'N'
22652          , p_gl_transfer_mode_code      => 'S'
22653          , p_acct_entry_type_code       => 'A'
22654          , p_switch_side_flag           => 'N'
22655          , p_merge_duplicate_code       => 'N'
22656          );
22657    --
22658    l_acc_rev_natural_side_code := 'D';  -- 4262811
22659    -- 
22660    --
22661    -- set accounting line type info
22662    --
22663    xla_ae_lines_pkg.SetAcctLineType
22664       (p_component_type             => l_component_type
22665       ,p_event_type_code            => l_event_type_code
22666       ,p_line_definition_owner_code => l_line_definition_owner_code
22667       ,p_line_definition_code       => l_line_definition_code
22668       ,p_accounting_line_code       => l_component_code
22669       ,p_accounting_line_type_code  => l_component_type_code
22670       ,p_accounting_line_appl_id    => l_component_appl_id
22671       ,p_amb_context_code           => l_amb_context_code
22672       ,p_entity_code                => l_entity_code
22673       ,p_event_class_code           => l_event_class_code);
22674    --
22675    -- set accounting class
22676    --
22677    xla_ae_lines_pkg.SetAcctClass(
22678            p_accounting_class_code  => 'PURCHASE_ORDER'
22679          , p_ae_header_id           => l_ae_header_id
22680          );
22681 
22682    --
22683    -- set rounding class
22684    --
22685    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22686                       'PURCHASE_ORDER';
22687 
22688    --
22689    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22690    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22691    --
22692    -- bulk performance
22693    --
22694    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22695 
22696    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22697       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22698 
22699    -- 4955764
22700    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22701       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22702 
22703    -- 4458381 Public Sector Enh
22704    
22705    --
22706    -- set accounting attributes for the line type
22707    --
22708    l_entered_amt_idx := 23;
22709    l_accted_amt_idx  := 25;
22710    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22711    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22712    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
22713    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
22714    l_rec_acct_attrs.array_num_value(2)  := 
22715 xla_ae_sources_pkg.GetSystemSourceNum(
22716    p_source_code           => 'XLA_EVENT_APPL_ID'
22717  , p_source_type_code      => 'Y'
22718  , p_source_application_id =>  602
22719 );
22720    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
22721    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
22722    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
22723    l_rec_acct_attrs.array_char_value(4)  := 
22724 xla_ae_sources_pkg.GetSystemSourceChar(
22725    p_source_code           => 'XLA_ENTITY_CODE'
22726  , p_source_type_code      => 'Y'
22727  , p_source_application_id =>  602
22728 );
22729    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
22730    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
22731    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
22732    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
22733    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
22734    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
22735    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
22736    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
22737    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
22738    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
22739    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
22740    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
22741    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
22742    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
22743    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
22744    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
22745    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
22746    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
22747    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
22748    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
22749    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
22750    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
22751    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
22752    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
22753    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
22754    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
22755    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
22756    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
22757    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
22758    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
22759    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
22760    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
22761    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
22762    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
22763    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
22764    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
22765    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
22766    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
22767    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
22768    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
22769    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
22770    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
22771    l_rec_acct_attrs.array_acct_attr_code(26) := 'REVERSED_DISTRIBUTION_ID1';
22772    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_24);
22773    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_TYPE';
22774    l_rec_acct_attrs.array_char_value(27)  := p_source_22;
22775    l_rec_acct_attrs.array_acct_attr_code(28) := 'UPG_CR_ENC_TYPE_ID';
22776    l_rec_acct_attrs.array_num_value(28)  := p_source_32;
22777    l_rec_acct_attrs.array_acct_attr_code(29) := 'UPG_DR_ENC_TYPE_ID';
22778    l_rec_acct_attrs.array_num_value(29)  := p_source_32;
22779 
22780    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22781    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22782 
22783    ---------------------------------------------------------------------------------------------------------------
22784    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22785    ---------------------------------------------------------------------------------------------------------------
22786    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22787 
22788    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22789    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22790 
22791    IF xla_accounting_cache_pkg.GetValueChar
22792          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22793          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22794    AND l_bflow_method_code = 'PRIOR_ENTRY'
22795 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22796    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22797          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22798        )
22799    THEN
22800          xla_ae_lines_pkg.BflowUpgEntry
22801            (p_business_method_code    => l_bflow_method_code
22802            ,p_business_class_code     => l_bflow_class_code
22803            ,p_balance_type            => l_balance_type_code);
22804    ELSE
22805       NULL;
22806 XLA_AE_LINES_PKG.business_flow_validation(
22807                                 p_business_method_code     => l_bflow_method_code
22808                                ,p_business_class_code      => l_bflow_class_code
22809                                ,p_inherit_description_flag => l_inherit_desc_flag);
22810    END IF;
22811 
22812    --
22813    -- call analytical criteria
22814    --
22815    -- Inherited Analytical Criteria for business flow method of Prior Entry.
22816    --
22817    -- call description
22818    --
22819    -- No description or it is inherited.
22820    --
22821    -- call ADRs
22822    -- Bug 4922099
22823    --
22824    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22825         (NVL(l_actual_upg_option, 'N') = 'O') OR
22826         (NVL(l_enc_upg_option, 'N') = 'O')
22827       )
22828    THEN
22829    NULL;
22830    --
22831    --
22832    
22833    --
22834    --
22835    END IF;
22836    --
22837    -- Bug 4922099
22838    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22839           (NVL(l_enc_upg_option, 'N') = 'O')
22840         ) AND
22841         (l_bflow_method_code = 'PRIOR_ENTRY')
22842       )
22843    THEN
22844       IF
22845       --
22846       1 = 1
22847       --
22848       THEN
22849       xla_accounting_err_pkg.build_message
22850                                     (p_appli_s_name            => 'XLA'
22851                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22852                                     ,p_token_1                 => 'LINE_NUMBER'
22853                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22854                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22855                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22856                                                                              l_component_type
22857                                                                             ,l_component_code
22858                                                                             ,l_component_type_code
22859                                                                             ,l_component_appl_id
22860                                                                             ,l_amb_context_code
22861                                                                             ,l_entity_code
22862                                                                             ,l_event_class_code
22863                                                                            )
22864                                     ,p_token_3                 => 'OWNER'
22865                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22866                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22867                                                                           ,p_lookup_code    => l_component_type_code
22868                                                                          )
22869                                     ,p_token_4                 => 'PRODUCT_NAME'
22870                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22871                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22872                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22873                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22874                                     ,p_ae_header_id            =>  NULL
22875                                        );
22876 
22877         IF (C_LEVEL_ERROR>= g_log_level) THEN
22878                  trace
22879                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22880                       ,p_level    => C_LEVEL_ERROR
22881                       ,p_module   => l_log_module);
22882         END IF;
22883       END IF;
22884    END IF;
22885    --
22886    --
22887    ------------------------------------------------------------------------------------------------
22888    -- 4219869 Business Flow
22889    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22890    -- Prior Entry.  Currently, the following code is always generated.
22891    ------------------------------------------------------------------------------------------------
22892    -- No ValidateCurrentLine for business flow method of Prior Entry
22893 
22894    ------------------------------------------------------------------------------------
22895    -- 4219869 Business Flow
22896    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22897    ------------------------------------------------------------------------------------
22898    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22899 
22900    ----------------------------------------------------------------------------------
22901    -- 4219869 Business Flow
22902    -- Update journal entry status -- Need to generate this within IF <condition>
22903    ----------------------------------------------------------------------------------
22904    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22905          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22906          ,p_balance_type_code => l_balance_type_code
22907          );
22908 
22909    -------------------------------------------------------------------------------------------
22910    -- 4262811 - Generate the Accrual Reversal lines
22911    -------------------------------------------------------------------------------------------
22912    BEGIN
22913       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22914                               (g_array_event(p_event_id).array_value_num('header_index'));
22915       IF l_acc_rev_flag IS NULL THEN
22916          l_acc_rev_flag := 'N';
22917       END IF;
22918    EXCEPTION
22919       WHEN OTHERS THEN
22920          l_acc_rev_flag := 'N';
22921    END;
22922    --
22923    IF (l_acc_rev_flag = 'Y') THEN
22924 
22925        -- 4645092  ------------------------------------------------------------------------------
22926        -- To allow MPA report to determine if it should generate report process
22927        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22928        ------------------------------------------------------------------------------------------
22929 
22930        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22931        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22932 
22933        --
22934        -- Update the line information that should be overwritten
22935        --
22936        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22937                                          p_header_num   => 1);
22938        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22939 
22940        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22941 
22942        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22943           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22944        END IF;
22945 
22946       --
22947       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22948       --
22949       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22950           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22951       ELSE
22952           ---------------------------------------------------------------------------------------------------
22953           -- 4262811a Switch Sign
22954           ---------------------------------------------------------------------------------------------------
22955           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22956           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22957                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22958           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22959                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22960           -- 5132302
22961           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22962                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22963 
22964       END IF;
22965 
22966       -- 4955764
22967       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22968       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22969 
22970 
22971       XLA_AE_LINES_PKG.ValidateCurrentLine;
22972       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22973 
22974       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22975                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22976                ,p_balance_type_code => l_balance_type_code);
22977 
22978    END IF;
22979 
22980    -----------------------------------------------------------------------------------------
22981    -- 4262811 Multiperiod Accounting
22982    -----------------------------------------------------------------------------------------
22983      -- No MPA option is assigned.
22984 
22985 
22986 END IF;
22987 END IF;
22988 --
22989 
22990 --
22991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22992    trace
22993       (p_msg      => 'END of AcctLineType_46'
22994       ,p_level    => C_LEVEL_PROCEDURE
22995       ,p_module   => l_log_module);
22996 END IF;
22997 --
22998 EXCEPTION
22999   WHEN xla_exceptions_pkg.application_exception THEN
23000       RAISE;
23001   WHEN OTHERS THEN
23002        xla_exceptions_pkg.raise_message
23003            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_46');
23004 END AcctLineType_46;
23005 --
23006 
23007 ---------------------------------------
23008 --
23009 -- PRIVATE FUNCTION
23010 --         AcctLineType_47
23011 --
23012 ---------------------------------------
23013 PROCEDURE AcctLineType_47 (
23014   p_application_id        IN NUMBER
23015  ,p_event_id              IN NUMBER
23016  ,p_calculate_acctd_flag  IN VARCHAR2
23017  ,p_calculate_g_l_flag    IN VARCHAR2
23018  ,p_actual_flag           IN OUT VARCHAR2
23019  ,p_balance_type_code     OUT VARCHAR2
23020  ,p_gain_or_loss_ref      OUT VARCHAR2
23021  
23022 --Budget Account
23023  , p_source_9            IN NUMBER
23024 --Main Or Backing Code
23025  , p_source_13            IN VARCHAR2
23026 --Accounting Reversal Flag
23027  , p_source_15            IN VARCHAR2
23028 --Distribution Link Type
23029  , p_source_17            IN VARCHAR2
23030 --PO Distribution Identifier
23031  , p_source_19            IN NUMBER
23032 --Applied To Application Identifier
23033  , p_source_21            IN NUMBER
23034 --Applied To Distribution Link Type
23035  , p_source_22            IN VARCHAR2
23036 --Applied To Entity Code
23037  , p_source_23            IN VARCHAR2
23038 --Applied To Distribution Identifier 1
23039  , p_source_24            IN NUMBER
23040 --Applied To Header Identifier 1
23041  , p_source_25            IN NUMBER
23042 --Entered Amount
23043  , p_source_26            IN NUMBER
23044 --Currency Code
23045  , p_source_27            IN VARCHAR2
23046 --Accounted Amount
23047  , p_source_28            IN NUMBER
23048 --PO Encumbrance Upgrade Option
23049  , p_source_29            IN VARCHAR2
23050 --PO Upgrade Encumbrance Type Identifier
23051  , p_source_32            IN NUMBER
23052 --PO Release Identifier
23053  , p_source_41            IN NUMBER
23054 )
23055 IS
23056 
23057 l_component_type              VARCHAR2(80);
23058 l_component_code              VARCHAR2(30);
23059 l_component_type_code         VARCHAR2(1);
23060 l_component_appl_id           INTEGER;
23061 l_amb_context_code            VARCHAR2(30);
23062 l_entity_code                 VARCHAR2(30);
23063 l_event_class_code            VARCHAR2(30);
23064 l_ae_header_id                NUMBER;
23065 l_event_type_code             VARCHAR2(30);
23066 l_line_definition_code        VARCHAR2(30);
23067 l_line_definition_owner_code  VARCHAR2(1);
23068 --
23069 -- adr variables
23070 l_segment                     VARCHAR2(30);
23071 l_ccid                        NUMBER;
23072 l_adr_transaction_coa_id      NUMBER;
23073 l_adr_accounting_coa_id       NUMBER;
23074 l_adr_flexfield_segment_code  VARCHAR2(30);
23075 l_adr_flex_value_set_id       NUMBER;
23076 l_adr_value_type_code         VARCHAR2(30);
23077 l_adr_value_combination_id    NUMBER;
23078 l_adr_value_segment_code      VARCHAR2(30);
23079 
23080 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23081 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23082 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23083 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23084 
23085 -- 4262811 Variables ------------------------------------------------------------------------------------------
23086 l_entered_amt_idx             NUMBER;
23087 l_accted_amt_idx              NUMBER;
23088 l_acc_rev_flag                VARCHAR2(1);
23089 l_accrual_line_num            NUMBER;
23090 l_tmp_amt                     NUMBER;
23091 l_acc_rev_natural_side_code   VARCHAR2(1);
23092 
23093 l_num_entries                 NUMBER;
23094 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23095 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23096 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23097 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23098 l_recog_line_1                NUMBER;
23099 l_recog_line_2                NUMBER;
23100 
23101 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23102 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23103 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23104 
23105 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23106 
23107 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23108 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23109 
23110 ---------------------------------------------------------------------------------------------------------------
23111 
23112 
23113 --
23114 -- bulk performance
23115 --
23116 l_balance_type_code           VARCHAR2(1);
23117 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23118 l_log_module                  VARCHAR2(240);
23119 
23120 --
23121 -- Upgrade strategy
23122 --
23123 l_actual_upg_option           VARCHAR2(1);
23124 l_enc_upg_option           VARCHAR2(1);
23125 
23126 --
23127 BEGIN
23128 --
23129 IF g_log_enabled THEN
23130       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
23131 END IF;
23132 --
23133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23134 
23135       trace
23136          (p_msg      => 'BEGIN of AcctLineType_47'
23137          ,p_level    => C_LEVEL_PROCEDURE
23138          ,p_module   => l_log_module);
23139 
23140 END IF;
23141 --
23142 l_component_type             := 'AMB_JLT';
23143 l_component_code             := 'FV_REL_CANCEL_DR';
23144 l_component_type_code        := 'S';
23145 l_component_appl_id          :=  201;
23146 l_amb_context_code           := 'DEFAULT';
23147 l_entity_code                := 'RELEASE';
23148 l_event_class_code           := 'RELEASE';
23149 l_event_type_code            := 'RELEASE_ALL';
23150 l_line_definition_owner_code := 'S';
23151 l_line_definition_code       := 'FV_RELEASE_ALL';
23152 --
23153 l_balance_type_code          := 'A';
23154 l_segment                     := NULL;
23155 l_ccid                        := NULL;
23156 l_adr_transaction_coa_id      := NULL;
23157 l_adr_accounting_coa_id       := NULL;
23158 l_adr_flexfield_segment_code  := NULL;
23159 l_adr_flex_value_set_id       := NULL;
23160 l_adr_value_type_code         := NULL;
23161 l_adr_value_combination_id    := NULL;
23162 l_adr_value_segment_code      := NULL;
23163 
23164 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
23165 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
23166 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
23167 l_budgetary_control_flag     := 'Y';
23168 
23169 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23170 l_bflow_applied_to_amt       := NULL; -- 5132302
23171 l_entered_amt_idx            := NULL;          -- 4262811
23172 l_accted_amt_idx             := NULL;          -- 4262811
23173 l_acc_rev_flag               := NULL;          -- 4262811
23174 l_accrual_line_num           := NULL;          -- 4262811
23175 l_tmp_amt                    := NULL;          -- 4262811
23176 --
23177  
23178 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23179     l_balance_type_code <> 'B' THEN
23180 IF (NVL(
23181 xla_ae_sources_pkg.GetSystemSourceChar(
23182    p_source_code           => 'XLA_EVENT_TYPE_CODE'
23183  , p_source_type_code      => 'Y'
23184  , p_source_application_id =>  602
23185 ),'
23186 ') =  'RELEASE_CANCELLED' OR 
23187 NVL(
23188 xla_ae_sources_pkg.GetSystemSourceChar(
23189    p_source_code           => 'XLA_EVENT_TYPE_CODE'
23190  , p_source_type_code      => 'Y'
23191  , p_source_application_id =>  602
23192 ),'
23193 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
23194 NVL(p_source_13,'
23195 ') =  'M'
23196  THEN 
23197 
23198    --
23199    XLA_AE_LINES_PKG.SetNewLine;
23200 
23201    p_balance_type_code          := l_balance_type_code;
23202    -- set the flag so later we will know whether the gain loss line needs to be created
23203    
23204    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23205      p_actual_flag :='A';
23206    END IF;
23207 
23208    --
23209    -- bulk performance
23210    --
23211    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23212                                       p_header_num   => 0); -- 4262811
23213    --
23214    -- set accounting line options
23215    --
23216    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23217            p_natural_side_code          => 'D'
23218          , p_gain_or_loss_flag          => 'N'
23219          , p_gl_transfer_mode_code      => 'S'
23220          , p_acct_entry_type_code       => 'A'
23221          , p_switch_side_flag           => 'N'
23222          , p_merge_duplicate_code       => 'N'
23223          );
23224    --
23225    l_acc_rev_natural_side_code := 'C';  -- 4262811
23226    -- 
23227    --
23228    -- set accounting line type info
23229    --
23230    xla_ae_lines_pkg.SetAcctLineType
23231       (p_component_type             => l_component_type
23232       ,p_event_type_code            => l_event_type_code
23233       ,p_line_definition_owner_code => l_line_definition_owner_code
23234       ,p_line_definition_code       => l_line_definition_code
23235       ,p_accounting_line_code       => l_component_code
23236       ,p_accounting_line_type_code  => l_component_type_code
23237       ,p_accounting_line_appl_id    => l_component_appl_id
23238       ,p_amb_context_code           => l_amb_context_code
23239       ,p_entity_code                => l_entity_code
23240       ,p_event_class_code           => l_event_class_code);
23241    --
23242    -- set accounting class
23243    --
23244    xla_ae_lines_pkg.SetAcctClass(
23245            p_accounting_class_code  => 'PURCHASE_ORDER'
23246          , p_ae_header_id           => l_ae_header_id
23247          );
23248 
23249    --
23250    -- set rounding class
23251    --
23252    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23253                       'PURCHASE_ORDER';
23254 
23255    --
23256    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23257    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23258    --
23259    -- bulk performance
23260    --
23261    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23262 
23263    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23264       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23265 
23266    -- 4955764
23267    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23268       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23269 
23270    -- 4458381 Public Sector Enh
23271    
23272    --
23273    -- set accounting attributes for the line type
23274    --
23275    l_entered_amt_idx := 23;
23276    l_accted_amt_idx  := 25;
23277    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23278    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23279    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
23280    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
23281    l_rec_acct_attrs.array_num_value(2)  := 
23282 xla_ae_sources_pkg.GetSystemSourceNum(
23283    p_source_code           => 'XLA_EVENT_APPL_ID'
23284  , p_source_type_code      => 'Y'
23285  , p_source_application_id =>  602
23286 );
23287    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
23288    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
23289    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
23290    l_rec_acct_attrs.array_char_value(4)  := 
23291 xla_ae_sources_pkg.GetSystemSourceChar(
23292    p_source_code           => 'XLA_ENTITY_CODE'
23293  , p_source_type_code      => 'Y'
23294  , p_source_application_id =>  602
23295 );
23296    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
23297    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
23298    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
23299    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
23300    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
23301    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
23302    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23303    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
23304    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
23305    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
23306    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
23307    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
23308    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23309    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
23310    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
23311    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
23312    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
23313    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
23314    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
23315    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
23316    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
23317    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
23318    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
23319    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
23320    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
23321    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
23322    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
23323    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
23324    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
23325    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
23326    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
23327    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
23328    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
23329    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
23330    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
23331    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
23332    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
23333    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
23334    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
23335    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
23336    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
23337    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
23338    l_rec_acct_attrs.array_acct_attr_code(26) := 'REVERSED_DISTRIBUTION_ID1';
23339    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_24);
23340    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_TYPE';
23341    l_rec_acct_attrs.array_char_value(27)  := p_source_22;
23342    l_rec_acct_attrs.array_acct_attr_code(28) := 'UPG_CR_ENC_TYPE_ID';
23343    l_rec_acct_attrs.array_num_value(28)  := p_source_32;
23344    l_rec_acct_attrs.array_acct_attr_code(29) := 'UPG_DR_ENC_TYPE_ID';
23345    l_rec_acct_attrs.array_num_value(29)  := p_source_32;
23346 
23347    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23348    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23349 
23350    ---------------------------------------------------------------------------------------------------------------
23351    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23352    ---------------------------------------------------------------------------------------------------------------
23353    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23354 
23355    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23356    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23357 
23358    IF xla_accounting_cache_pkg.GetValueChar
23359          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23360          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23361    AND l_bflow_method_code = 'PRIOR_ENTRY'
23362 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23363    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23364          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23365        )
23366    THEN
23367          xla_ae_lines_pkg.BflowUpgEntry
23368            (p_business_method_code    => l_bflow_method_code
23369            ,p_business_class_code     => l_bflow_class_code
23370            ,p_balance_type            => l_balance_type_code);
23371    ELSE
23372       NULL;
23373 XLA_AE_LINES_PKG.business_flow_validation(
23374                                 p_business_method_code     => l_bflow_method_code
23375                                ,p_business_class_code      => l_bflow_class_code
23376                                ,p_inherit_description_flag => l_inherit_desc_flag);
23377    END IF;
23378 
23379    --
23380    -- call analytical criteria
23381    --
23382    -- Inherited Analytical Criteria for business flow method of Prior Entry.
23383    --
23384    -- call description
23385    --
23386    -- No description or it is inherited.
23387    --
23388    -- call ADRs
23389    -- Bug 4922099
23390    --
23391    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23392         (NVL(l_actual_upg_option, 'N') = 'O') OR
23393         (NVL(l_enc_upg_option, 'N') = 'O')
23394       )
23395    THEN
23396    NULL;
23397    --
23398    --
23399    
23400    --
23401    --
23402    END IF;
23403    --
23404    -- Bug 4922099
23405    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23406           (NVL(l_enc_upg_option, 'N') = 'O')
23407         ) AND
23408         (l_bflow_method_code = 'PRIOR_ENTRY')
23409       )
23410    THEN
23411       IF
23412       --
23413       1 = 1
23414       --
23415       THEN
23416       xla_accounting_err_pkg.build_message
23417                                     (p_appli_s_name            => 'XLA'
23418                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23419                                     ,p_token_1                 => 'LINE_NUMBER'
23420                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23421                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23422                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23423                                                                              l_component_type
23424                                                                             ,l_component_code
23425                                                                             ,l_component_type_code
23426                                                                             ,l_component_appl_id
23427                                                                             ,l_amb_context_code
23428                                                                             ,l_entity_code
23429                                                                             ,l_event_class_code
23430                                                                            )
23431                                     ,p_token_3                 => 'OWNER'
23432                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23433                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23434                                                                           ,p_lookup_code    => l_component_type_code
23435                                                                          )
23436                                     ,p_token_4                 => 'PRODUCT_NAME'
23437                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23438                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23439                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23440                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23441                                     ,p_ae_header_id            =>  NULL
23442                                        );
23443 
23444         IF (C_LEVEL_ERROR>= g_log_level) THEN
23445                  trace
23446                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23447                       ,p_level    => C_LEVEL_ERROR
23448                       ,p_module   => l_log_module);
23449         END IF;
23450       END IF;
23451    END IF;
23452    --
23453    --
23454    ------------------------------------------------------------------------------------------------
23455    -- 4219869 Business Flow
23456    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23457    -- Prior Entry.  Currently, the following code is always generated.
23458    ------------------------------------------------------------------------------------------------
23459    -- No ValidateCurrentLine for business flow method of Prior Entry
23460 
23461    ------------------------------------------------------------------------------------
23462    -- 4219869 Business Flow
23463    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23464    ------------------------------------------------------------------------------------
23465    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23466 
23467    ----------------------------------------------------------------------------------
23468    -- 4219869 Business Flow
23469    -- Update journal entry status -- Need to generate this within IF <condition>
23470    ----------------------------------------------------------------------------------
23471    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23472          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23473          ,p_balance_type_code => l_balance_type_code
23474          );
23475 
23476    -------------------------------------------------------------------------------------------
23477    -- 4262811 - Generate the Accrual Reversal lines
23478    -------------------------------------------------------------------------------------------
23479    BEGIN
23480       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23481                               (g_array_event(p_event_id).array_value_num('header_index'));
23482       IF l_acc_rev_flag IS NULL THEN
23483          l_acc_rev_flag := 'N';
23484       END IF;
23485    EXCEPTION
23486       WHEN OTHERS THEN
23487          l_acc_rev_flag := 'N';
23488    END;
23489    --
23490    IF (l_acc_rev_flag = 'Y') THEN
23491 
23492        -- 4645092  ------------------------------------------------------------------------------
23493        -- To allow MPA report to determine if it should generate report process
23494        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23495        ------------------------------------------------------------------------------------------
23496 
23497        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23498        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23499 
23500        --
23501        -- Update the line information that should be overwritten
23502        --
23503        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23504                                          p_header_num   => 1);
23505        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23506 
23507        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23508 
23509        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23510           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23511        END IF;
23512 
23513       --
23514       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23515       --
23516       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23517           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23518       ELSE
23519           ---------------------------------------------------------------------------------------------------
23520           -- 4262811a Switch Sign
23521           ---------------------------------------------------------------------------------------------------
23522           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23523           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23524                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23525           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23526                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23527           -- 5132302
23528           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23529                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23530 
23531       END IF;
23532 
23533       -- 4955764
23534       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23535       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23536 
23537 
23538       XLA_AE_LINES_PKG.ValidateCurrentLine;
23539       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23540 
23541       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23542                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23543                ,p_balance_type_code => l_balance_type_code);
23544 
23545    END IF;
23546 
23547    -----------------------------------------------------------------------------------------
23548    -- 4262811 Multiperiod Accounting
23549    -----------------------------------------------------------------------------------------
23550      -- No MPA option is assigned.
23551 
23552 
23553 END IF;
23554 END IF;
23555 --
23556 
23557 --
23558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23559    trace
23560       (p_msg      => 'END of AcctLineType_47'
23561       ,p_level    => C_LEVEL_PROCEDURE
23562       ,p_module   => l_log_module);
23563 END IF;
23564 --
23565 EXCEPTION
23566   WHEN xla_exceptions_pkg.application_exception THEN
23567       RAISE;
23568   WHEN OTHERS THEN
23569        xla_exceptions_pkg.raise_message
23570            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_47');
23571 END AcctLineType_47;
23572 --
23573 
23574 ---------------------------------------
23575 --
23576 -- PRIVATE FUNCTION
23577 --         AcctLineType_48
23578 --
23579 ---------------------------------------
23580 PROCEDURE AcctLineType_48 (
23581   p_application_id        IN NUMBER
23582  ,p_event_id              IN NUMBER
23583  ,p_calculate_acctd_flag  IN VARCHAR2
23584  ,p_calculate_g_l_flag    IN VARCHAR2
23585  ,p_actual_flag           IN OUT VARCHAR2
23586  ,p_balance_type_code     OUT VARCHAR2
23587  ,p_gain_or_loss_ref      OUT VARCHAR2
23588  
23589 --Journal entry Line Description
23590  , p_source_3            IN VARCHAR2
23591 --Federal Fund Category
23592  , p_source_7            IN VARCHAR2
23593 --Federal Fund Expired Status
23594  , p_source_8            IN VARCHAR2
23595 --Budget Account
23596  , p_source_9            IN NUMBER
23597 --Federal Prior Year Flag
23598  , p_source_10            IN VARCHAR2
23599 --Federal Net Pya Adj Amt
23600  , p_source_11            IN NUMBER
23601 --Main Or Backing Code
23602  , p_source_13            IN VARCHAR2
23603 --Accounting Reversal Flag
23604  , p_source_15            IN VARCHAR2
23605 --Distribution Link Type
23606  , p_source_17            IN VARCHAR2
23607 --PO Distribution Identifier
23608  , p_source_19            IN NUMBER
23609 --Applied To Application Identifier
23610  , p_source_21            IN NUMBER
23611 --Applied To Distribution Link Type
23612  , p_source_22            IN VARCHAR2
23613 --Applied To Entity Code
23614  , p_source_23            IN VARCHAR2
23615 --Applied To Distribution Identifier 1
23616  , p_source_24            IN NUMBER
23617 --Applied To Header Identifier 1
23618  , p_source_25            IN NUMBER
23619 --Entered Amount
23620  , p_source_26            IN NUMBER
23621 --Currency Code
23622  , p_source_27            IN VARCHAR2
23623 --Accounted Amount
23624  , p_source_28            IN NUMBER
23625 --PO Encumbrance Upgrade Option
23626  , p_source_29            IN VARCHAR2
23627 --PO Upgrade Encumbrance Type Identifier
23628  , p_source_32            IN NUMBER
23629 --Currency Conversion Date
23630  , p_source_35            IN DATE
23631 --Currency Conversion Rate
23632  , p_source_36            IN NUMBER
23633 --Currency Conversion Type
23634  , p_source_37            IN VARCHAR2
23635 --PO Release Identifier
23636  , p_source_41            IN NUMBER
23637 )
23638 IS
23639 
23640 l_component_type              VARCHAR2(80);
23641 l_component_code              VARCHAR2(30);
23642 l_component_type_code         VARCHAR2(1);
23643 l_component_appl_id           INTEGER;
23644 l_amb_context_code            VARCHAR2(30);
23645 l_entity_code                 VARCHAR2(30);
23646 l_event_class_code            VARCHAR2(30);
23647 l_ae_header_id                NUMBER;
23648 l_event_type_code             VARCHAR2(30);
23649 l_line_definition_code        VARCHAR2(30);
23650 l_line_definition_owner_code  VARCHAR2(1);
23651 --
23652 -- adr variables
23653 l_segment                     VARCHAR2(30);
23654 l_ccid                        NUMBER;
23655 l_adr_transaction_coa_id      NUMBER;
23656 l_adr_accounting_coa_id       NUMBER;
23657 l_adr_flexfield_segment_code  VARCHAR2(30);
23658 l_adr_flex_value_set_id       NUMBER;
23659 l_adr_value_type_code         VARCHAR2(30);
23660 l_adr_value_combination_id    NUMBER;
23661 l_adr_value_segment_code      VARCHAR2(30);
23662 
23663 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23664 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23665 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23666 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23667 
23668 -- 4262811 Variables ------------------------------------------------------------------------------------------
23669 l_entered_amt_idx             NUMBER;
23670 l_accted_amt_idx              NUMBER;
23671 l_acc_rev_flag                VARCHAR2(1);
23672 l_accrual_line_num            NUMBER;
23673 l_tmp_amt                     NUMBER;
23674 l_acc_rev_natural_side_code   VARCHAR2(1);
23675 
23676 l_num_entries                 NUMBER;
23677 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23678 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23679 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23680 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23681 l_recog_line_1                NUMBER;
23682 l_recog_line_2                NUMBER;
23683 
23684 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23685 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23686 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23687 
23688 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23689 
23690 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23691 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23692 
23693 ---------------------------------------------------------------------------------------------------------------
23694 
23695 
23696 --
23697 -- bulk performance
23698 --
23699 l_balance_type_code           VARCHAR2(1);
23700 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23701 l_log_module                  VARCHAR2(240);
23702 
23703 --
23704 -- Upgrade strategy
23705 --
23706 l_actual_upg_option           VARCHAR2(1);
23707 l_enc_upg_option           VARCHAR2(1);
23708 
23709 --
23710 BEGIN
23711 --
23712 IF g_log_enabled THEN
23713       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
23714 END IF;
23715 --
23716 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23717 
23718       trace
23719          (p_msg      => 'BEGIN of AcctLineType_48'
23720          ,p_level    => C_LEVEL_PROCEDURE
23721          ,p_module   => l_log_module);
23722 
23723 END IF;
23724 --
23725 l_component_type             := 'AMB_JLT';
23726 l_component_code             := 'FV_REL_CANCEL_PYA_DR';
23727 l_component_type_code        := 'S';
23728 l_component_appl_id          :=  201;
23729 l_amb_context_code           := 'DEFAULT';
23730 l_entity_code                := 'RELEASE';
23731 l_event_class_code           := 'RELEASE';
23732 l_event_type_code            := 'RELEASE_ALL';
23733 l_line_definition_owner_code := 'S';
23734 l_line_definition_code       := 'FV_RELEASE_ALL';
23735 --
23736 l_balance_type_code          := 'A';
23737 l_segment                     := NULL;
23738 l_ccid                        := NULL;
23739 l_adr_transaction_coa_id      := NULL;
23740 l_adr_accounting_coa_id       := NULL;
23741 l_adr_flexfield_segment_code  := NULL;
23742 l_adr_flex_value_set_id       := NULL;
23743 l_adr_value_type_code         := NULL;
23744 l_adr_value_combination_id    := NULL;
23745 l_adr_value_segment_code      := NULL;
23746 
23747 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23748 l_bflow_class_code           := '';    -- 4219869 Business Flow
23749 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23750 l_budgetary_control_flag     := 'Y';
23751 
23752 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23753 l_bflow_applied_to_amt       := NULL; -- 5132302
23754 l_entered_amt_idx            := NULL;          -- 4262811
23755 l_accted_amt_idx             := NULL;          -- 4262811
23756 l_acc_rev_flag               := NULL;          -- 4262811
23757 l_accrual_line_num           := NULL;          -- 4262811
23758 l_tmp_amt                    := NULL;          -- 4262811
23759 --
23760  
23761 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23762     l_balance_type_code <> 'B' THEN
23763 IF NVL(
23764 xla_ae_sources_pkg.GetSystemSourceChar(
23765    p_source_code           => 'XLA_EVENT_TYPE_CODE'
23766  , p_source_type_code      => 'Y'
23767  , p_source_application_id =>  602
23768 ),'
23769 ') =  'RELEASE_CANCELLED' AND 
23770 NVL(p_source_13,'
23771 ') =  'M' AND 
23772 NVL(p_source_10,'
23773 ') =  'Y'
23774  THEN 
23775 
23776    --
23777    XLA_AE_LINES_PKG.SetNewLine;
23778 
23779    p_balance_type_code          := l_balance_type_code;
23780    -- set the flag so later we will know whether the gain loss line needs to be created
23781    
23782    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23783      p_actual_flag :='A';
23784    END IF;
23785 
23786    --
23787    -- bulk performance
23788    --
23789    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23790                                       p_header_num   => 0); -- 4262811
23791    --
23792    -- set accounting line options
23793    --
23794    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23795            p_natural_side_code          => 'D'
23796          , p_gain_or_loss_flag          => 'N'
23797          , p_gl_transfer_mode_code      => 'S'
23798          , p_acct_entry_type_code       => 'A'
23799          , p_switch_side_flag           => 'N'
23800          , p_merge_duplicate_code       => 'N'
23801          );
23802    --
23803    l_acc_rev_natural_side_code := 'C';  -- 4262811
23804    -- 
23805    --
23806    -- set accounting line type info
23807    --
23808    xla_ae_lines_pkg.SetAcctLineType
23809       (p_component_type             => l_component_type
23810       ,p_event_type_code            => l_event_type_code
23811       ,p_line_definition_owner_code => l_line_definition_owner_code
23812       ,p_line_definition_code       => l_line_definition_code
23813       ,p_accounting_line_code       => l_component_code
23814       ,p_accounting_line_type_code  => l_component_type_code
23815       ,p_accounting_line_appl_id    => l_component_appl_id
23816       ,p_amb_context_code           => l_amb_context_code
23817       ,p_entity_code                => l_entity_code
23818       ,p_event_class_code           => l_event_class_code);
23819    --
23820    -- set accounting class
23821    --
23822    xla_ae_lines_pkg.SetAcctClass(
23823            p_accounting_class_code  => 'PURCHASE_ORDER'
23824          , p_ae_header_id           => l_ae_header_id
23825          );
23826 
23827    --
23828    -- set rounding class
23829    --
23830    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23831                       'PURCHASE_ORDER';
23832 
23833    --
23834    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23835    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23836    --
23837    -- bulk performance
23838    --
23839    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23840 
23841    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23842       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23843 
23844    -- 4955764
23845    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23846       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23847 
23848    -- 4458381 Public Sector Enh
23849    
23850    --
23851    -- set accounting attributes for the line type
23852    --
23853    l_entered_amt_idx := 23;
23854    l_accted_amt_idx  := 28;
23855    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23856    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23857    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
23858    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
23859    l_rec_acct_attrs.array_num_value(2)  := 
23860 xla_ae_sources_pkg.GetSystemSourceNum(
23861    p_source_code           => 'XLA_EVENT_APPL_ID'
23862  , p_source_type_code      => 'Y'
23863  , p_source_application_id =>  602
23864 );
23865    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
23866    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
23867    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
23868    l_rec_acct_attrs.array_char_value(4)  := 
23869 xla_ae_sources_pkg.GetSystemSourceChar(
23870    p_source_code           => 'XLA_ENTITY_CODE'
23871  , p_source_type_code      => 'Y'
23872  , p_source_application_id =>  602
23873 );
23874    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
23875    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
23876    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
23877    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
23878    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
23879    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
23880    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23881    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
23882    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
23883    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
23884    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
23885    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
23886    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23887    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
23888    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
23889    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
23890    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
23891    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
23892    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
23893    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
23894    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
23895    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
23896    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
23897    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
23898    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
23899    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
23900    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
23901    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
23902    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
23903    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
23904    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
23905    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
23906    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
23907    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
23908    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
23909    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
23910    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
23911    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
23912    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
23913    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
23914    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
23915    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
23916    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
23917    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
23918    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
23919    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
23920    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
23921    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
23922    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
23923    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
23924    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
23925    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
23926    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
23927    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
23928    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
23929    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
23930 
23931    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23932    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23933 
23934    ---------------------------------------------------------------------------------------------------------------
23935    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23936    ---------------------------------------------------------------------------------------------------------------
23937    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23938 
23939    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23940    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23941 
23942    IF xla_accounting_cache_pkg.GetValueChar
23943          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23944          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23945    AND l_bflow_method_code = 'PRIOR_ENTRY'
23946 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23947    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23948          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23949        )
23950    THEN
23951          xla_ae_lines_pkg.BflowUpgEntry
23952            (p_business_method_code    => l_bflow_method_code
23953            ,p_business_class_code     => l_bflow_class_code
23954            ,p_balance_type            => l_balance_type_code);
23955    ELSE
23956       NULL;
23957 -- No business flow processing for business flow method of NONE.
23958    END IF;
23959 
23960    --
23961    -- call analytical criteria
23962    --
23963    
23964    --
23965    -- call description
23966    --
23967    
23968 xla_ae_lines_pkg.SetLineDescription(
23969    p_ae_header_id => l_ae_header_id
23970   ,p_description  => Description_2 (
23971      p_application_id         => p_application_id
23972    , p_ae_header_id           => l_ae_header_id 
23973 , p_source_3 => p_source_3
23974    )
23975 );
23976 
23977 
23978    --
23979    -- call ADRs
23980    -- Bug 4922099
23981    --
23982    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23983         (NVL(l_actual_upg_option, 'N') = 'O') OR
23984         (NVL(l_enc_upg_option, 'N') = 'O')
23985       )
23986    THEN
23987    NULL;
23988    --
23989    --
23990    
23991   l_ccid := AcctDerRule_9(
23992            p_application_id           => p_application_id
23993          , p_ae_header_id             => l_ae_header_id 
23994 , p_source_9 => p_source_9
23995          , x_transaction_coa_id       => l_adr_transaction_coa_id
23996          , x_accounting_coa_id        => l_adr_accounting_coa_id
23997          , x_value_type_code          => l_adr_value_type_code
23998          , p_side                     => 'NA'
23999    );
24000 
24001    xla_ae_lines_pkg.set_ccid(
24002     p_code_combination_id          => l_ccid
24003   , p_value_type_code              => l_adr_value_type_code
24004   , p_transaction_coa_id           => l_adr_transaction_coa_id
24005   , p_accounting_coa_id            => l_adr_accounting_coa_id
24006   , p_adr_code                     => 'FV_ACCOUNT_RULE'
24007   , p_adr_type_code                => 'S'
24008   , p_component_type               => l_component_type
24009   , p_component_code               => l_component_code
24010   , p_component_type_code          => l_component_type_code
24011   , p_component_appl_id            => l_component_appl_id
24012   , p_amb_context_code             => l_amb_context_code
24013   , p_side                         => 'NA'
24014   );
24015 
24016 
24017    l_segment := AcctDerRule_12(
24018            p_application_id           => p_application_id
24019          , p_ae_header_id             => l_ae_header_id 
24020 , p_source_7 => p_source_7
24021 , p_source_8 => p_source_8
24022 , p_source_10 => p_source_10
24023 , p_source_11 => p_source_11
24024          , x_transaction_coa_id       => l_adr_transaction_coa_id
24025          , x_accounting_coa_id        => l_adr_accounting_coa_id
24026          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
24027          , x_flex_value_set_id        => l_adr_flex_value_set_id
24028          , x_value_type_code          => l_adr_value_type_code
24029          , x_value_combination_id     => l_adr_value_combination_id
24030          , x_value_segment_code       => l_adr_value_segment_code
24031          , p_side                     => 'NA'
24032          , p_override_seg_flag        => 'Y'
24033    );
24034 
24035    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
24036 
24037       xla_ae_lines_pkg.set_segment(
24038           p_to_segment_code         => 'GL_ACCOUNT'
24039         , p_segment_value           => l_segment
24040         , p_from_segment_code       => l_adr_value_segment_code
24041         , p_from_combination_id     => l_adr_value_combination_id
24042         , p_value_type_code         => l_adr_value_type_code
24043         , p_transaction_coa_id      => l_adr_transaction_coa_id
24044         , p_accounting_coa_id       => l_adr_accounting_coa_id
24045         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
24046         , p_flex_value_set_id       => l_adr_flex_value_set_id
24047         , p_adr_code                => 'FV_PYA_46X002_487101'
24048         , p_adr_type_code           => 'S'
24049         , p_component_type          => l_component_type
24050         , p_component_code          => l_component_code
24051         , p_component_type_code     => l_component_type_code
24052         , p_component_appl_id       => l_component_appl_id
24053         , p_amb_context_code        => l_amb_context_code
24054         , p_entity_code             => 'RELEASE'
24055         , p_event_class_code        => 'RELEASE'
24056         , p_side                    => 'NA'
24057         );
24058 
24059   END IF;
24060 
24061    --
24062    --
24063    END IF;
24064    --
24065    -- Bug 4922099
24066    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24067           (NVL(l_enc_upg_option, 'N') = 'O')
24068         ) AND
24069         (l_bflow_method_code = 'PRIOR_ENTRY')
24070       )
24071    THEN
24072       IF
24073       --
24074       1 = 2
24075       --
24076       THEN
24077       xla_accounting_err_pkg.build_message
24078                                     (p_appli_s_name            => 'XLA'
24079                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24080                                     ,p_token_1                 => 'LINE_NUMBER'
24081                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24082                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24083                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24084                                                                              l_component_type
24085                                                                             ,l_component_code
24086                                                                             ,l_component_type_code
24087                                                                             ,l_component_appl_id
24088                                                                             ,l_amb_context_code
24089                                                                             ,l_entity_code
24090                                                                             ,l_event_class_code
24091                                                                            )
24092                                     ,p_token_3                 => 'OWNER'
24093                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24094                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24095                                                                           ,p_lookup_code    => l_component_type_code
24096                                                                          )
24097                                     ,p_token_4                 => 'PRODUCT_NAME'
24098                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24099                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24100                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24101                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24102                                     ,p_ae_header_id            =>  NULL
24103                                        );
24104 
24105         IF (C_LEVEL_ERROR>= g_log_level) THEN
24106                  trace
24107                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24108                       ,p_level    => C_LEVEL_ERROR
24109                       ,p_module   => l_log_module);
24110         END IF;
24111       END IF;
24112    END IF;
24113    --
24114    --
24115    ------------------------------------------------------------------------------------------------
24116    -- 4219869 Business Flow
24117    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24118    -- Prior Entry.  Currently, the following code is always generated.
24119    ------------------------------------------------------------------------------------------------
24120    XLA_AE_LINES_PKG.ValidateCurrentLine;
24121 
24122    ------------------------------------------------------------------------------------
24123    -- 4219869 Business Flow
24124    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24125    ------------------------------------------------------------------------------------
24126    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24127 
24128    ----------------------------------------------------------------------------------
24129    -- 4219869 Business Flow
24130    -- Update journal entry status -- Need to generate this within IF <condition>
24131    ----------------------------------------------------------------------------------
24132    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24133          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24134          ,p_balance_type_code => l_balance_type_code
24135          );
24136 
24137    -------------------------------------------------------------------------------------------
24138    -- 4262811 - Generate the Accrual Reversal lines
24139    -------------------------------------------------------------------------------------------
24140    BEGIN
24141       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24142                               (g_array_event(p_event_id).array_value_num('header_index'));
24143       IF l_acc_rev_flag IS NULL THEN
24144          l_acc_rev_flag := 'N';
24145       END IF;
24146    EXCEPTION
24147       WHEN OTHERS THEN
24148          l_acc_rev_flag := 'N';
24149    END;
24150    --
24151    IF (l_acc_rev_flag = 'Y') THEN
24152 
24153        -- 4645092  ------------------------------------------------------------------------------
24154        -- To allow MPA report to determine if it should generate report process
24155        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24156        ------------------------------------------------------------------------------------------
24157 
24158        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24159        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24160 
24161        --
24162        -- Update the line information that should be overwritten
24163        --
24164        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24165                                          p_header_num   => 1);
24166        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24167 
24168        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24169 
24170        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24171           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24172        END IF;
24173 
24174       --
24175       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24176       --
24177       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24178           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24179       ELSE
24180           ---------------------------------------------------------------------------------------------------
24181           -- 4262811a Switch Sign
24182           ---------------------------------------------------------------------------------------------------
24183           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24184           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24185                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24186           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24187                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24188           -- 5132302
24189           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24190                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24191 
24192       END IF;
24193 
24194       -- 4955764
24195       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24196       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24197 
24198 
24199       XLA_AE_LINES_PKG.ValidateCurrentLine;
24200       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24201 
24202       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24203                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24204                ,p_balance_type_code => l_balance_type_code);
24205 
24206    END IF;
24207 
24208    -----------------------------------------------------------------------------------------
24209    -- 4262811 Multiperiod Accounting
24210    -----------------------------------------------------------------------------------------
24211      -- No MPA option is assigned.
24212 
24213 
24214 END IF;
24215 END IF;
24216 --
24217 
24218 --
24219 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24220    trace
24221       (p_msg      => 'END of AcctLineType_48'
24222       ,p_level    => C_LEVEL_PROCEDURE
24223       ,p_module   => l_log_module);
24224 END IF;
24225 --
24226 EXCEPTION
24227   WHEN xla_exceptions_pkg.application_exception THEN
24228       RAISE;
24229   WHEN OTHERS THEN
24230        xla_exceptions_pkg.raise_message
24231            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_48');
24232 END AcctLineType_48;
24233 --
24234 
24235 ---------------------------------------
24236 --
24237 -- PRIVATE FUNCTION
24238 --         AcctLineType_49
24239 --
24240 ---------------------------------------
24241 PROCEDURE AcctLineType_49 (
24242   p_application_id        IN NUMBER
24243  ,p_event_id              IN NUMBER
24244  ,p_calculate_acctd_flag  IN VARCHAR2
24245  ,p_calculate_g_l_flag    IN VARCHAR2
24246  ,p_actual_flag           IN OUT VARCHAR2
24247  ,p_balance_type_code     OUT VARCHAR2
24248  ,p_gain_or_loss_ref      OUT VARCHAR2
24249  
24250 --Budget Account
24251  , p_source_9            IN NUMBER
24252 --Main Or Backing Code
24253  , p_source_13            IN VARCHAR2
24254 --Accounting Reversal Flag
24255  , p_source_15            IN VARCHAR2
24256 --Distribution Link Type
24257  , p_source_17            IN VARCHAR2
24258 --PO Distribution Identifier
24259  , p_source_19            IN NUMBER
24260 --Applied To Application Identifier
24261  , p_source_21            IN NUMBER
24262 --Applied To Distribution Link Type
24263  , p_source_22            IN VARCHAR2
24264 --Applied To Entity Code
24265  , p_source_23            IN VARCHAR2
24266 --Applied To Distribution Identifier 1
24267  , p_source_24            IN NUMBER
24268 --Applied To Header Identifier 1
24269  , p_source_25            IN NUMBER
24270 --Entered Amount
24271  , p_source_26            IN NUMBER
24272 --Currency Code
24273  , p_source_27            IN VARCHAR2
24274 --Accounted Amount
24275  , p_source_28            IN NUMBER
24276 --PO Encumbrance Upgrade Option
24277  , p_source_29            IN VARCHAR2
24278 --JFMIP Reference
24279  , p_source_31            IN VARCHAR2
24280 --PO Upgrade Encumbrance Type Identifier
24281  , p_source_32            IN NUMBER
24282 --Allocated to Main Document Distribution Type
24283  , p_source_33            IN VARCHAR2
24284 --Allocated to Main Document Distribution Identifier
24285  , p_source_34            IN NUMBER
24286 --PO Release Identifier
24287  , p_source_41            IN NUMBER
24288 )
24289 IS
24290 
24291 l_component_type              VARCHAR2(80);
24292 l_component_code              VARCHAR2(30);
24293 l_component_type_code         VARCHAR2(1);
24294 l_component_appl_id           INTEGER;
24295 l_amb_context_code            VARCHAR2(30);
24296 l_entity_code                 VARCHAR2(30);
24297 l_event_class_code            VARCHAR2(30);
24298 l_ae_header_id                NUMBER;
24299 l_event_type_code             VARCHAR2(30);
24300 l_line_definition_code        VARCHAR2(30);
24301 l_line_definition_owner_code  VARCHAR2(1);
24302 --
24303 -- adr variables
24304 l_segment                     VARCHAR2(30);
24305 l_ccid                        NUMBER;
24306 l_adr_transaction_coa_id      NUMBER;
24307 l_adr_accounting_coa_id       NUMBER;
24308 l_adr_flexfield_segment_code  VARCHAR2(30);
24309 l_adr_flex_value_set_id       NUMBER;
24310 l_adr_value_type_code         VARCHAR2(30);
24311 l_adr_value_combination_id    NUMBER;
24312 l_adr_value_segment_code      VARCHAR2(30);
24313 
24314 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24315 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24316 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24317 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24318 
24319 -- 4262811 Variables ------------------------------------------------------------------------------------------
24320 l_entered_amt_idx             NUMBER;
24321 l_accted_amt_idx              NUMBER;
24322 l_acc_rev_flag                VARCHAR2(1);
24323 l_accrual_line_num            NUMBER;
24324 l_tmp_amt                     NUMBER;
24325 l_acc_rev_natural_side_code   VARCHAR2(1);
24326 
24327 l_num_entries                 NUMBER;
24328 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24329 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24330 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24331 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24332 l_recog_line_1                NUMBER;
24333 l_recog_line_2                NUMBER;
24334 
24335 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24336 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24337 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24338 
24339 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24340 
24341 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24342 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24343 
24344 ---------------------------------------------------------------------------------------------------------------
24345 
24346 
24347 --
24348 -- bulk performance
24349 --
24350 l_balance_type_code           VARCHAR2(1);
24351 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24352 l_log_module                  VARCHAR2(240);
24353 
24354 --
24355 -- Upgrade strategy
24356 --
24357 l_actual_upg_option           VARCHAR2(1);
24358 l_enc_upg_option           VARCHAR2(1);
24359 
24360 --
24361 BEGIN
24362 --
24363 IF g_log_enabled THEN
24364       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
24365 END IF;
24366 --
24367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24368 
24369       trace
24370          (p_msg      => 'BEGIN of AcctLineType_49'
24371          ,p_level    => C_LEVEL_PROCEDURE
24372          ,p_module   => l_log_module);
24373 
24374 END IF;
24375 --
24376 l_component_type             := 'AMB_JLT';
24377 l_component_code             := 'FV_REL_CANCEL_REINST_PO_PA_CR';
24378 l_component_type_code        := 'S';
24379 l_component_appl_id          :=  201;
24380 l_amb_context_code           := 'DEFAULT';
24381 l_entity_code                := 'RELEASE';
24382 l_event_class_code           := 'RELEASE';
24383 l_event_type_code            := 'RELEASE_ALL';
24384 l_line_definition_owner_code := 'S';
24385 l_line_definition_code       := 'FV_RELEASE_ALL';
24386 --
24387 l_balance_type_code          := 'A';
24388 l_segment                     := NULL;
24389 l_ccid                        := NULL;
24390 l_adr_transaction_coa_id      := NULL;
24391 l_adr_accounting_coa_id       := NULL;
24392 l_adr_flexfield_segment_code  := NULL;
24393 l_adr_flex_value_set_id       := NULL;
24394 l_adr_value_type_code         := NULL;
24395 l_adr_value_combination_id    := NULL;
24396 l_adr_value_segment_code      := NULL;
24397 
24398 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
24399 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
24400 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
24401 l_budgetary_control_flag     := 'Y';
24402 
24403 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24404 l_bflow_applied_to_amt       := NULL; -- 5132302
24405 l_entered_amt_idx            := NULL;          -- 4262811
24406 l_accted_amt_idx             := NULL;          -- 4262811
24407 l_acc_rev_flag               := NULL;          -- 4262811
24408 l_accrual_line_num           := NULL;          -- 4262811
24409 l_tmp_amt                    := NULL;          -- 4262811
24410 --
24411  
24412 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24413     l_balance_type_code <> 'B' THEN
24414 IF (NVL(
24415 xla_ae_sources_pkg.GetSystemSourceChar(
24416    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24417  , p_source_type_code      => 'Y'
24418  , p_source_application_id =>  602
24419 ),'
24420 ') =  'RELEASE_CANCELLED' OR 
24421 NVL(
24422 xla_ae_sources_pkg.GetSystemSourceChar(
24423    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24424  , p_source_type_code      => 'Y'
24425  , p_source_application_id =>  602
24426 ),'
24427 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
24428 (NVL(p_source_13,'
24429 ') =  'B_PO' OR 
24430 NVL(p_source_13,'
24431 ') =  'B_PA')
24432  THEN 
24433 
24434    --
24435    XLA_AE_LINES_PKG.SetNewLine;
24436 
24437    p_balance_type_code          := l_balance_type_code;
24438    -- set the flag so later we will know whether the gain loss line needs to be created
24439    
24440    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24441      p_actual_flag :='A';
24442    END IF;
24443 
24444    --
24445    -- bulk performance
24446    --
24447    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24448                                       p_header_num   => 0); -- 4262811
24449    --
24450    -- set accounting line options
24451    --
24452    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24453            p_natural_side_code          => 'C'
24454          , p_gain_or_loss_flag          => 'N'
24455          , p_gl_transfer_mode_code      => 'S'
24456          , p_acct_entry_type_code       => 'A'
24457          , p_switch_side_flag           => 'N'
24458          , p_merge_duplicate_code       => 'N'
24459          );
24460    --
24461    l_acc_rev_natural_side_code := 'D';  -- 4262811
24462    -- 
24463    --
24464    -- set accounting line type info
24465    --
24466    xla_ae_lines_pkg.SetAcctLineType
24467       (p_component_type             => l_component_type
24468       ,p_event_type_code            => l_event_type_code
24469       ,p_line_definition_owner_code => l_line_definition_owner_code
24470       ,p_line_definition_code       => l_line_definition_code
24471       ,p_accounting_line_code       => l_component_code
24472       ,p_accounting_line_type_code  => l_component_type_code
24473       ,p_accounting_line_appl_id    => l_component_appl_id
24474       ,p_amb_context_code           => l_amb_context_code
24475       ,p_entity_code                => l_entity_code
24476       ,p_event_class_code           => l_event_class_code);
24477    --
24478    -- set accounting class
24479    --
24480    xla_ae_lines_pkg.SetAcctClass(
24481            p_accounting_class_code  => 'PURCHASE_ORDER'
24482          , p_ae_header_id           => l_ae_header_id
24483          );
24484 
24485    --
24486    -- set rounding class
24487    --
24488    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24489                       'PURCHASE_ORDER';
24490 
24491    --
24492    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24493    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24494    --
24495    -- bulk performance
24496    --
24497    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24498 
24499    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24500       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24501 
24502    -- 4955764
24503    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24504       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24505 
24506    -- 4458381 Public Sector Enh
24507    
24508    --
24509    -- set accounting attributes for the line type
24510    --
24511    l_entered_amt_idx := 23;
24512    l_accted_amt_idx  := 25;
24513    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24514    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24515    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
24516    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
24517    l_rec_acct_attrs.array_num_value(2)  := 
24518 xla_ae_sources_pkg.GetSystemSourceNum(
24519    p_source_code           => 'XLA_EVENT_APPL_ID'
24520  , p_source_type_code      => 'Y'
24521  , p_source_application_id =>  602
24522 );
24523    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
24524    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
24525    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
24526    l_rec_acct_attrs.array_char_value(4)  := 
24527 xla_ae_sources_pkg.GetSystemSourceChar(
24528    p_source_code           => 'XLA_ENTITY_CODE'
24529  , p_source_type_code      => 'Y'
24530  , p_source_application_id =>  602
24531 );
24532    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
24533    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
24534    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
24535    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
24536    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
24537    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
24538    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
24539    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
24540    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
24541    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
24542    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
24543    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
24544    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
24545    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
24546    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
24547    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
24548    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
24549    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
24550    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
24551    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
24552    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
24553    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
24554    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
24555    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
24556    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
24557    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
24558    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
24559    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
24560    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
24561    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
24562    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
24563    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
24564    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
24565    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
24566    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
24567    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
24568    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
24569    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
24570    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
24571    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
24572    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
24573    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
24574    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
24575    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
24576    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
24577    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
24578    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
24579    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
24580    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
24581    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
24582    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
24583    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
24584    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
24585    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
24586 
24587    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24588    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24589 
24590    ---------------------------------------------------------------------------------------------------------------
24591    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24592    ---------------------------------------------------------------------------------------------------------------
24593    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24594 
24595    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24596    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24597 
24598    IF xla_accounting_cache_pkg.GetValueChar
24599          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24600          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24601    AND l_bflow_method_code = 'PRIOR_ENTRY'
24602 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24603    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24604          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24605        )
24606    THEN
24607          xla_ae_lines_pkg.BflowUpgEntry
24608            (p_business_method_code    => l_bflow_method_code
24609            ,p_business_class_code     => l_bflow_class_code
24610            ,p_balance_type            => l_balance_type_code);
24611    ELSE
24612       NULL;
24613 XLA_AE_LINES_PKG.business_flow_validation(
24614                                 p_business_method_code     => l_bflow_method_code
24615                                ,p_business_class_code      => l_bflow_class_code
24616                                ,p_inherit_description_flag => l_inherit_desc_flag);
24617    END IF;
24618 
24619    --
24620    -- call analytical criteria
24621    --
24622    -- Inherited Analytical Criteria for business flow method of Prior Entry.
24623    --
24624    -- call description
24625    --
24626    -- No description or it is inherited.
24627    --
24628    -- call ADRs
24629    -- Bug 4922099
24630    --
24631    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24632         (NVL(l_actual_upg_option, 'N') = 'O') OR
24633         (NVL(l_enc_upg_option, 'N') = 'O')
24634       )
24635    THEN
24636    NULL;
24637    --
24638    --
24639    
24640    --
24641    --
24642    END IF;
24643    --
24644    -- Bug 4922099
24645    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24646           (NVL(l_enc_upg_option, 'N') = 'O')
24647         ) AND
24648         (l_bflow_method_code = 'PRIOR_ENTRY')
24649       )
24650    THEN
24651       IF
24652       --
24653       1 = 1
24654       --
24655       THEN
24656       xla_accounting_err_pkg.build_message
24657                                     (p_appli_s_name            => 'XLA'
24658                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24659                                     ,p_token_1                 => 'LINE_NUMBER'
24660                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24661                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24662                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24663                                                                              l_component_type
24664                                                                             ,l_component_code
24665                                                                             ,l_component_type_code
24666                                                                             ,l_component_appl_id
24667                                                                             ,l_amb_context_code
24668                                                                             ,l_entity_code
24669                                                                             ,l_event_class_code
24670                                                                            )
24671                                     ,p_token_3                 => 'OWNER'
24672                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24673                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24674                                                                           ,p_lookup_code    => l_component_type_code
24675                                                                          )
24676                                     ,p_token_4                 => 'PRODUCT_NAME'
24677                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24678                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24679                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24680                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24681                                     ,p_ae_header_id            =>  NULL
24682                                        );
24683 
24684         IF (C_LEVEL_ERROR>= g_log_level) THEN
24685                  trace
24686                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24687                       ,p_level    => C_LEVEL_ERROR
24688                       ,p_module   => l_log_module);
24689         END IF;
24690       END IF;
24691    END IF;
24692    --
24693    --
24694    ------------------------------------------------------------------------------------------------
24695    -- 4219869 Business Flow
24696    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24697    -- Prior Entry.  Currently, the following code is always generated.
24698    ------------------------------------------------------------------------------------------------
24699    -- No ValidateCurrentLine for business flow method of Prior Entry
24700 
24701    ------------------------------------------------------------------------------------
24702    -- 4219869 Business Flow
24703    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24704    ------------------------------------------------------------------------------------
24705    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24706 
24707    ----------------------------------------------------------------------------------
24708    -- 4219869 Business Flow
24709    -- Update journal entry status -- Need to generate this within IF <condition>
24710    ----------------------------------------------------------------------------------
24711    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24712          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24713          ,p_balance_type_code => l_balance_type_code
24714          );
24715 
24716    -------------------------------------------------------------------------------------------
24717    -- 4262811 - Generate the Accrual Reversal lines
24718    -------------------------------------------------------------------------------------------
24719    BEGIN
24720       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24721                               (g_array_event(p_event_id).array_value_num('header_index'));
24722       IF l_acc_rev_flag IS NULL THEN
24723          l_acc_rev_flag := 'N';
24724       END IF;
24725    EXCEPTION
24726       WHEN OTHERS THEN
24727          l_acc_rev_flag := 'N';
24728    END;
24729    --
24730    IF (l_acc_rev_flag = 'Y') THEN
24731 
24732        -- 4645092  ------------------------------------------------------------------------------
24733        -- To allow MPA report to determine if it should generate report process
24734        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24735        ------------------------------------------------------------------------------------------
24736 
24737        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24738        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24739 
24740        --
24741        -- Update the line information that should be overwritten
24742        --
24743        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24744                                          p_header_num   => 1);
24745        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24746 
24747        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24748 
24749        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24750           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24751        END IF;
24752 
24753       --
24754       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24755       --
24756       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24757           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24758       ELSE
24759           ---------------------------------------------------------------------------------------------------
24760           -- 4262811a Switch Sign
24761           ---------------------------------------------------------------------------------------------------
24762           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24763           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24764                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24765           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24766                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24767           -- 5132302
24768           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24769                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24770 
24771       END IF;
24772 
24773       -- 4955764
24774       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24775       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24776 
24777 
24778       XLA_AE_LINES_PKG.ValidateCurrentLine;
24779       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24780 
24781       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24782                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24783                ,p_balance_type_code => l_balance_type_code);
24784 
24785    END IF;
24786 
24787    -----------------------------------------------------------------------------------------
24788    -- 4262811 Multiperiod Accounting
24789    -----------------------------------------------------------------------------------------
24790      -- No MPA option is assigned.
24791 
24792 
24793 END IF;
24794 END IF;
24795 --
24796 
24797 --
24798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24799    trace
24800       (p_msg      => 'END of AcctLineType_49'
24801       ,p_level    => C_LEVEL_PROCEDURE
24802       ,p_module   => l_log_module);
24803 END IF;
24804 --
24805 EXCEPTION
24806   WHEN xla_exceptions_pkg.application_exception THEN
24807       RAISE;
24808   WHEN OTHERS THEN
24809        xla_exceptions_pkg.raise_message
24810            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_49');
24811 END AcctLineType_49;
24812 --
24813 
24814 ---------------------------------------
24815 --
24816 -- PRIVATE FUNCTION
24817 --         AcctLineType_50
24818 --
24819 ---------------------------------------
24820 PROCEDURE AcctLineType_50 (
24821   p_application_id        IN NUMBER
24822  ,p_event_id              IN NUMBER
24823  ,p_calculate_acctd_flag  IN VARCHAR2
24824  ,p_calculate_g_l_flag    IN VARCHAR2
24825  ,p_actual_flag           IN OUT VARCHAR2
24826  ,p_balance_type_code     OUT VARCHAR2
24827  ,p_gain_or_loss_ref      OUT VARCHAR2
24828  
24829 --Budget Account
24830  , p_source_9            IN NUMBER
24831 --Main Or Backing Code
24832  , p_source_13            IN VARCHAR2
24833 --Accounting Reversal Flag
24834  , p_source_15            IN VARCHAR2
24835 --Distribution Link Type
24836  , p_source_17            IN VARCHAR2
24837 --PO Distribution Identifier
24838  , p_source_19            IN NUMBER
24839 --Applied To Application Identifier
24840  , p_source_21            IN NUMBER
24841 --Applied To Distribution Link Type
24842  , p_source_22            IN VARCHAR2
24843 --Applied To Entity Code
24844  , p_source_23            IN VARCHAR2
24845 --Applied To Distribution Identifier 1
24846  , p_source_24            IN NUMBER
24847 --Applied To Header Identifier 1
24848  , p_source_25            IN NUMBER
24849 --Entered Amount
24850  , p_source_26            IN NUMBER
24851 --Currency Code
24852  , p_source_27            IN VARCHAR2
24853 --Accounted Amount
24854  , p_source_28            IN NUMBER
24855 --PO Encumbrance Upgrade Option
24856  , p_source_29            IN VARCHAR2
24857 --JFMIP Reference
24858  , p_source_31            IN VARCHAR2
24859 --PO Upgrade Encumbrance Type Identifier
24860  , p_source_32            IN NUMBER
24861 --Allocated to Main Document Distribution Type
24862  , p_source_33            IN VARCHAR2
24863 --Allocated to Main Document Distribution Identifier
24864  , p_source_34            IN NUMBER
24865 --PO Release Identifier
24866  , p_source_41            IN NUMBER
24867 )
24868 IS
24869 
24870 l_component_type              VARCHAR2(80);
24871 l_component_code              VARCHAR2(30);
24872 l_component_type_code         VARCHAR2(1);
24873 l_component_appl_id           INTEGER;
24874 l_amb_context_code            VARCHAR2(30);
24875 l_entity_code                 VARCHAR2(30);
24876 l_event_class_code            VARCHAR2(30);
24877 l_ae_header_id                NUMBER;
24878 l_event_type_code             VARCHAR2(30);
24879 l_line_definition_code        VARCHAR2(30);
24880 l_line_definition_owner_code  VARCHAR2(1);
24881 --
24882 -- adr variables
24883 l_segment                     VARCHAR2(30);
24884 l_ccid                        NUMBER;
24885 l_adr_transaction_coa_id      NUMBER;
24886 l_adr_accounting_coa_id       NUMBER;
24887 l_adr_flexfield_segment_code  VARCHAR2(30);
24888 l_adr_flex_value_set_id       NUMBER;
24889 l_adr_value_type_code         VARCHAR2(30);
24890 l_adr_value_combination_id    NUMBER;
24891 l_adr_value_segment_code      VARCHAR2(30);
24892 
24893 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24894 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24895 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24896 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24897 
24898 -- 4262811 Variables ------------------------------------------------------------------------------------------
24899 l_entered_amt_idx             NUMBER;
24900 l_accted_amt_idx              NUMBER;
24901 l_acc_rev_flag                VARCHAR2(1);
24902 l_accrual_line_num            NUMBER;
24903 l_tmp_amt                     NUMBER;
24904 l_acc_rev_natural_side_code   VARCHAR2(1);
24905 
24906 l_num_entries                 NUMBER;
24907 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24908 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24909 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24910 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24911 l_recog_line_1                NUMBER;
24912 l_recog_line_2                NUMBER;
24913 
24914 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24915 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24916 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24917 
24918 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24919 
24920 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24921 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24922 
24923 ---------------------------------------------------------------------------------------------------------------
24924 
24925 
24926 --
24927 -- bulk performance
24928 --
24929 l_balance_type_code           VARCHAR2(1);
24930 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24931 l_log_module                  VARCHAR2(240);
24932 
24933 --
24934 -- Upgrade strategy
24935 --
24936 l_actual_upg_option           VARCHAR2(1);
24937 l_enc_upg_option           VARCHAR2(1);
24938 
24939 --
24940 BEGIN
24941 --
24942 IF g_log_enabled THEN
24943       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
24944 END IF;
24945 --
24946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24947 
24948       trace
24949          (p_msg      => 'BEGIN of AcctLineType_50'
24950          ,p_level    => C_LEVEL_PROCEDURE
24951          ,p_module   => l_log_module);
24952 
24953 END IF;
24954 --
24955 l_component_type             := 'AMB_JLT';
24956 l_component_code             := 'FV_REL_CANCEL_REINST_PO_PA_DR';
24957 l_component_type_code        := 'S';
24958 l_component_appl_id          :=  201;
24959 l_amb_context_code           := 'DEFAULT';
24960 l_entity_code                := 'RELEASE';
24961 l_event_class_code           := 'RELEASE';
24962 l_event_type_code            := 'RELEASE_ALL';
24963 l_line_definition_owner_code := 'S';
24964 l_line_definition_code       := 'FV_RELEASE_ALL';
24965 --
24966 l_balance_type_code          := 'A';
24967 l_segment                     := NULL;
24968 l_ccid                        := NULL;
24969 l_adr_transaction_coa_id      := NULL;
24970 l_adr_accounting_coa_id       := NULL;
24971 l_adr_flexfield_segment_code  := NULL;
24972 l_adr_flex_value_set_id       := NULL;
24973 l_adr_value_type_code         := NULL;
24974 l_adr_value_combination_id    := NULL;
24975 l_adr_value_segment_code      := NULL;
24976 
24977 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
24978 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
24979 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
24980 l_budgetary_control_flag     := 'Y';
24981 
24982 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24983 l_bflow_applied_to_amt       := NULL; -- 5132302
24984 l_entered_amt_idx            := NULL;          -- 4262811
24985 l_accted_amt_idx             := NULL;          -- 4262811
24986 l_acc_rev_flag               := NULL;          -- 4262811
24987 l_accrual_line_num           := NULL;          -- 4262811
24988 l_tmp_amt                    := NULL;          -- 4262811
24989 --
24990  
24991 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24992     l_balance_type_code <> 'B' THEN
24993 IF (NVL(
24994 xla_ae_sources_pkg.GetSystemSourceChar(
24995    p_source_code           => 'XLA_EVENT_TYPE_CODE'
24996  , p_source_type_code      => 'Y'
24997  , p_source_application_id =>  602
24998 ),'
24999 ') =  'RELEASE_CANCELLED' OR 
25000 NVL(
25001 xla_ae_sources_pkg.GetSystemSourceChar(
25002    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25003  , p_source_type_code      => 'Y'
25004  , p_source_application_id =>  602
25005 ),'
25006 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
25007 (NVL(p_source_13,'
25008 ') =  'B_PO' OR 
25009 NVL(p_source_13,'
25010 ') =  'B_PA')
25011  THEN 
25012 
25013    --
25014    XLA_AE_LINES_PKG.SetNewLine;
25015 
25016    p_balance_type_code          := l_balance_type_code;
25017    -- set the flag so later we will know whether the gain loss line needs to be created
25018    
25019    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25020      p_actual_flag :='A';
25021    END IF;
25022 
25023    --
25024    -- bulk performance
25025    --
25026    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25027                                       p_header_num   => 0); -- 4262811
25028    --
25029    -- set accounting line options
25030    --
25031    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25032            p_natural_side_code          => 'D'
25033          , p_gain_or_loss_flag          => 'N'
25034          , p_gl_transfer_mode_code      => 'S'
25035          , p_acct_entry_type_code       => 'A'
25036          , p_switch_side_flag           => 'N'
25037          , p_merge_duplicate_code       => 'N'
25038          );
25039    --
25040    l_acc_rev_natural_side_code := 'C';  -- 4262811
25041    -- 
25042    --
25043    -- set accounting line type info
25044    --
25045    xla_ae_lines_pkg.SetAcctLineType
25046       (p_component_type             => l_component_type
25047       ,p_event_type_code            => l_event_type_code
25048       ,p_line_definition_owner_code => l_line_definition_owner_code
25049       ,p_line_definition_code       => l_line_definition_code
25050       ,p_accounting_line_code       => l_component_code
25051       ,p_accounting_line_type_code  => l_component_type_code
25052       ,p_accounting_line_appl_id    => l_component_appl_id
25053       ,p_amb_context_code           => l_amb_context_code
25054       ,p_entity_code                => l_entity_code
25055       ,p_event_class_code           => l_event_class_code);
25056    --
25057    -- set accounting class
25058    --
25059    xla_ae_lines_pkg.SetAcctClass(
25060            p_accounting_class_code  => 'PURCHASE_ORDER'
25061          , p_ae_header_id           => l_ae_header_id
25062          );
25063 
25064    --
25065    -- set rounding class
25066    --
25067    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25068                       'PURCHASE_ORDER';
25069 
25070    --
25071    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25072    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25073    --
25074    -- bulk performance
25075    --
25076    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25077 
25078    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25079       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25080 
25081    -- 4955764
25082    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25083       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25084 
25085    -- 4458381 Public Sector Enh
25086    
25087    --
25088    -- set accounting attributes for the line type
25089    --
25090    l_entered_amt_idx := 23;
25091    l_accted_amt_idx  := 25;
25092    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25093    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25094    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
25095    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
25096    l_rec_acct_attrs.array_num_value(2)  := 
25097 xla_ae_sources_pkg.GetSystemSourceNum(
25098    p_source_code           => 'XLA_EVENT_APPL_ID'
25099  , p_source_type_code      => 'Y'
25100  , p_source_application_id =>  602
25101 );
25102    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
25103    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
25104    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
25105    l_rec_acct_attrs.array_char_value(4)  := 
25106 xla_ae_sources_pkg.GetSystemSourceChar(
25107    p_source_code           => 'XLA_ENTITY_CODE'
25108  , p_source_type_code      => 'Y'
25109  , p_source_application_id =>  602
25110 );
25111    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
25112    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
25113    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
25114    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
25115    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
25116    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
25117    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
25118    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
25119    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
25120    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
25121    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
25122    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
25123    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
25124    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
25125    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
25126    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
25127    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
25128    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
25129    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
25130    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
25131    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
25132    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
25133    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
25134    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
25135    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
25136    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
25137    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
25138    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
25139    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
25140    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
25141    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
25142    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
25143    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
25144    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
25145    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
25146    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
25147    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
25148    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
25149    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
25150    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
25151    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
25152    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
25153    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
25154    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
25155    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
25156    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
25157    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
25158    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
25159    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
25160    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
25161    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
25162    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
25163    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
25164    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
25165 
25166    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25167    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25168 
25169    ---------------------------------------------------------------------------------------------------------------
25170    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25171    ---------------------------------------------------------------------------------------------------------------
25172    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25173 
25174    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25175    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25176 
25177    IF xla_accounting_cache_pkg.GetValueChar
25178          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25179          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25180    AND l_bflow_method_code = 'PRIOR_ENTRY'
25181 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25182    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25183          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25184        )
25185    THEN
25186          xla_ae_lines_pkg.BflowUpgEntry
25187            (p_business_method_code    => l_bflow_method_code
25188            ,p_business_class_code     => l_bflow_class_code
25189            ,p_balance_type            => l_balance_type_code);
25190    ELSE
25191       NULL;
25192 XLA_AE_LINES_PKG.business_flow_validation(
25193                                 p_business_method_code     => l_bflow_method_code
25194                                ,p_business_class_code      => l_bflow_class_code
25195                                ,p_inherit_description_flag => l_inherit_desc_flag);
25196    END IF;
25197 
25198    --
25199    -- call analytical criteria
25200    --
25201    -- Inherited Analytical Criteria for business flow method of Prior Entry.
25202    --
25203    -- call description
25204    --
25205    -- No description or it is inherited.
25206    --
25207    -- call ADRs
25208    -- Bug 4922099
25209    --
25210    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25211         (NVL(l_actual_upg_option, 'N') = 'O') OR
25212         (NVL(l_enc_upg_option, 'N') = 'O')
25213       )
25214    THEN
25215    NULL;
25216    --
25217    --
25218    
25219    --
25220    --
25221    END IF;
25222    --
25223    -- Bug 4922099
25224    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25225           (NVL(l_enc_upg_option, 'N') = 'O')
25226         ) AND
25227         (l_bflow_method_code = 'PRIOR_ENTRY')
25228       )
25229    THEN
25230       IF
25231       --
25232       1 = 1
25233       --
25234       THEN
25235       xla_accounting_err_pkg.build_message
25236                                     (p_appli_s_name            => 'XLA'
25237                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25238                                     ,p_token_1                 => 'LINE_NUMBER'
25239                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25240                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25241                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25242                                                                              l_component_type
25243                                                                             ,l_component_code
25244                                                                             ,l_component_type_code
25245                                                                             ,l_component_appl_id
25246                                                                             ,l_amb_context_code
25247                                                                             ,l_entity_code
25248                                                                             ,l_event_class_code
25249                                                                            )
25250                                     ,p_token_3                 => 'OWNER'
25251                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25252                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25253                                                                           ,p_lookup_code    => l_component_type_code
25254                                                                          )
25255                                     ,p_token_4                 => 'PRODUCT_NAME'
25256                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25257                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25258                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25259                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25260                                     ,p_ae_header_id            =>  NULL
25261                                        );
25262 
25263         IF (C_LEVEL_ERROR>= g_log_level) THEN
25264                  trace
25265                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25266                       ,p_level    => C_LEVEL_ERROR
25267                       ,p_module   => l_log_module);
25268         END IF;
25269       END IF;
25270    END IF;
25271    --
25272    --
25273    ------------------------------------------------------------------------------------------------
25274    -- 4219869 Business Flow
25275    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25276    -- Prior Entry.  Currently, the following code is always generated.
25277    ------------------------------------------------------------------------------------------------
25278    -- No ValidateCurrentLine for business flow method of Prior Entry
25279 
25280    ------------------------------------------------------------------------------------
25281    -- 4219869 Business Flow
25282    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25283    ------------------------------------------------------------------------------------
25284    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25285 
25286    ----------------------------------------------------------------------------------
25287    -- 4219869 Business Flow
25288    -- Update journal entry status -- Need to generate this within IF <condition>
25289    ----------------------------------------------------------------------------------
25290    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25291          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25292          ,p_balance_type_code => l_balance_type_code
25293          );
25294 
25295    -------------------------------------------------------------------------------------------
25296    -- 4262811 - Generate the Accrual Reversal lines
25297    -------------------------------------------------------------------------------------------
25298    BEGIN
25299       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25300                               (g_array_event(p_event_id).array_value_num('header_index'));
25301       IF l_acc_rev_flag IS NULL THEN
25302          l_acc_rev_flag := 'N';
25303       END IF;
25304    EXCEPTION
25305       WHEN OTHERS THEN
25306          l_acc_rev_flag := 'N';
25307    END;
25308    --
25309    IF (l_acc_rev_flag = 'Y') THEN
25310 
25311        -- 4645092  ------------------------------------------------------------------------------
25312        -- To allow MPA report to determine if it should generate report process
25313        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25314        ------------------------------------------------------------------------------------------
25315 
25316        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25317        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25318 
25319        --
25320        -- Update the line information that should be overwritten
25321        --
25322        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25323                                          p_header_num   => 1);
25324        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25325 
25326        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25327 
25328        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25329           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25330        END IF;
25331 
25332       --
25333       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25334       --
25335       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25336           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25337       ELSE
25338           ---------------------------------------------------------------------------------------------------
25339           -- 4262811a Switch Sign
25340           ---------------------------------------------------------------------------------------------------
25341           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25342           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25343                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25344           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25345                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25346           -- 5132302
25347           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25348                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25349 
25350       END IF;
25351 
25352       -- 4955764
25353       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25354       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25355 
25356 
25357       XLA_AE_LINES_PKG.ValidateCurrentLine;
25358       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25359 
25360       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25361                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25362                ,p_balance_type_code => l_balance_type_code);
25363 
25364    END IF;
25365 
25366    -----------------------------------------------------------------------------------------
25367    -- 4262811 Multiperiod Accounting
25368    -----------------------------------------------------------------------------------------
25369      -- No MPA option is assigned.
25370 
25371 
25372 END IF;
25373 END IF;
25374 --
25375 
25376 --
25377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25378    trace
25379       (p_msg      => 'END of AcctLineType_50'
25380       ,p_level    => C_LEVEL_PROCEDURE
25381       ,p_module   => l_log_module);
25382 END IF;
25383 --
25384 EXCEPTION
25385   WHEN xla_exceptions_pkg.application_exception THEN
25386       RAISE;
25387   WHEN OTHERS THEN
25388        xla_exceptions_pkg.raise_message
25389            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_50');
25390 END AcctLineType_50;
25391 --
25392 
25393 ---------------------------------------
25394 --
25395 -- PRIVATE FUNCTION
25396 --         AcctLineType_51
25397 --
25398 ---------------------------------------
25399 PROCEDURE AcctLineType_51 (
25400   p_application_id        IN NUMBER
25401  ,p_event_id              IN NUMBER
25402  ,p_calculate_acctd_flag  IN VARCHAR2
25403  ,p_calculate_g_l_flag    IN VARCHAR2
25404  ,p_actual_flag           IN OUT VARCHAR2
25405  ,p_balance_type_code     OUT VARCHAR2
25406  ,p_gain_or_loss_ref      OUT VARCHAR2
25407  
25408 --Budget Account
25409  , p_source_9            IN NUMBER
25410 --Main Or Backing Code
25411  , p_source_13            IN VARCHAR2
25412 --Accounting Reversal Flag
25413  , p_source_15            IN VARCHAR2
25414 --Distribution Link Type
25415  , p_source_17            IN VARCHAR2
25416 --PO Distribution Identifier
25417  , p_source_19            IN NUMBER
25418 --Applied To Application Identifier
25419  , p_source_21            IN NUMBER
25420 --Applied To Distribution Link Type
25421  , p_source_22            IN VARCHAR2
25422 --Applied To Entity Code
25423  , p_source_23            IN VARCHAR2
25424 --Applied To Distribution Identifier 1
25425  , p_source_24            IN NUMBER
25426 --Applied To Header Identifier 1
25427  , p_source_25            IN NUMBER
25428 --Entered Amount
25429  , p_source_26            IN NUMBER
25430 --Currency Code
25431  , p_source_27            IN VARCHAR2
25432 --Accounted Amount
25433  , p_source_28            IN NUMBER
25434 --PO Encumbrance Upgrade Option
25435  , p_source_29            IN VARCHAR2
25436 --JFMIP Reference
25437  , p_source_31            IN VARCHAR2
25438 --PO Upgrade Encumbrance Type Identifier
25439  , p_source_32            IN NUMBER
25440 --Allocated to Main Document Distribution Type
25441  , p_source_33            IN VARCHAR2
25442 --Allocated to Main Document Distribution Identifier
25443  , p_source_34            IN NUMBER
25444 --PO Release Identifier
25445  , p_source_41            IN NUMBER
25446 )
25447 IS
25448 
25449 l_component_type              VARCHAR2(80);
25450 l_component_code              VARCHAR2(30);
25451 l_component_type_code         VARCHAR2(1);
25452 l_component_appl_id           INTEGER;
25453 l_amb_context_code            VARCHAR2(30);
25454 l_entity_code                 VARCHAR2(30);
25455 l_event_class_code            VARCHAR2(30);
25456 l_ae_header_id                NUMBER;
25457 l_event_type_code             VARCHAR2(30);
25458 l_line_definition_code        VARCHAR2(30);
25459 l_line_definition_owner_code  VARCHAR2(1);
25460 --
25461 -- adr variables
25462 l_segment                     VARCHAR2(30);
25463 l_ccid                        NUMBER;
25464 l_adr_transaction_coa_id      NUMBER;
25465 l_adr_accounting_coa_id       NUMBER;
25466 l_adr_flexfield_segment_code  VARCHAR2(30);
25467 l_adr_flex_value_set_id       NUMBER;
25468 l_adr_value_type_code         VARCHAR2(30);
25469 l_adr_value_combination_id    NUMBER;
25470 l_adr_value_segment_code      VARCHAR2(30);
25471 
25472 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25473 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25474 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25475 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25476 
25477 -- 4262811 Variables ------------------------------------------------------------------------------------------
25478 l_entered_amt_idx             NUMBER;
25479 l_accted_amt_idx              NUMBER;
25480 l_acc_rev_flag                VARCHAR2(1);
25481 l_accrual_line_num            NUMBER;
25482 l_tmp_amt                     NUMBER;
25483 l_acc_rev_natural_side_code   VARCHAR2(1);
25484 
25485 l_num_entries                 NUMBER;
25486 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25487 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25488 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25489 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25490 l_recog_line_1                NUMBER;
25491 l_recog_line_2                NUMBER;
25492 
25493 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25494 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25495 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25496 
25497 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25498 
25499 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25500 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25501 
25502 ---------------------------------------------------------------------------------------------------------------
25503 
25504 
25505 --
25506 -- bulk performance
25507 --
25508 l_balance_type_code           VARCHAR2(1);
25509 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25510 l_log_module                  VARCHAR2(240);
25511 
25512 --
25513 -- Upgrade strategy
25514 --
25515 l_actual_upg_option           VARCHAR2(1);
25516 l_enc_upg_option           VARCHAR2(1);
25517 
25518 --
25519 BEGIN
25520 --
25521 IF g_log_enabled THEN
25522       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
25523 END IF;
25524 --
25525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25526 
25527       trace
25528          (p_msg      => 'BEGIN of AcctLineType_51'
25529          ,p_level    => C_LEVEL_PROCEDURE
25530          ,p_module   => l_log_module);
25531 
25532 END IF;
25533 --
25534 l_component_type             := 'AMB_JLT';
25535 l_component_code             := 'FV_REL_CANCEL_REINST_REQ_CR';
25536 l_component_type_code        := 'S';
25537 l_component_appl_id          :=  201;
25538 l_amb_context_code           := 'DEFAULT';
25539 l_entity_code                := 'RELEASE';
25540 l_event_class_code           := 'RELEASE';
25541 l_event_type_code            := 'RELEASE_ALL';
25542 l_line_definition_owner_code := 'S';
25543 l_line_definition_code       := 'FV_RELEASE_ALL';
25544 --
25545 l_balance_type_code          := 'A';
25546 l_segment                     := NULL;
25547 l_ccid                        := NULL;
25548 l_adr_transaction_coa_id      := NULL;
25549 l_adr_accounting_coa_id       := NULL;
25550 l_adr_flexfield_segment_code  := NULL;
25551 l_adr_flex_value_set_id       := NULL;
25552 l_adr_value_type_code         := NULL;
25553 l_adr_value_combination_id    := NULL;
25554 l_adr_value_segment_code      := NULL;
25555 
25556 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
25557 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
25558 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
25559 l_budgetary_control_flag     := 'Y';
25560 
25561 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25562 l_bflow_applied_to_amt       := NULL; -- 5132302
25563 l_entered_amt_idx            := NULL;          -- 4262811
25564 l_accted_amt_idx             := NULL;          -- 4262811
25565 l_acc_rev_flag               := NULL;          -- 4262811
25566 l_accrual_line_num           := NULL;          -- 4262811
25567 l_tmp_amt                    := NULL;          -- 4262811
25568 --
25569  
25570 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25571     l_balance_type_code <> 'B' THEN
25572 IF (NVL(
25573 xla_ae_sources_pkg.GetSystemSourceChar(
25574    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25575  , p_source_type_code      => 'Y'
25576  , p_source_application_id =>  602
25577 ),'
25578 ') =  'RELEASE_CANCELLED' OR 
25579 NVL(
25580 xla_ae_sources_pkg.GetSystemSourceChar(
25581    p_source_code           => 'XLA_EVENT_TYPE_CODE'
25582  , p_source_type_code      => 'Y'
25583  , p_source_application_id =>  602
25584 ),'
25585 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
25586 NVL(p_source_13,'
25587 ') =  'B_REQ'
25588  THEN 
25589 
25590    --
25591    XLA_AE_LINES_PKG.SetNewLine;
25592 
25593    p_balance_type_code          := l_balance_type_code;
25594    -- set the flag so later we will know whether the gain loss line needs to be created
25595    
25596    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25597      p_actual_flag :='A';
25598    END IF;
25599 
25600    --
25601    -- bulk performance
25602    --
25603    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25604                                       p_header_num   => 0); -- 4262811
25605    --
25606    -- set accounting line options
25607    --
25608    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25609            p_natural_side_code          => 'C'
25610          , p_gain_or_loss_flag          => 'N'
25611          , p_gl_transfer_mode_code      => 'S'
25612          , p_acct_entry_type_code       => 'A'
25613          , p_switch_side_flag           => 'N'
25614          , p_merge_duplicate_code       => 'N'
25615          );
25616    --
25617    l_acc_rev_natural_side_code := 'D';  -- 4262811
25618    -- 
25619    --
25620    -- set accounting line type info
25621    --
25622    xla_ae_lines_pkg.SetAcctLineType
25623       (p_component_type             => l_component_type
25624       ,p_event_type_code            => l_event_type_code
25625       ,p_line_definition_owner_code => l_line_definition_owner_code
25626       ,p_line_definition_code       => l_line_definition_code
25627       ,p_accounting_line_code       => l_component_code
25628       ,p_accounting_line_type_code  => l_component_type_code
25629       ,p_accounting_line_appl_id    => l_component_appl_id
25630       ,p_amb_context_code           => l_amb_context_code
25631       ,p_entity_code                => l_entity_code
25632       ,p_event_class_code           => l_event_class_code);
25633    --
25634    -- set accounting class
25635    --
25636    xla_ae_lines_pkg.SetAcctClass(
25637            p_accounting_class_code  => 'PURCHASE_ORDER'
25638          , p_ae_header_id           => l_ae_header_id
25639          );
25640 
25641    --
25642    -- set rounding class
25643    --
25644    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25645                       'PURCHASE_ORDER';
25646 
25647    --
25648    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25649    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25650    --
25651    -- bulk performance
25652    --
25653    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25654 
25655    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25656       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25657 
25658    -- 4955764
25659    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25660       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25661 
25662    -- 4458381 Public Sector Enh
25663    
25664    --
25665    -- set accounting attributes for the line type
25666    --
25667    l_entered_amt_idx := 23;
25668    l_accted_amt_idx  := 25;
25669    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25670    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25671    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
25672    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
25673    l_rec_acct_attrs.array_num_value(2)  := 
25674 xla_ae_sources_pkg.GetSystemSourceNum(
25675    p_source_code           => 'XLA_EVENT_APPL_ID'
25676  , p_source_type_code      => 'Y'
25677  , p_source_application_id =>  602
25678 );
25679    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
25680    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
25681    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
25682    l_rec_acct_attrs.array_char_value(4)  := 
25683 xla_ae_sources_pkg.GetSystemSourceChar(
25684    p_source_code           => 'XLA_ENTITY_CODE'
25685  , p_source_type_code      => 'Y'
25686  , p_source_application_id =>  602
25687 );
25688    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
25689    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
25690    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
25691    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
25692    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
25693    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
25694    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
25695    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
25696    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
25697    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
25698    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
25699    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
25700    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
25701    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
25702    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
25703    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
25704    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
25705    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
25706    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
25707    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
25708    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
25709    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
25710    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
25711    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
25712    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
25713    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
25714    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
25715    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
25716    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
25717    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
25718    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
25719    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
25720    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
25721    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
25722    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
25723    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
25724    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
25725    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
25726    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
25727    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
25728    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
25729    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
25730    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
25731    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
25732    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
25733    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
25734    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
25735    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
25736    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
25737    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
25738    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
25739    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
25740    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
25741    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
25742 
25743    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25744    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25745 
25746    ---------------------------------------------------------------------------------------------------------------
25747    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25748    ---------------------------------------------------------------------------------------------------------------
25749    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25750 
25751    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25752    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25753 
25754    IF xla_accounting_cache_pkg.GetValueChar
25755          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25756          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25757    AND l_bflow_method_code = 'PRIOR_ENTRY'
25758 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25759    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25760          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25761        )
25762    THEN
25763          xla_ae_lines_pkg.BflowUpgEntry
25764            (p_business_method_code    => l_bflow_method_code
25765            ,p_business_class_code     => l_bflow_class_code
25766            ,p_balance_type            => l_balance_type_code);
25767    ELSE
25768       NULL;
25769 XLA_AE_LINES_PKG.business_flow_validation(
25770                                 p_business_method_code     => l_bflow_method_code
25771                                ,p_business_class_code      => l_bflow_class_code
25772                                ,p_inherit_description_flag => l_inherit_desc_flag);
25773    END IF;
25774 
25775    --
25776    -- call analytical criteria
25777    --
25778    -- Inherited Analytical Criteria for business flow method of Prior Entry.
25779    --
25780    -- call description
25781    --
25782    -- No description or it is inherited.
25783    --
25784    -- call ADRs
25785    -- Bug 4922099
25786    --
25787    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25788         (NVL(l_actual_upg_option, 'N') = 'O') OR
25789         (NVL(l_enc_upg_option, 'N') = 'O')
25790       )
25791    THEN
25792    NULL;
25793    --
25794    --
25795    
25796    --
25797    --
25798    END IF;
25799    --
25800    -- Bug 4922099
25801    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25802           (NVL(l_enc_upg_option, 'N') = 'O')
25803         ) AND
25804         (l_bflow_method_code = 'PRIOR_ENTRY')
25805       )
25806    THEN
25807       IF
25808       --
25809       1 = 1
25810       --
25811       THEN
25812       xla_accounting_err_pkg.build_message
25813                                     (p_appli_s_name            => 'XLA'
25814                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25815                                     ,p_token_1                 => 'LINE_NUMBER'
25816                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25817                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25818                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25819                                                                              l_component_type
25820                                                                             ,l_component_code
25821                                                                             ,l_component_type_code
25822                                                                             ,l_component_appl_id
25823                                                                             ,l_amb_context_code
25824                                                                             ,l_entity_code
25825                                                                             ,l_event_class_code
25826                                                                            )
25827                                     ,p_token_3                 => 'OWNER'
25828                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25829                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25830                                                                           ,p_lookup_code    => l_component_type_code
25831                                                                          )
25832                                     ,p_token_4                 => 'PRODUCT_NAME'
25833                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25834                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25835                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25836                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25837                                     ,p_ae_header_id            =>  NULL
25838                                        );
25839 
25840         IF (C_LEVEL_ERROR>= g_log_level) THEN
25841                  trace
25842                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25843                       ,p_level    => C_LEVEL_ERROR
25844                       ,p_module   => l_log_module);
25845         END IF;
25846       END IF;
25847    END IF;
25848    --
25849    --
25850    ------------------------------------------------------------------------------------------------
25851    -- 4219869 Business Flow
25852    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25853    -- Prior Entry.  Currently, the following code is always generated.
25854    ------------------------------------------------------------------------------------------------
25855    -- No ValidateCurrentLine for business flow method of Prior Entry
25856 
25857    ------------------------------------------------------------------------------------
25858    -- 4219869 Business Flow
25859    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25860    ------------------------------------------------------------------------------------
25861    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25862 
25863    ----------------------------------------------------------------------------------
25864    -- 4219869 Business Flow
25865    -- Update journal entry status -- Need to generate this within IF <condition>
25866    ----------------------------------------------------------------------------------
25867    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25868          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25869          ,p_balance_type_code => l_balance_type_code
25870          );
25871 
25872    -------------------------------------------------------------------------------------------
25873    -- 4262811 - Generate the Accrual Reversal lines
25874    -------------------------------------------------------------------------------------------
25875    BEGIN
25876       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25877                               (g_array_event(p_event_id).array_value_num('header_index'));
25878       IF l_acc_rev_flag IS NULL THEN
25879          l_acc_rev_flag := 'N';
25880       END IF;
25881    EXCEPTION
25882       WHEN OTHERS THEN
25883          l_acc_rev_flag := 'N';
25884    END;
25885    --
25886    IF (l_acc_rev_flag = 'Y') THEN
25887 
25888        -- 4645092  ------------------------------------------------------------------------------
25889        -- To allow MPA report to determine if it should generate report process
25890        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25891        ------------------------------------------------------------------------------------------
25892 
25893        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25894        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25895 
25896        --
25897        -- Update the line information that should be overwritten
25898        --
25899        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25900                                          p_header_num   => 1);
25901        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25902 
25903        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25904 
25905        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25906           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25907        END IF;
25908 
25909       --
25910       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25911       --
25912       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25913           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25914       ELSE
25915           ---------------------------------------------------------------------------------------------------
25916           -- 4262811a Switch Sign
25917           ---------------------------------------------------------------------------------------------------
25918           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25919           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25920                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25921           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25922                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25923           -- 5132302
25924           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25925                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25926 
25927       END IF;
25928 
25929       -- 4955764
25930       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25931       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25932 
25933 
25934       XLA_AE_LINES_PKG.ValidateCurrentLine;
25935       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25936 
25937       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25938                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25939                ,p_balance_type_code => l_balance_type_code);
25940 
25941    END IF;
25942 
25943    -----------------------------------------------------------------------------------------
25944    -- 4262811 Multiperiod Accounting
25945    -----------------------------------------------------------------------------------------
25946      -- No MPA option is assigned.
25947 
25948 
25949 END IF;
25950 END IF;
25951 --
25952 
25953 --
25954 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25955    trace
25956       (p_msg      => 'END of AcctLineType_51'
25957       ,p_level    => C_LEVEL_PROCEDURE
25958       ,p_module   => l_log_module);
25959 END IF;
25960 --
25961 EXCEPTION
25962   WHEN xla_exceptions_pkg.application_exception THEN
25963       RAISE;
25964   WHEN OTHERS THEN
25965        xla_exceptions_pkg.raise_message
25966            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_51');
25967 END AcctLineType_51;
25968 --
25969 
25970 ---------------------------------------
25971 --
25972 -- PRIVATE FUNCTION
25973 --         AcctLineType_52
25974 --
25975 ---------------------------------------
25976 PROCEDURE AcctLineType_52 (
25977   p_application_id        IN NUMBER
25978  ,p_event_id              IN NUMBER
25979  ,p_calculate_acctd_flag  IN VARCHAR2
25980  ,p_calculate_g_l_flag    IN VARCHAR2
25981  ,p_actual_flag           IN OUT VARCHAR2
25982  ,p_balance_type_code     OUT VARCHAR2
25983  ,p_gain_or_loss_ref      OUT VARCHAR2
25984  
25985 --Budget Account
25986  , p_source_9            IN NUMBER
25987 --Main Or Backing Code
25988  , p_source_13            IN VARCHAR2
25989 --Accounting Reversal Flag
25990  , p_source_15            IN VARCHAR2
25991 --Distribution Link Type
25992  , p_source_17            IN VARCHAR2
25993 --PO Distribution Identifier
25994  , p_source_19            IN NUMBER
25995 --Applied To Application Identifier
25996  , p_source_21            IN NUMBER
25997 --Applied To Distribution Link Type
25998  , p_source_22            IN VARCHAR2
25999 --Applied To Entity Code
26000  , p_source_23            IN VARCHAR2
26001 --Applied To Distribution Identifier 1
26002  , p_source_24            IN NUMBER
26003 --Applied To Header Identifier 1
26004  , p_source_25            IN NUMBER
26005 --Entered Amount
26006  , p_source_26            IN NUMBER
26007 --Currency Code
26008  , p_source_27            IN VARCHAR2
26009 --Accounted Amount
26010  , p_source_28            IN NUMBER
26011 --PO Encumbrance Upgrade Option
26012  , p_source_29            IN VARCHAR2
26013 --JFMIP Reference
26014  , p_source_31            IN VARCHAR2
26015 --PO Upgrade Encumbrance Type Identifier
26016  , p_source_32            IN NUMBER
26017 --Allocated to Main Document Distribution Type
26018  , p_source_33            IN VARCHAR2
26019 --Allocated to Main Document Distribution Identifier
26020  , p_source_34            IN NUMBER
26021 --PO Release Identifier
26022  , p_source_41            IN NUMBER
26023 )
26024 IS
26025 
26026 l_component_type              VARCHAR2(80);
26027 l_component_code              VARCHAR2(30);
26028 l_component_type_code         VARCHAR2(1);
26029 l_component_appl_id           INTEGER;
26030 l_amb_context_code            VARCHAR2(30);
26031 l_entity_code                 VARCHAR2(30);
26032 l_event_class_code            VARCHAR2(30);
26033 l_ae_header_id                NUMBER;
26034 l_event_type_code             VARCHAR2(30);
26035 l_line_definition_code        VARCHAR2(30);
26036 l_line_definition_owner_code  VARCHAR2(1);
26037 --
26038 -- adr variables
26039 l_segment                     VARCHAR2(30);
26040 l_ccid                        NUMBER;
26041 l_adr_transaction_coa_id      NUMBER;
26042 l_adr_accounting_coa_id       NUMBER;
26043 l_adr_flexfield_segment_code  VARCHAR2(30);
26044 l_adr_flex_value_set_id       NUMBER;
26045 l_adr_value_type_code         VARCHAR2(30);
26046 l_adr_value_combination_id    NUMBER;
26047 l_adr_value_segment_code      VARCHAR2(30);
26048 
26049 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26050 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26051 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26052 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26053 
26054 -- 4262811 Variables ------------------------------------------------------------------------------------------
26055 l_entered_amt_idx             NUMBER;
26056 l_accted_amt_idx              NUMBER;
26057 l_acc_rev_flag                VARCHAR2(1);
26058 l_accrual_line_num            NUMBER;
26059 l_tmp_amt                     NUMBER;
26060 l_acc_rev_natural_side_code   VARCHAR2(1);
26061 
26062 l_num_entries                 NUMBER;
26063 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26064 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26065 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26066 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26067 l_recog_line_1                NUMBER;
26068 l_recog_line_2                NUMBER;
26069 
26070 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26071 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26072 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26073 
26074 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26075 
26076 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26077 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26078 
26079 ---------------------------------------------------------------------------------------------------------------
26080 
26081 
26082 --
26083 -- bulk performance
26084 --
26085 l_balance_type_code           VARCHAR2(1);
26086 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26087 l_log_module                  VARCHAR2(240);
26088 
26089 --
26090 -- Upgrade strategy
26091 --
26092 l_actual_upg_option           VARCHAR2(1);
26093 l_enc_upg_option           VARCHAR2(1);
26094 
26095 --
26096 BEGIN
26097 --
26098 IF g_log_enabled THEN
26099       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
26100 END IF;
26101 --
26102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26103 
26104       trace
26105          (p_msg      => 'BEGIN of AcctLineType_52'
26106          ,p_level    => C_LEVEL_PROCEDURE
26107          ,p_module   => l_log_module);
26108 
26109 END IF;
26110 --
26111 l_component_type             := 'AMB_JLT';
26112 l_component_code             := 'FV_REL_CANCEL_REINST_REQ_DR';
26113 l_component_type_code        := 'S';
26114 l_component_appl_id          :=  201;
26115 l_amb_context_code           := 'DEFAULT';
26116 l_entity_code                := 'RELEASE';
26117 l_event_class_code           := 'RELEASE';
26118 l_event_type_code            := 'RELEASE_ALL';
26119 l_line_definition_owner_code := 'S';
26120 l_line_definition_code       := 'FV_RELEASE_ALL';
26121 --
26122 l_balance_type_code          := 'A';
26123 l_segment                     := NULL;
26124 l_ccid                        := NULL;
26125 l_adr_transaction_coa_id      := NULL;
26126 l_adr_accounting_coa_id       := NULL;
26127 l_adr_flexfield_segment_code  := NULL;
26128 l_adr_flex_value_set_id       := NULL;
26129 l_adr_value_type_code         := NULL;
26130 l_adr_value_combination_id    := NULL;
26131 l_adr_value_segment_code      := NULL;
26132 
26133 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
26134 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
26135 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
26136 l_budgetary_control_flag     := 'Y';
26137 
26138 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26139 l_bflow_applied_to_amt       := NULL; -- 5132302
26140 l_entered_amt_idx            := NULL;          -- 4262811
26141 l_accted_amt_idx             := NULL;          -- 4262811
26142 l_acc_rev_flag               := NULL;          -- 4262811
26143 l_accrual_line_num           := NULL;          -- 4262811
26144 l_tmp_amt                    := NULL;          -- 4262811
26145 --
26146  
26147 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26148     l_balance_type_code <> 'B' THEN
26149 IF (NVL(
26150 xla_ae_sources_pkg.GetSystemSourceChar(
26151    p_source_code           => 'XLA_EVENT_TYPE_CODE'
26152  , p_source_type_code      => 'Y'
26153  , p_source_application_id =>  602
26154 ),'
26155 ') =  'RELEASE_CANCELLED' OR 
26156 NVL(
26157 xla_ae_sources_pkg.GetSystemSourceChar(
26158    p_source_code           => 'XLA_EVENT_TYPE_CODE'
26159  , p_source_type_code      => 'Y'
26160  , p_source_application_id =>  602
26161 ),'
26162 ') =  'RELEASE_CR_MEMO_CANCELLED') AND 
26163 NVL(p_source_13,'
26164 ') =  'B_REQ'
26165  THEN 
26166 
26167    --
26168    XLA_AE_LINES_PKG.SetNewLine;
26169 
26170    p_balance_type_code          := l_balance_type_code;
26171    -- set the flag so later we will know whether the gain loss line needs to be created
26172    
26173    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26174      p_actual_flag :='A';
26175    END IF;
26176 
26177    --
26178    -- bulk performance
26179    --
26180    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26181                                       p_header_num   => 0); -- 4262811
26182    --
26183    -- set accounting line options
26184    --
26185    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26186            p_natural_side_code          => 'D'
26187          , p_gain_or_loss_flag          => 'N'
26188          , p_gl_transfer_mode_code      => 'S'
26189          , p_acct_entry_type_code       => 'A'
26190          , p_switch_side_flag           => 'N'
26191          , p_merge_duplicate_code       => 'N'
26192          );
26193    --
26194    l_acc_rev_natural_side_code := 'C';  -- 4262811
26195    -- 
26196    --
26197    -- set accounting line type info
26198    --
26199    xla_ae_lines_pkg.SetAcctLineType
26200       (p_component_type             => l_component_type
26201       ,p_event_type_code            => l_event_type_code
26202       ,p_line_definition_owner_code => l_line_definition_owner_code
26203       ,p_line_definition_code       => l_line_definition_code
26204       ,p_accounting_line_code       => l_component_code
26205       ,p_accounting_line_type_code  => l_component_type_code
26206       ,p_accounting_line_appl_id    => l_component_appl_id
26207       ,p_amb_context_code           => l_amb_context_code
26208       ,p_entity_code                => l_entity_code
26209       ,p_event_class_code           => l_event_class_code);
26210    --
26211    -- set accounting class
26212    --
26213    xla_ae_lines_pkg.SetAcctClass(
26214            p_accounting_class_code  => 'PURCHASE_ORDER'
26215          , p_ae_header_id           => l_ae_header_id
26216          );
26217 
26218    --
26219    -- set rounding class
26220    --
26221    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26222                       'PURCHASE_ORDER';
26223 
26224    --
26225    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26226    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26227    --
26228    -- bulk performance
26229    --
26230    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26231 
26232    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26233       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26234 
26235    -- 4955764
26236    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26237       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26238 
26239    -- 4458381 Public Sector Enh
26240    
26241    --
26242    -- set accounting attributes for the line type
26243    --
26244    l_entered_amt_idx := 23;
26245    l_accted_amt_idx  := 25;
26246    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26247    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26248    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
26249    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
26250    l_rec_acct_attrs.array_num_value(2)  := 
26251 xla_ae_sources_pkg.GetSystemSourceNum(
26252    p_source_code           => 'XLA_EVENT_APPL_ID'
26253  , p_source_type_code      => 'Y'
26254  , p_source_application_id =>  602
26255 );
26256    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
26257    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
26258    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
26259    l_rec_acct_attrs.array_char_value(4)  := 
26260 xla_ae_sources_pkg.GetSystemSourceChar(
26261    p_source_code           => 'XLA_ENTITY_CODE'
26262  , p_source_type_code      => 'Y'
26263  , p_source_application_id =>  602
26264 );
26265    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
26266    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
26267    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
26268    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
26269    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
26270    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
26271    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
26272    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
26273    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
26274    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
26275    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
26276    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
26277    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
26278    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
26279    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
26280    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
26281    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
26282    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
26283    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
26284    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
26285    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
26286    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
26287    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
26288    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
26289    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
26290    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
26291    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
26292    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
26293    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
26294    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
26295    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
26296    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
26297    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
26298    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
26299    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
26300    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
26301    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
26302    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
26303    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
26304    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
26305    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
26306    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
26307    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
26308    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
26309    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
26310    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
26311    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
26312    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
26313    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
26314    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
26315    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
26316    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
26317    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
26318    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
26319 
26320    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26321    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26322 
26323    ---------------------------------------------------------------------------------------------------------------
26324    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26325    ---------------------------------------------------------------------------------------------------------------
26326    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26327 
26328    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26329    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26330 
26331    IF xla_accounting_cache_pkg.GetValueChar
26332          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26333          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26334    AND l_bflow_method_code = 'PRIOR_ENTRY'
26335 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26336    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26337          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26338        )
26339    THEN
26340          xla_ae_lines_pkg.BflowUpgEntry
26341            (p_business_method_code    => l_bflow_method_code
26342            ,p_business_class_code     => l_bflow_class_code
26343            ,p_balance_type            => l_balance_type_code);
26344    ELSE
26345       NULL;
26346 XLA_AE_LINES_PKG.business_flow_validation(
26347                                 p_business_method_code     => l_bflow_method_code
26348                                ,p_business_class_code      => l_bflow_class_code
26349                                ,p_inherit_description_flag => l_inherit_desc_flag);
26350    END IF;
26351 
26352    --
26353    -- call analytical criteria
26354    --
26355    -- Inherited Analytical Criteria for business flow method of Prior Entry.
26356    --
26357    -- call description
26358    --
26359    -- No description or it is inherited.
26360    --
26361    -- call ADRs
26362    -- Bug 4922099
26363    --
26364    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26365         (NVL(l_actual_upg_option, 'N') = 'O') OR
26366         (NVL(l_enc_upg_option, 'N') = 'O')
26367       )
26368    THEN
26369    NULL;
26370    --
26371    --
26372    
26373    --
26374    --
26375    END IF;
26376    --
26377    -- Bug 4922099
26378    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26379           (NVL(l_enc_upg_option, 'N') = 'O')
26380         ) AND
26381         (l_bflow_method_code = 'PRIOR_ENTRY')
26382       )
26383    THEN
26384       IF
26385       --
26386       1 = 1
26387       --
26388       THEN
26389       xla_accounting_err_pkg.build_message
26390                                     (p_appli_s_name            => 'XLA'
26391                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26392                                     ,p_token_1                 => 'LINE_NUMBER'
26393                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26394                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26395                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26396                                                                              l_component_type
26397                                                                             ,l_component_code
26398                                                                             ,l_component_type_code
26399                                                                             ,l_component_appl_id
26400                                                                             ,l_amb_context_code
26401                                                                             ,l_entity_code
26402                                                                             ,l_event_class_code
26403                                                                            )
26404                                     ,p_token_3                 => 'OWNER'
26405                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26406                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26407                                                                           ,p_lookup_code    => l_component_type_code
26408                                                                          )
26409                                     ,p_token_4                 => 'PRODUCT_NAME'
26410                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26411                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26412                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26413                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26414                                     ,p_ae_header_id            =>  NULL
26415                                        );
26416 
26417         IF (C_LEVEL_ERROR>= g_log_level) THEN
26418                  trace
26419                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26420                       ,p_level    => C_LEVEL_ERROR
26421                       ,p_module   => l_log_module);
26422         END IF;
26423       END IF;
26424    END IF;
26425    --
26426    --
26427    ------------------------------------------------------------------------------------------------
26428    -- 4219869 Business Flow
26429    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26430    -- Prior Entry.  Currently, the following code is always generated.
26431    ------------------------------------------------------------------------------------------------
26432    -- No ValidateCurrentLine for business flow method of Prior Entry
26433 
26434    ------------------------------------------------------------------------------------
26435    -- 4219869 Business Flow
26436    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26437    ------------------------------------------------------------------------------------
26438    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26439 
26440    ----------------------------------------------------------------------------------
26441    -- 4219869 Business Flow
26442    -- Update journal entry status -- Need to generate this within IF <condition>
26443    ----------------------------------------------------------------------------------
26444    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26445          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26446          ,p_balance_type_code => l_balance_type_code
26447          );
26448 
26449    -------------------------------------------------------------------------------------------
26450    -- 4262811 - Generate the Accrual Reversal lines
26451    -------------------------------------------------------------------------------------------
26452    BEGIN
26453       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26454                               (g_array_event(p_event_id).array_value_num('header_index'));
26455       IF l_acc_rev_flag IS NULL THEN
26456          l_acc_rev_flag := 'N';
26457       END IF;
26458    EXCEPTION
26459       WHEN OTHERS THEN
26460          l_acc_rev_flag := 'N';
26461    END;
26462    --
26463    IF (l_acc_rev_flag = 'Y') THEN
26464 
26465        -- 4645092  ------------------------------------------------------------------------------
26466        -- To allow MPA report to determine if it should generate report process
26467        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26468        ------------------------------------------------------------------------------------------
26469 
26470        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26471        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26472 
26473        --
26474        -- Update the line information that should be overwritten
26475        --
26476        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26477                                          p_header_num   => 1);
26478        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26479 
26480        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26481 
26482        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26483           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26484        END IF;
26485 
26486       --
26487       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26488       --
26489       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26490           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26491       ELSE
26492           ---------------------------------------------------------------------------------------------------
26493           -- 4262811a Switch Sign
26494           ---------------------------------------------------------------------------------------------------
26495           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26496           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26497                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26498           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26499                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26500           -- 5132302
26501           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26502                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26503 
26504       END IF;
26505 
26506       -- 4955764
26507       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26508       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26509 
26510 
26511       XLA_AE_LINES_PKG.ValidateCurrentLine;
26512       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26513 
26514       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26515                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26516                ,p_balance_type_code => l_balance_type_code);
26517 
26518    END IF;
26519 
26520    -----------------------------------------------------------------------------------------
26521    -- 4262811 Multiperiod Accounting
26522    -----------------------------------------------------------------------------------------
26523      -- No MPA option is assigned.
26524 
26525 
26526 END IF;
26527 END IF;
26528 --
26529 
26530 --
26531 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26532    trace
26533       (p_msg      => 'END of AcctLineType_52'
26534       ,p_level    => C_LEVEL_PROCEDURE
26535       ,p_module   => l_log_module);
26536 END IF;
26537 --
26538 EXCEPTION
26539   WHEN xla_exceptions_pkg.application_exception THEN
26540       RAISE;
26541   WHEN OTHERS THEN
26542        xla_exceptions_pkg.raise_message
26543            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_52');
26544 END AcctLineType_52;
26545 --
26546 
26547 ---------------------------------------
26548 --
26549 -- PRIVATE FUNCTION
26550 --         AcctLineType_53
26551 --
26552 ---------------------------------------
26553 PROCEDURE AcctLineType_53 (
26554   p_application_id        IN NUMBER
26555  ,p_event_id              IN NUMBER
26556  ,p_calculate_acctd_flag  IN VARCHAR2
26557  ,p_calculate_g_l_flag    IN VARCHAR2
26558  ,p_actual_flag           IN OUT VARCHAR2
26559  ,p_balance_type_code     OUT VARCHAR2
26560  ,p_gain_or_loss_ref      OUT VARCHAR2
26561  
26562 --Journal entry Line Description
26563  , p_source_3            IN VARCHAR2
26564 --Federal Fund Expired Status
26565  , p_source_8            IN VARCHAR2
26566 --Budget Account
26567  , p_source_9            IN NUMBER
26568 --Federal Prior Year Flag
26569  , p_source_10            IN VARCHAR2
26570 --Main Or Backing Code
26571  , p_source_13            IN VARCHAR2
26572 --Accounting Reversal Flag
26573  , p_source_15            IN VARCHAR2
26574 --Distribution Link Type
26575  , p_source_17            IN VARCHAR2
26576 --PO Distribution Identifier
26577  , p_source_19            IN NUMBER
26578 --Applied To Application Identifier
26579  , p_source_21            IN NUMBER
26580 --Applied To Distribution Link Type
26581  , p_source_22            IN VARCHAR2
26582 --Applied To Entity Code
26583  , p_source_23            IN VARCHAR2
26584 --Applied To Distribution Identifier 1
26585  , p_source_24            IN NUMBER
26586 --Applied To Header Identifier 1
26587  , p_source_25            IN NUMBER
26588 --Entered Amount
26589  , p_source_26            IN NUMBER
26590 --Currency Code
26591  , p_source_27            IN VARCHAR2
26592 --Accounted Amount
26593  , p_source_28            IN NUMBER
26594 --PO Encumbrance Upgrade Option
26595  , p_source_29            IN VARCHAR2
26596 --PO Upgrade Encumbrance Type Identifier
26597  , p_source_32            IN NUMBER
26598 --Currency Conversion Date
26599  , p_source_35            IN DATE
26600 --Currency Conversion Rate
26601  , p_source_36            IN NUMBER
26602 --Currency Conversion Type
26603  , p_source_37            IN VARCHAR2
26604 --PO Release Identifier
26605  , p_source_41            IN NUMBER
26606 )
26607 IS
26608 
26609 l_component_type              VARCHAR2(80);
26610 l_component_code              VARCHAR2(30);
26611 l_component_type_code         VARCHAR2(1);
26612 l_component_appl_id           INTEGER;
26613 l_amb_context_code            VARCHAR2(30);
26614 l_entity_code                 VARCHAR2(30);
26615 l_event_class_code            VARCHAR2(30);
26616 l_ae_header_id                NUMBER;
26617 l_event_type_code             VARCHAR2(30);
26618 l_line_definition_code        VARCHAR2(30);
26619 l_line_definition_owner_code  VARCHAR2(1);
26620 --
26621 -- adr variables
26622 l_segment                     VARCHAR2(30);
26623 l_ccid                        NUMBER;
26624 l_adr_transaction_coa_id      NUMBER;
26625 l_adr_accounting_coa_id       NUMBER;
26626 l_adr_flexfield_segment_code  VARCHAR2(30);
26627 l_adr_flex_value_set_id       NUMBER;
26628 l_adr_value_type_code         VARCHAR2(30);
26629 l_adr_value_combination_id    NUMBER;
26630 l_adr_value_segment_code      VARCHAR2(30);
26631 
26632 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26633 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26634 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26635 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26636 
26637 -- 4262811 Variables ------------------------------------------------------------------------------------------
26638 l_entered_amt_idx             NUMBER;
26639 l_accted_amt_idx              NUMBER;
26640 l_acc_rev_flag                VARCHAR2(1);
26641 l_accrual_line_num            NUMBER;
26642 l_tmp_amt                     NUMBER;
26643 l_acc_rev_natural_side_code   VARCHAR2(1);
26644 
26645 l_num_entries                 NUMBER;
26646 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26647 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26648 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26649 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26650 l_recog_line_1                NUMBER;
26651 l_recog_line_2                NUMBER;
26652 
26653 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26654 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26655 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26656 
26657 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26658 
26659 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26660 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26661 
26662 ---------------------------------------------------------------------------------------------------------------
26663 
26664 
26665 --
26666 -- bulk performance
26667 --
26668 l_balance_type_code           VARCHAR2(1);
26669 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26670 l_log_module                  VARCHAR2(240);
26671 
26672 --
26673 -- Upgrade strategy
26674 --
26675 l_actual_upg_option           VARCHAR2(1);
26676 l_enc_upg_option           VARCHAR2(1);
26677 
26678 --
26679 BEGIN
26680 --
26681 IF g_log_enabled THEN
26682       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
26683 END IF;
26684 --
26685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26686 
26687       trace
26688          (p_msg      => 'BEGIN of AcctLineType_53'
26689          ,p_level    => C_LEVEL_PROCEDURE
26690          ,p_module   => l_log_module);
26691 
26692 END IF;
26693 --
26694 l_component_type             := 'AMB_JLT';
26695 l_component_code             := 'FV_REL_PYA_CANCEL_CR';
26696 l_component_type_code        := 'S';
26697 l_component_appl_id          :=  201;
26698 l_amb_context_code           := 'DEFAULT';
26699 l_entity_code                := 'RELEASE';
26700 l_event_class_code           := 'RELEASE';
26701 l_event_type_code            := 'RELEASE_ALL';
26702 l_line_definition_owner_code := 'S';
26703 l_line_definition_code       := 'FV_RELEASE_ALL';
26704 --
26705 l_balance_type_code          := 'A';
26706 l_segment                     := NULL;
26707 l_ccid                        := NULL;
26708 l_adr_transaction_coa_id      := NULL;
26709 l_adr_accounting_coa_id       := NULL;
26710 l_adr_flexfield_segment_code  := NULL;
26711 l_adr_flex_value_set_id       := NULL;
26712 l_adr_value_type_code         := NULL;
26713 l_adr_value_combination_id    := NULL;
26714 l_adr_value_segment_code      := NULL;
26715 
26716 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26717 l_bflow_class_code           := '';    -- 4219869 Business Flow
26718 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26719 l_budgetary_control_flag     := 'Y';
26720 
26721 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26722 l_bflow_applied_to_amt       := NULL; -- 5132302
26723 l_entered_amt_idx            := NULL;          -- 4262811
26724 l_accted_amt_idx             := NULL;          -- 4262811
26725 l_acc_rev_flag               := NULL;          -- 4262811
26726 l_accrual_line_num           := NULL;          -- 4262811
26727 l_tmp_amt                    := NULL;          -- 4262811
26728 --
26729  
26730 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26731     l_balance_type_code <> 'B' THEN
26732 IF NVL(
26733 xla_ae_sources_pkg.GetSystemSourceChar(
26734    p_source_code           => 'XLA_EVENT_TYPE_CODE'
26735  , p_source_type_code      => 'Y'
26736  , p_source_application_id =>  602
26737 ),'
26738 ') =  'RELEASE_CANCELLED' AND 
26739 NVL(p_source_13,'
26740 ') =  'M' AND 
26741 NVL(p_source_10,'
26742 ') =  'Y'
26743  THEN 
26744 
26745    --
26746    XLA_AE_LINES_PKG.SetNewLine;
26747 
26748    p_balance_type_code          := l_balance_type_code;
26749    -- set the flag so later we will know whether the gain loss line needs to be created
26750    
26751    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26752      p_actual_flag :='A';
26753    END IF;
26754 
26755    --
26756    -- bulk performance
26757    --
26758    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26759                                       p_header_num   => 0); -- 4262811
26760    --
26761    -- set accounting line options
26762    --
26763    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26764            p_natural_side_code          => 'C'
26765          , p_gain_or_loss_flag          => 'N'
26766          , p_gl_transfer_mode_code      => 'S'
26767          , p_acct_entry_type_code       => 'A'
26768          , p_switch_side_flag           => 'N'
26769          , p_merge_duplicate_code       => 'N'
26770          );
26771    --
26772    l_acc_rev_natural_side_code := 'D';  -- 4262811
26773    -- 
26774    --
26775    -- set accounting line type info
26776    --
26777    xla_ae_lines_pkg.SetAcctLineType
26778       (p_component_type             => l_component_type
26779       ,p_event_type_code            => l_event_type_code
26780       ,p_line_definition_owner_code => l_line_definition_owner_code
26781       ,p_line_definition_code       => l_line_definition_code
26782       ,p_accounting_line_code       => l_component_code
26783       ,p_accounting_line_type_code  => l_component_type_code
26784       ,p_accounting_line_appl_id    => l_component_appl_id
26785       ,p_amb_context_code           => l_amb_context_code
26786       ,p_entity_code                => l_entity_code
26787       ,p_event_class_code           => l_event_class_code);
26788    --
26789    -- set accounting class
26790    --
26791    xla_ae_lines_pkg.SetAcctClass(
26792            p_accounting_class_code  => 'PURCHASE_ORDER'
26793          , p_ae_header_id           => l_ae_header_id
26794          );
26795 
26796    --
26797    -- set rounding class
26798    --
26799    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26800                       'PURCHASE_ORDER';
26801 
26802    --
26803    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26804    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26805    --
26806    -- bulk performance
26807    --
26808    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26809 
26810    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26811       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26812 
26813    -- 4955764
26814    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26815       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26816 
26817    -- 4458381 Public Sector Enh
26818    
26819    --
26820    -- set accounting attributes for the line type
26821    --
26822    l_entered_amt_idx := 23;
26823    l_accted_amt_idx  := 28;
26824    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26825    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26826    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
26827    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
26828    l_rec_acct_attrs.array_num_value(2)  := 
26829 xla_ae_sources_pkg.GetSystemSourceNum(
26830    p_source_code           => 'XLA_EVENT_APPL_ID'
26831  , p_source_type_code      => 'Y'
26832  , p_source_application_id =>  602
26833 );
26834    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
26835    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
26836    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
26837    l_rec_acct_attrs.array_char_value(4)  := 
26838 xla_ae_sources_pkg.GetSystemSourceChar(
26839    p_source_code           => 'XLA_ENTITY_CODE'
26840  , p_source_type_code      => 'Y'
26841  , p_source_application_id =>  602
26842 );
26843    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
26844    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
26845    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
26846    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
26847    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
26848    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
26849    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
26850    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
26851    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
26852    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
26853    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
26854    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
26855    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
26856    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
26857    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
26858    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
26859    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
26860    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
26861    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
26862    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
26863    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
26864    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
26865    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
26866    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
26867    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
26868    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
26869    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
26870    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
26871    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
26872    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
26873    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
26874    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
26875    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
26876    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
26877    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
26878    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
26879    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
26880    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
26881    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
26882    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
26883    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
26884    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
26885    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
26886    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
26887    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
26888    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
26889    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
26890    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
26891    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
26892    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
26893    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
26894    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
26895    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
26896    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
26897    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
26898    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
26899 
26900    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26901    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26902 
26903    ---------------------------------------------------------------------------------------------------------------
26904    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26905    ---------------------------------------------------------------------------------------------------------------
26906    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26907 
26908    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26909    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26910 
26911    IF xla_accounting_cache_pkg.GetValueChar
26912          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26913          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26914    AND l_bflow_method_code = 'PRIOR_ENTRY'
26915 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26916    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26917          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26918        )
26919    THEN
26920          xla_ae_lines_pkg.BflowUpgEntry
26921            (p_business_method_code    => l_bflow_method_code
26922            ,p_business_class_code     => l_bflow_class_code
26923            ,p_balance_type            => l_balance_type_code);
26924    ELSE
26925       NULL;
26926 -- No business flow processing for business flow method of NONE.
26927    END IF;
26928 
26929    --
26930    -- call analytical criteria
26931    --
26932    
26933    --
26934    -- call description
26935    --
26936    
26937 xla_ae_lines_pkg.SetLineDescription(
26938    p_ae_header_id => l_ae_header_id
26939   ,p_description  => Description_2 (
26940      p_application_id         => p_application_id
26941    , p_ae_header_id           => l_ae_header_id 
26942 , p_source_3 => p_source_3
26943    )
26944 );
26945 
26946 
26947    --
26948    -- call ADRs
26949    -- Bug 4922099
26950    --
26951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26952         (NVL(l_actual_upg_option, 'N') = 'O') OR
26953         (NVL(l_enc_upg_option, 'N') = 'O')
26954       )
26955    THEN
26956    NULL;
26957    --
26958    --
26959    
26960   l_ccid := AcctDerRule_9(
26961            p_application_id           => p_application_id
26962          , p_ae_header_id             => l_ae_header_id 
26963 , p_source_9 => p_source_9
26964          , x_transaction_coa_id       => l_adr_transaction_coa_id
26965          , x_accounting_coa_id        => l_adr_accounting_coa_id
26966          , x_value_type_code          => l_adr_value_type_code
26967          , p_side                     => 'NA'
26968    );
26969 
26970    xla_ae_lines_pkg.set_ccid(
26971     p_code_combination_id          => l_ccid
26972   , p_value_type_code              => l_adr_value_type_code
26973   , p_transaction_coa_id           => l_adr_transaction_coa_id
26974   , p_accounting_coa_id            => l_adr_accounting_coa_id
26975   , p_adr_code                     => 'FV_ACCOUNT_RULE'
26976   , p_adr_type_code                => 'S'
26977   , p_component_type               => l_component_type
26978   , p_component_code               => l_component_code
26979   , p_component_type_code          => l_component_type_code
26980   , p_component_appl_id            => l_component_appl_id
26981   , p_amb_context_code             => l_amb_context_code
26982   , p_side                         => 'NA'
26983   );
26984 
26985 
26986    l_segment := AcctDerRule_11(
26987            p_application_id           => p_application_id
26988          , p_ae_header_id             => l_ae_header_id 
26989 , p_source_8 => p_source_8
26990          , x_transaction_coa_id       => l_adr_transaction_coa_id
26991          , x_accounting_coa_id        => l_adr_accounting_coa_id
26992          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
26993          , x_flex_value_set_id        => l_adr_flex_value_set_id
26994          , x_value_type_code          => l_adr_value_type_code
26995          , x_value_combination_id     => l_adr_value_combination_id
26996          , x_value_segment_code       => l_adr_value_segment_code
26997          , p_side                     => 'NA'
26998          , p_override_seg_flag        => 'Y'
26999    );
27000 
27001    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
27002 
27003       xla_ae_lines_pkg.set_segment(
27004           p_to_segment_code         => 'GL_ACCOUNT'
27005         , p_segment_value           => l_segment
27006         , p_from_segment_code       => l_adr_value_segment_code
27007         , p_from_combination_id     => l_adr_value_combination_id
27008         , p_value_type_code         => l_adr_value_type_code
27009         , p_transaction_coa_id      => l_adr_transaction_coa_id
27010         , p_accounting_coa_id       => l_adr_accounting_coa_id
27011         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
27012         , p_flex_value_set_id       => l_adr_flex_value_set_id
27013         , p_adr_code                => 'FV_PYA_445002_UNANTICIPATED'
27014         , p_adr_type_code           => 'S'
27015         , p_component_type          => l_component_type
27016         , p_component_code          => l_component_code
27017         , p_component_type_code     => l_component_type_code
27018         , p_component_appl_id       => l_component_appl_id
27019         , p_amb_context_code        => l_amb_context_code
27020         , p_entity_code             => 'RELEASE'
27021         , p_event_class_code        => 'RELEASE'
27022         , p_side                    => 'NA'
27023         );
27024 
27025   END IF;
27026 
27027    --
27028    --
27029    END IF;
27030    --
27031    -- Bug 4922099
27032    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27033           (NVL(l_enc_upg_option, 'N') = 'O')
27034         ) AND
27035         (l_bflow_method_code = 'PRIOR_ENTRY')
27036       )
27037    THEN
27038       IF
27039       --
27040       1 = 2
27041       --
27042       THEN
27043       xla_accounting_err_pkg.build_message
27044                                     (p_appli_s_name            => 'XLA'
27045                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27046                                     ,p_token_1                 => 'LINE_NUMBER'
27047                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27048                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27049                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27050                                                                              l_component_type
27051                                                                             ,l_component_code
27052                                                                             ,l_component_type_code
27053                                                                             ,l_component_appl_id
27054                                                                             ,l_amb_context_code
27055                                                                             ,l_entity_code
27056                                                                             ,l_event_class_code
27057                                                                            )
27058                                     ,p_token_3                 => 'OWNER'
27059                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27060                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27061                                                                           ,p_lookup_code    => l_component_type_code
27062                                                                          )
27063                                     ,p_token_4                 => 'PRODUCT_NAME'
27064                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27065                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27066                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27067                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27068                                     ,p_ae_header_id            =>  NULL
27069                                        );
27070 
27071         IF (C_LEVEL_ERROR>= g_log_level) THEN
27072                  trace
27073                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27074                       ,p_level    => C_LEVEL_ERROR
27075                       ,p_module   => l_log_module);
27076         END IF;
27077       END IF;
27078    END IF;
27079    --
27080    --
27081    ------------------------------------------------------------------------------------------------
27082    -- 4219869 Business Flow
27083    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27084    -- Prior Entry.  Currently, the following code is always generated.
27085    ------------------------------------------------------------------------------------------------
27086    XLA_AE_LINES_PKG.ValidateCurrentLine;
27087 
27088    ------------------------------------------------------------------------------------
27089    -- 4219869 Business Flow
27090    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27091    ------------------------------------------------------------------------------------
27092    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27093 
27094    ----------------------------------------------------------------------------------
27095    -- 4219869 Business Flow
27096    -- Update journal entry status -- Need to generate this within IF <condition>
27097    ----------------------------------------------------------------------------------
27098    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27099          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27100          ,p_balance_type_code => l_balance_type_code
27101          );
27102 
27103    -------------------------------------------------------------------------------------------
27104    -- 4262811 - Generate the Accrual Reversal lines
27105    -------------------------------------------------------------------------------------------
27106    BEGIN
27107       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27108                               (g_array_event(p_event_id).array_value_num('header_index'));
27109       IF l_acc_rev_flag IS NULL THEN
27110          l_acc_rev_flag := 'N';
27111       END IF;
27112    EXCEPTION
27113       WHEN OTHERS THEN
27114          l_acc_rev_flag := 'N';
27115    END;
27116    --
27117    IF (l_acc_rev_flag = 'Y') THEN
27118 
27119        -- 4645092  ------------------------------------------------------------------------------
27120        -- To allow MPA report to determine if it should generate report process
27121        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27122        ------------------------------------------------------------------------------------------
27123 
27124        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27125        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27126 
27127        --
27128        -- Update the line information that should be overwritten
27129        --
27130        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27131                                          p_header_num   => 1);
27132        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27133 
27134        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27135 
27136        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27137           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27138        END IF;
27139 
27140       --
27141       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27142       --
27143       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27144           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27145       ELSE
27146           ---------------------------------------------------------------------------------------------------
27147           -- 4262811a Switch Sign
27148           ---------------------------------------------------------------------------------------------------
27149           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27150           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27151                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27152           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27153                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27154           -- 5132302
27155           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27156                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27157 
27158       END IF;
27159 
27160       -- 4955764
27161       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27162       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27163 
27164 
27165       XLA_AE_LINES_PKG.ValidateCurrentLine;
27166       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27167 
27168       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27169                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27170                ,p_balance_type_code => l_balance_type_code);
27171 
27172    END IF;
27173 
27174    -----------------------------------------------------------------------------------------
27175    -- 4262811 Multiperiod Accounting
27176    -----------------------------------------------------------------------------------------
27177      -- No MPA option is assigned.
27178 
27179 
27180 END IF;
27181 END IF;
27182 --
27183 
27184 --
27185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27186    trace
27187       (p_msg      => 'END of AcctLineType_53'
27188       ,p_level    => C_LEVEL_PROCEDURE
27189       ,p_module   => l_log_module);
27190 END IF;
27191 --
27192 EXCEPTION
27193   WHEN xla_exceptions_pkg.application_exception THEN
27194       RAISE;
27195   WHEN OTHERS THEN
27196        xla_exceptions_pkg.raise_message
27197            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_53');
27198 END AcctLineType_53;
27199 --
27200 
27201 ---------------------------------------
27202 --
27203 -- PRIVATE FUNCTION
27204 --         AcctLineType_54
27205 --
27206 ---------------------------------------
27207 PROCEDURE AcctLineType_54 (
27208   p_application_id        IN NUMBER
27209  ,p_event_id              IN NUMBER
27210  ,p_calculate_acctd_flag  IN VARCHAR2
27211  ,p_calculate_g_l_flag    IN VARCHAR2
27212  ,p_actual_flag           IN OUT VARCHAR2
27213  ,p_balance_type_code     OUT VARCHAR2
27214  ,p_gain_or_loss_ref      OUT VARCHAR2
27215  
27216 --Journal entry Line Description
27217  , p_source_3            IN VARCHAR2
27218 --Budget Account
27219  , p_source_9            IN NUMBER
27220 --Federal Prior Year Flag
27221  , p_source_10            IN VARCHAR2
27222 --Federal Net Pya Adj Amt
27223  , p_source_11            IN NUMBER
27224 --Main Or Backing Code
27225  , p_source_13            IN VARCHAR2
27226 --Accounting Reversal Flag
27227  , p_source_15            IN VARCHAR2
27228 --Distribution Link Type
27229  , p_source_17            IN VARCHAR2
27230 --PO Distribution Identifier
27231  , p_source_19            IN NUMBER
27232 --Applied To Application Identifier
27233  , p_source_21            IN NUMBER
27234 --Applied To Distribution Link Type
27235  , p_source_22            IN VARCHAR2
27236 --Applied To Entity Code
27237  , p_source_23            IN VARCHAR2
27238 --Applied To Distribution Identifier 1
27239  , p_source_24            IN NUMBER
27240 --Applied To Header Identifier 1
27241  , p_source_25            IN NUMBER
27242 --Entered Amount
27243  , p_source_26            IN NUMBER
27244 --Currency Code
27245  , p_source_27            IN VARCHAR2
27246 --Accounted Amount
27247  , p_source_28            IN NUMBER
27248 --PO Encumbrance Upgrade Option
27249  , p_source_29            IN VARCHAR2
27250 --PO Upgrade Encumbrance Type Identifier
27251  , p_source_32            IN NUMBER
27252 --Currency Conversion Date
27253  , p_source_35            IN DATE
27254 --Currency Conversion Rate
27255  , p_source_36            IN NUMBER
27256 --Currency Conversion Type
27257  , p_source_37            IN VARCHAR2
27258 --Federal Pya Differential Amt
27259  , p_source_38            IN NUMBER
27260 --PO Release Identifier
27261  , p_source_41            IN NUMBER
27262 )
27263 IS
27264 
27265 l_component_type              VARCHAR2(80);
27266 l_component_code              VARCHAR2(30);
27267 l_component_type_code         VARCHAR2(1);
27268 l_component_appl_id           INTEGER;
27269 l_amb_context_code            VARCHAR2(30);
27270 l_entity_code                 VARCHAR2(30);
27271 l_event_class_code            VARCHAR2(30);
27272 l_ae_header_id                NUMBER;
27273 l_event_type_code             VARCHAR2(30);
27274 l_line_definition_code        VARCHAR2(30);
27275 l_line_definition_owner_code  VARCHAR2(1);
27276 --
27277 -- adr variables
27278 l_segment                     VARCHAR2(30);
27279 l_ccid                        NUMBER;
27280 l_adr_transaction_coa_id      NUMBER;
27281 l_adr_accounting_coa_id       NUMBER;
27282 l_adr_flexfield_segment_code  VARCHAR2(30);
27283 l_adr_flex_value_set_id       NUMBER;
27284 l_adr_value_type_code         VARCHAR2(30);
27285 l_adr_value_combination_id    NUMBER;
27286 l_adr_value_segment_code      VARCHAR2(30);
27287 
27288 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27289 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27290 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27291 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27292 
27293 -- 4262811 Variables ------------------------------------------------------------------------------------------
27294 l_entered_amt_idx             NUMBER;
27295 l_accted_amt_idx              NUMBER;
27296 l_acc_rev_flag                VARCHAR2(1);
27297 l_accrual_line_num            NUMBER;
27298 l_tmp_amt                     NUMBER;
27299 l_acc_rev_natural_side_code   VARCHAR2(1);
27300 
27301 l_num_entries                 NUMBER;
27302 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27303 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27304 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27305 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27306 l_recog_line_1                NUMBER;
27307 l_recog_line_2                NUMBER;
27308 
27309 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27310 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27311 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27312 
27313 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27314 
27315 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27316 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27317 
27318 ---------------------------------------------------------------------------------------------------------------
27319 
27320 
27321 --
27322 -- bulk performance
27323 --
27324 l_balance_type_code           VARCHAR2(1);
27325 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27326 l_log_module                  VARCHAR2(240);
27327 
27328 --
27329 -- Upgrade strategy
27330 --
27331 l_actual_upg_option           VARCHAR2(1);
27332 l_enc_upg_option           VARCHAR2(1);
27333 
27334 --
27335 BEGIN
27336 --
27337 IF g_log_enabled THEN
27338       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
27339 END IF;
27340 --
27341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27342 
27343       trace
27344          (p_msg      => 'BEGIN of AcctLineType_54'
27345          ,p_level    => C_LEVEL_PROCEDURE
27346          ,p_module   => l_log_module);
27347 
27348 END IF;
27349 --
27350 l_component_type             := 'AMB_JLT';
27351 l_component_code             := 'FV_REL_PYA_DIFF_RESERVE_CR';
27352 l_component_type_code        := 'S';
27353 l_component_appl_id          :=  201;
27354 l_amb_context_code           := 'DEFAULT';
27355 l_entity_code                := 'RELEASE';
27356 l_event_class_code           := 'RELEASE';
27357 l_event_type_code            := 'RELEASE_ALL';
27358 l_line_definition_owner_code := 'S';
27359 l_line_definition_code       := 'FV_RELEASE_ALL';
27360 --
27361 l_balance_type_code          := 'A';
27362 l_segment                     := NULL;
27363 l_ccid                        := NULL;
27364 l_adr_transaction_coa_id      := NULL;
27365 l_adr_accounting_coa_id       := NULL;
27366 l_adr_flexfield_segment_code  := NULL;
27367 l_adr_flex_value_set_id       := NULL;
27368 l_adr_value_type_code         := NULL;
27369 l_adr_value_combination_id    := NULL;
27370 l_adr_value_segment_code      := NULL;
27371 
27372 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27373 l_bflow_class_code           := '';    -- 4219869 Business Flow
27374 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27375 l_budgetary_control_flag     := 'Y';
27376 
27377 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27378 l_bflow_applied_to_amt       := NULL; -- 5132302
27379 l_entered_amt_idx            := NULL;          -- 4262811
27380 l_accted_amt_idx             := NULL;          -- 4262811
27381 l_acc_rev_flag               := NULL;          -- 4262811
27382 l_accrual_line_num           := NULL;          -- 4262811
27383 l_tmp_amt                    := NULL;          -- 4262811
27384 --
27385  
27386 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27387     l_balance_type_code <> 'B' THEN
27388 IF NVL(
27389 xla_ae_sources_pkg.GetSystemSourceChar(
27390    p_source_code           => 'XLA_EVENT_TYPE_CODE'
27391  , p_source_type_code      => 'Y'
27392  , p_source_application_id =>  602
27393 ),'
27394 ') =  'RELEASE_RESERVED' AND 
27395 NVL(p_source_13,'
27396 ') =  'M' AND 
27397 NVL(p_source_10,'
27398 ') =  'Y' AND 
27399 p_source_11 >  0
27400  THEN 
27401 
27402    --
27403    XLA_AE_LINES_PKG.SetNewLine;
27404 
27405    p_balance_type_code          := l_balance_type_code;
27406    -- set the flag so later we will know whether the gain loss line needs to be created
27407    
27408    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27409      p_actual_flag :='A';
27410    END IF;
27411 
27412    --
27413    -- bulk performance
27414    --
27415    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27416                                       p_header_num   => 0); -- 4262811
27417    --
27418    -- set accounting line options
27419    --
27420    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27421            p_natural_side_code          => 'C'
27422          , p_gain_or_loss_flag          => 'N'
27423          , p_gl_transfer_mode_code      => 'S'
27424          , p_acct_entry_type_code       => 'A'
27425          , p_switch_side_flag           => 'Y'
27426          , p_merge_duplicate_code       => 'N'
27427          );
27428    --
27429    l_acc_rev_natural_side_code := 'D';  -- 4262811
27430    -- 
27431    --
27432    -- set accounting line type info
27433    --
27434    xla_ae_lines_pkg.SetAcctLineType
27435       (p_component_type             => l_component_type
27436       ,p_event_type_code            => l_event_type_code
27437       ,p_line_definition_owner_code => l_line_definition_owner_code
27438       ,p_line_definition_code       => l_line_definition_code
27439       ,p_accounting_line_code       => l_component_code
27440       ,p_accounting_line_type_code  => l_component_type_code
27441       ,p_accounting_line_appl_id    => l_component_appl_id
27442       ,p_amb_context_code           => l_amb_context_code
27443       ,p_entity_code                => l_entity_code
27444       ,p_event_class_code           => l_event_class_code);
27445    --
27446    -- set accounting class
27447    --
27448    xla_ae_lines_pkg.SetAcctClass(
27449            p_accounting_class_code  => 'PURCHASE_ORDER'
27450          , p_ae_header_id           => l_ae_header_id
27451          );
27452 
27453    --
27454    -- set rounding class
27455    --
27456    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27457                       'PURCHASE_ORDER';
27458 
27459    --
27460    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27461    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27462    --
27463    -- bulk performance
27464    --
27465    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27466 
27467    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27468       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27469 
27470    -- 4955764
27471    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27473 
27474    -- 4458381 Public Sector Enh
27475    
27476    --
27477    -- set accounting attributes for the line type
27478    --
27479    l_entered_amt_idx := 23;
27480    l_accted_amt_idx  := 28;
27481    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27482    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27483    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
27484    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
27485    l_rec_acct_attrs.array_num_value(2)  := 
27486 xla_ae_sources_pkg.GetSystemSourceNum(
27487    p_source_code           => 'XLA_EVENT_APPL_ID'
27488  , p_source_type_code      => 'Y'
27489  , p_source_application_id =>  602
27490 );
27491    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
27492    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
27493    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
27494    l_rec_acct_attrs.array_char_value(4)  := 
27495 xla_ae_sources_pkg.GetSystemSourceChar(
27496    p_source_code           => 'XLA_ENTITY_CODE'
27497  , p_source_type_code      => 'Y'
27498  , p_source_application_id =>  602
27499 );
27500    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
27501    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
27502    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
27503    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
27504    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
27505    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
27506    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
27507    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
27508    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
27509    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
27510    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
27511    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
27512    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
27513    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
27514    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
27515    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
27516    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
27517    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
27518    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
27519    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
27520    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
27521    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
27522    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
27523    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
27524    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
27525    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
27526    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
27527    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
27528    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
27529    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
27530    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
27531    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
27532    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
27533    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
27534    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
27535    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
27536    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
27537    l_rec_acct_attrs.array_num_value(23)  := p_source_38;
27538    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
27539    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
27540    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
27541    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
27542    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
27543    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
27544    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
27545    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
27546    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
27547    l_rec_acct_attrs.array_num_value(28)  := p_source_38;
27548    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
27549    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
27550    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
27551    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
27552    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
27553    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
27554    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
27555    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
27556 
27557    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27558    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27559 
27560    ---------------------------------------------------------------------------------------------------------------
27561    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27562    ---------------------------------------------------------------------------------------------------------------
27563    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27564 
27565    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27566    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27567 
27568    IF xla_accounting_cache_pkg.GetValueChar
27569          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27570          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27571    AND l_bflow_method_code = 'PRIOR_ENTRY'
27572 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27573    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27574          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27575        )
27576    THEN
27577          xla_ae_lines_pkg.BflowUpgEntry
27578            (p_business_method_code    => l_bflow_method_code
27579            ,p_business_class_code     => l_bflow_class_code
27580            ,p_balance_type            => l_balance_type_code);
27581    ELSE
27582       NULL;
27583 -- No business flow processing for business flow method of NONE.
27584    END IF;
27585 
27586    --
27587    -- call analytical criteria
27588    --
27589    
27590    --
27591    -- call description
27592    --
27593    
27594 xla_ae_lines_pkg.SetLineDescription(
27595    p_ae_header_id => l_ae_header_id
27596   ,p_description  => Description_2 (
27597      p_application_id         => p_application_id
27598    , p_ae_header_id           => l_ae_header_id 
27599 , p_source_3 => p_source_3
27600    )
27601 );
27602 
27603 
27604    --
27605    -- call ADRs
27606    -- Bug 4922099
27607    --
27608    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27609         (NVL(l_actual_upg_option, 'N') = 'O') OR
27610         (NVL(l_enc_upg_option, 'N') = 'O')
27611       )
27612    THEN
27613    NULL;
27614    --
27615    --
27616    
27617   l_ccid := AcctDerRule_9(
27618            p_application_id           => p_application_id
27619          , p_ae_header_id             => l_ae_header_id 
27620 , p_source_9 => p_source_9
27621          , x_transaction_coa_id       => l_adr_transaction_coa_id
27622          , x_accounting_coa_id        => l_adr_accounting_coa_id
27623          , x_value_type_code          => l_adr_value_type_code
27624          , p_side                     => 'NA'
27625    );
27626 
27627    xla_ae_lines_pkg.set_ccid(
27628     p_code_combination_id          => l_ccid
27629   , p_value_type_code              => l_adr_value_type_code
27630   , p_transaction_coa_id           => l_adr_transaction_coa_id
27631   , p_accounting_coa_id            => l_adr_accounting_coa_id
27632   , p_adr_code                     => 'FV_ACCOUNT_RULE'
27633   , p_adr_type_code                => 'S'
27634   , p_component_type               => l_component_type
27635   , p_component_code               => l_component_code
27636   , p_component_type_code          => l_component_type_code
27637   , p_component_appl_id            => l_component_appl_id
27638   , p_amb_context_code             => l_amb_context_code
27639   , p_side                         => 'NA'
27640   );
27641 
27642 
27643    l_segment := AcctDerRule_7(
27644            p_application_id           => p_application_id
27645          , p_ae_header_id             => l_ae_header_id 
27646          , x_transaction_coa_id       => l_adr_transaction_coa_id
27647          , x_accounting_coa_id        => l_adr_accounting_coa_id
27648          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
27649          , x_flex_value_set_id        => l_adr_flex_value_set_id
27650          , x_value_type_code          => l_adr_value_type_code
27651          , x_value_combination_id     => l_adr_value_combination_id
27652          , x_value_segment_code       => l_adr_value_segment_code
27653          , p_side                     => 'NA'
27654          , p_override_seg_flag        => 'Y'
27655    );
27656 
27657    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
27658 
27659       xla_ae_lines_pkg.set_segment(
27660           p_to_segment_code         => 'GL_ACCOUNT'
27661         , p_segment_value           => l_segment
27662         , p_from_segment_code       => l_adr_value_segment_code
27663         , p_from_combination_id     => l_adr_value_combination_id
27664         , p_value_type_code         => l_adr_value_type_code
27665         , p_transaction_coa_id      => l_adr_transaction_coa_id
27666         , p_accounting_coa_id       => l_adr_accounting_coa_id
27667         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
27668         , p_flex_value_set_id       => l_adr_flex_value_set_id
27669         , p_adr_code                => 'FV_488101_PURCHASING'
27670         , p_adr_type_code           => 'S'
27671         , p_component_type          => l_component_type
27672         , p_component_code          => l_component_code
27673         , p_component_type_code     => l_component_type_code
27674         , p_component_appl_id       => l_component_appl_id
27675         , p_amb_context_code        => l_amb_context_code
27676         , p_entity_code             => 'RELEASE'
27677         , p_event_class_code        => 'RELEASE'
27678         , p_side                    => 'NA'
27679         );
27680 
27681   END IF;
27682 
27683    --
27684    --
27685    END IF;
27686    --
27687    -- Bug 4922099
27688    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27689           (NVL(l_enc_upg_option, 'N') = 'O')
27690         ) AND
27691         (l_bflow_method_code = 'PRIOR_ENTRY')
27692       )
27693    THEN
27694       IF
27695       --
27696       1 = 2
27697       --
27698       THEN
27699       xla_accounting_err_pkg.build_message
27700                                     (p_appli_s_name            => 'XLA'
27701                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27702                                     ,p_token_1                 => 'LINE_NUMBER'
27703                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27704                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27705                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27706                                                                              l_component_type
27707                                                                             ,l_component_code
27708                                                                             ,l_component_type_code
27709                                                                             ,l_component_appl_id
27710                                                                             ,l_amb_context_code
27711                                                                             ,l_entity_code
27712                                                                             ,l_event_class_code
27713                                                                            )
27714                                     ,p_token_3                 => 'OWNER'
27715                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27716                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27717                                                                           ,p_lookup_code    => l_component_type_code
27718                                                                          )
27719                                     ,p_token_4                 => 'PRODUCT_NAME'
27720                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27721                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27722                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27723                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27724                                     ,p_ae_header_id            =>  NULL
27725                                        );
27726 
27727         IF (C_LEVEL_ERROR>= g_log_level) THEN
27728                  trace
27729                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27730                       ,p_level    => C_LEVEL_ERROR
27731                       ,p_module   => l_log_module);
27732         END IF;
27733       END IF;
27734    END IF;
27735    --
27736    --
27737    ------------------------------------------------------------------------------------------------
27738    -- 4219869 Business Flow
27739    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27740    -- Prior Entry.  Currently, the following code is always generated.
27741    ------------------------------------------------------------------------------------------------
27742    XLA_AE_LINES_PKG.ValidateCurrentLine;
27743 
27744    ------------------------------------------------------------------------------------
27745    -- 4219869 Business Flow
27746    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27747    ------------------------------------------------------------------------------------
27748    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27749 
27750    ----------------------------------------------------------------------------------
27751    -- 4219869 Business Flow
27752    -- Update journal entry status -- Need to generate this within IF <condition>
27753    ----------------------------------------------------------------------------------
27754    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27755          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27756          ,p_balance_type_code => l_balance_type_code
27757          );
27758 
27759    -------------------------------------------------------------------------------------------
27760    -- 4262811 - Generate the Accrual Reversal lines
27761    -------------------------------------------------------------------------------------------
27762    BEGIN
27763       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27764                               (g_array_event(p_event_id).array_value_num('header_index'));
27765       IF l_acc_rev_flag IS NULL THEN
27766          l_acc_rev_flag := 'N';
27767       END IF;
27768    EXCEPTION
27769       WHEN OTHERS THEN
27770          l_acc_rev_flag := 'N';
27771    END;
27772    --
27773    IF (l_acc_rev_flag = 'Y') THEN
27774 
27775        -- 4645092  ------------------------------------------------------------------------------
27776        -- To allow MPA report to determine if it should generate report process
27777        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27778        ------------------------------------------------------------------------------------------
27779 
27780        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27781        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27782 
27783        --
27784        -- Update the line information that should be overwritten
27785        --
27786        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27787                                          p_header_num   => 1);
27788        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27789 
27790        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27791 
27792        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27793           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27794        END IF;
27795 
27796       --
27797       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27798       --
27799       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27800           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27801       ELSE
27802           ---------------------------------------------------------------------------------------------------
27803           -- 4262811a Switch Sign
27804           ---------------------------------------------------------------------------------------------------
27805           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27806           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27807                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27808           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27809                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27810           -- 5132302
27811           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27812                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27813 
27814       END IF;
27815 
27816       -- 4955764
27817       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27818       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27819 
27820 
27821       XLA_AE_LINES_PKG.ValidateCurrentLine;
27822       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27823 
27824       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27825                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27826                ,p_balance_type_code => l_balance_type_code);
27827 
27828    END IF;
27829 
27830    -----------------------------------------------------------------------------------------
27831    -- 4262811 Multiperiod Accounting
27832    -----------------------------------------------------------------------------------------
27833      -- No MPA option is assigned.
27834 
27835 
27836 END IF;
27837 END IF;
27838 --
27839 
27840 --
27841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27842    trace
27843       (p_msg      => 'END of AcctLineType_54'
27844       ,p_level    => C_LEVEL_PROCEDURE
27845       ,p_module   => l_log_module);
27846 END IF;
27847 --
27848 EXCEPTION
27849   WHEN xla_exceptions_pkg.application_exception THEN
27850       RAISE;
27851   WHEN OTHERS THEN
27852        xla_exceptions_pkg.raise_message
27853            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_54');
27854 END AcctLineType_54;
27855 --
27856 
27857 ---------------------------------------
27858 --
27859 -- PRIVATE FUNCTION
27860 --         AcctLineType_55
27861 --
27862 ---------------------------------------
27863 PROCEDURE AcctLineType_55 (
27864   p_application_id        IN NUMBER
27865  ,p_event_id              IN NUMBER
27866  ,p_calculate_acctd_flag  IN VARCHAR2
27867  ,p_calculate_g_l_flag    IN VARCHAR2
27868  ,p_actual_flag           IN OUT VARCHAR2
27869  ,p_balance_type_code     OUT VARCHAR2
27870  ,p_gain_or_loss_ref      OUT VARCHAR2
27871  
27872 --Journal entry Line Description
27873  , p_source_3            IN VARCHAR2
27874 --Federal Fund Category
27875  , p_source_7            IN VARCHAR2
27876 --Federal Fund Expired Status
27877  , p_source_8            IN VARCHAR2
27878 --Budget Account
27879  , p_source_9            IN NUMBER
27880 --Federal Prior Year Flag
27881  , p_source_10            IN VARCHAR2
27882 --Federal Net Pya Adj Amt
27883  , p_source_11            IN NUMBER
27884 --Main Or Backing Code
27885  , p_source_13            IN VARCHAR2
27886 --Accounting Reversal Flag
27887  , p_source_15            IN VARCHAR2
27888 --Distribution Link Type
27889  , p_source_17            IN VARCHAR2
27890 --PO Distribution Identifier
27891  , p_source_19            IN NUMBER
27892 --Applied To Application Identifier
27893  , p_source_21            IN NUMBER
27894 --Applied To Distribution Link Type
27895  , p_source_22            IN VARCHAR2
27896 --Applied To Entity Code
27897  , p_source_23            IN VARCHAR2
27898 --Applied To Distribution Identifier 1
27899  , p_source_24            IN NUMBER
27900 --Applied To Header Identifier 1
27901  , p_source_25            IN NUMBER
27902 --Entered Amount
27903  , p_source_26            IN NUMBER
27904 --Currency Code
27905  , p_source_27            IN VARCHAR2
27906 --Accounted Amount
27907  , p_source_28            IN NUMBER
27908 --PO Encumbrance Upgrade Option
27909  , p_source_29            IN VARCHAR2
27910 --PO Upgrade Encumbrance Type Identifier
27911  , p_source_32            IN NUMBER
27912 --Currency Conversion Date
27913  , p_source_35            IN DATE
27914 --Currency Conversion Rate
27915  , p_source_36            IN NUMBER
27916 --Currency Conversion Type
27917  , p_source_37            IN VARCHAR2
27918 --Federal Pya Differential Amt
27919  , p_source_38            IN NUMBER
27920 --PO Release Identifier
27921  , p_source_41            IN NUMBER
27922 )
27923 IS
27924 
27925 l_component_type              VARCHAR2(80);
27926 l_component_code              VARCHAR2(30);
27927 l_component_type_code         VARCHAR2(1);
27928 l_component_appl_id           INTEGER;
27929 l_amb_context_code            VARCHAR2(30);
27930 l_entity_code                 VARCHAR2(30);
27931 l_event_class_code            VARCHAR2(30);
27932 l_ae_header_id                NUMBER;
27933 l_event_type_code             VARCHAR2(30);
27934 l_line_definition_code        VARCHAR2(30);
27935 l_line_definition_owner_code  VARCHAR2(1);
27936 --
27937 -- adr variables
27938 l_segment                     VARCHAR2(30);
27939 l_ccid                        NUMBER;
27940 l_adr_transaction_coa_id      NUMBER;
27941 l_adr_accounting_coa_id       NUMBER;
27942 l_adr_flexfield_segment_code  VARCHAR2(30);
27943 l_adr_flex_value_set_id       NUMBER;
27944 l_adr_value_type_code         VARCHAR2(30);
27945 l_adr_value_combination_id    NUMBER;
27946 l_adr_value_segment_code      VARCHAR2(30);
27947 
27948 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27949 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27950 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27951 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27952 
27953 -- 4262811 Variables ------------------------------------------------------------------------------------------
27954 l_entered_amt_idx             NUMBER;
27955 l_accted_amt_idx              NUMBER;
27956 l_acc_rev_flag                VARCHAR2(1);
27957 l_accrual_line_num            NUMBER;
27958 l_tmp_amt                     NUMBER;
27959 l_acc_rev_natural_side_code   VARCHAR2(1);
27960 
27961 l_num_entries                 NUMBER;
27962 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27963 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27964 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27965 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27966 l_recog_line_1                NUMBER;
27967 l_recog_line_2                NUMBER;
27968 
27969 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27970 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27971 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27972 
27973 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27974 
27975 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27976 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27977 
27978 ---------------------------------------------------------------------------------------------------------------
27979 
27980 
27981 --
27982 -- bulk performance
27983 --
27984 l_balance_type_code           VARCHAR2(1);
27985 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27986 l_log_module                  VARCHAR2(240);
27987 
27988 --
27989 -- Upgrade strategy
27990 --
27991 l_actual_upg_option           VARCHAR2(1);
27992 l_enc_upg_option           VARCHAR2(1);
27993 
27994 --
27995 BEGIN
27996 --
27997 IF g_log_enabled THEN
27998       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
27999 END IF;
28000 --
28001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28002 
28003       trace
28004          (p_msg      => 'BEGIN of AcctLineType_55'
28005          ,p_level    => C_LEVEL_PROCEDURE
28006          ,p_module   => l_log_module);
28007 
28008 END IF;
28009 --
28010 l_component_type             := 'AMB_JLT';
28011 l_component_code             := 'FV_REL_PYA_DIFF_RESERVE_DR';
28012 l_component_type_code        := 'S';
28013 l_component_appl_id          :=  201;
28014 l_amb_context_code           := 'DEFAULT';
28015 l_entity_code                := 'RELEASE';
28016 l_event_class_code           := 'RELEASE';
28017 l_event_type_code            := 'RELEASE_ALL';
28018 l_line_definition_owner_code := 'S';
28019 l_line_definition_code       := 'FV_RELEASE_ALL';
28020 --
28021 l_balance_type_code          := 'A';
28022 l_segment                     := NULL;
28023 l_ccid                        := NULL;
28024 l_adr_transaction_coa_id      := NULL;
28025 l_adr_accounting_coa_id       := NULL;
28026 l_adr_flexfield_segment_code  := NULL;
28027 l_adr_flex_value_set_id       := NULL;
28028 l_adr_value_type_code         := NULL;
28029 l_adr_value_combination_id    := NULL;
28030 l_adr_value_segment_code      := NULL;
28031 
28032 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28033 l_bflow_class_code           := '';    -- 4219869 Business Flow
28034 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28035 l_budgetary_control_flag     := 'Y';
28036 
28037 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28038 l_bflow_applied_to_amt       := NULL; -- 5132302
28039 l_entered_amt_idx            := NULL;          -- 4262811
28040 l_accted_amt_idx             := NULL;          -- 4262811
28041 l_acc_rev_flag               := NULL;          -- 4262811
28042 l_accrual_line_num           := NULL;          -- 4262811
28043 l_tmp_amt                    := NULL;          -- 4262811
28044 --
28045  
28046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28047     l_balance_type_code <> 'B' THEN
28048 IF NVL(
28049 xla_ae_sources_pkg.GetSystemSourceChar(
28050    p_source_code           => 'XLA_EVENT_TYPE_CODE'
28051  , p_source_type_code      => 'Y'
28052  , p_source_application_id =>  602
28053 ),'
28054 ') =  'RELEASE_RESERVED' AND 
28055 NVL(p_source_13,'
28056 ') =  'M' AND 
28057 NVL(p_source_10,'
28058 ') =  'Y' AND 
28059 NVL(p_source_11,9E125) <>  0 AND 
28060 p_source_11 IS NOT NULL 
28061  THEN 
28062 
28063    --
28064    XLA_AE_LINES_PKG.SetNewLine;
28065 
28066    p_balance_type_code          := l_balance_type_code;
28067    -- set the flag so later we will know whether the gain loss line needs to be created
28068    
28069    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28070      p_actual_flag :='A';
28071    END IF;
28072 
28073    --
28074    -- bulk performance
28075    --
28076    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28077                                       p_header_num   => 0); -- 4262811
28078    --
28079    -- set accounting line options
28080    --
28081    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28082            p_natural_side_code          => 'D'
28083          , p_gain_or_loss_flag          => 'N'
28084          , p_gl_transfer_mode_code      => 'S'
28085          , p_acct_entry_type_code       => 'A'
28086          , p_switch_side_flag           => 'Y'
28087          , p_merge_duplicate_code       => 'N'
28088          );
28089    --
28090    l_acc_rev_natural_side_code := 'C';  -- 4262811
28091    -- 
28092    --
28093    -- set accounting line type info
28094    --
28095    xla_ae_lines_pkg.SetAcctLineType
28096       (p_component_type             => l_component_type
28097       ,p_event_type_code            => l_event_type_code
28098       ,p_line_definition_owner_code => l_line_definition_owner_code
28099       ,p_line_definition_code       => l_line_definition_code
28100       ,p_accounting_line_code       => l_component_code
28101       ,p_accounting_line_type_code  => l_component_type_code
28102       ,p_accounting_line_appl_id    => l_component_appl_id
28103       ,p_amb_context_code           => l_amb_context_code
28104       ,p_entity_code                => l_entity_code
28105       ,p_event_class_code           => l_event_class_code);
28106    --
28107    -- set accounting class
28108    --
28109    xla_ae_lines_pkg.SetAcctClass(
28110            p_accounting_class_code  => 'PURCHASE_ORDER'
28111          , p_ae_header_id           => l_ae_header_id
28112          );
28113 
28114    --
28115    -- set rounding class
28116    --
28117    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28118                       'PURCHASE_ORDER';
28119 
28120    --
28121    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28122    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28123    --
28124    -- bulk performance
28125    --
28126    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28127 
28128    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28129       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28130 
28131    -- 4955764
28132    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28133       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28134 
28135    -- 4458381 Public Sector Enh
28136    
28137    --
28138    -- set accounting attributes for the line type
28139    --
28140    l_entered_amt_idx := 23;
28141    l_accted_amt_idx  := 28;
28142    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28143    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28144    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
28145    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
28146    l_rec_acct_attrs.array_num_value(2)  := 
28147 xla_ae_sources_pkg.GetSystemSourceNum(
28148    p_source_code           => 'XLA_EVENT_APPL_ID'
28149  , p_source_type_code      => 'Y'
28150  , p_source_application_id =>  602
28151 );
28152    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
28153    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
28154    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
28155    l_rec_acct_attrs.array_char_value(4)  := 
28156 xla_ae_sources_pkg.GetSystemSourceChar(
28157    p_source_code           => 'XLA_ENTITY_CODE'
28158  , p_source_type_code      => 'Y'
28159  , p_source_application_id =>  602
28160 );
28161    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
28162    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
28163    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
28164    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
28165    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
28166    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
28167    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28168    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
28169    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
28170    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
28171    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
28172    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
28173    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28174    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
28175    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
28176    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
28177    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
28178    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
28179    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
28180    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
28181    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
28182    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
28183    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
28184    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
28185    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
28186    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
28187    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
28188    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
28189    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
28190    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
28191    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
28192    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
28193    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
28194    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
28195    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
28196    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
28197    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
28198    l_rec_acct_attrs.array_num_value(23)  := p_source_38;
28199    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
28200    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
28201    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
28202    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
28203    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
28204    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
28205    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
28206    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
28207    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
28208    l_rec_acct_attrs.array_num_value(28)  := p_source_38;
28209    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
28210    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
28211    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
28212    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
28213    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
28214    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
28215    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
28216    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
28217 
28218    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28219    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28220 
28221    ---------------------------------------------------------------------------------------------------------------
28222    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28223    ---------------------------------------------------------------------------------------------------------------
28224    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28225 
28226    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28227    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28228 
28229    IF xla_accounting_cache_pkg.GetValueChar
28230          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28231          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28232    AND l_bflow_method_code = 'PRIOR_ENTRY'
28233 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28234    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28235          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28236        )
28237    THEN
28238          xla_ae_lines_pkg.BflowUpgEntry
28239            (p_business_method_code    => l_bflow_method_code
28240            ,p_business_class_code     => l_bflow_class_code
28241            ,p_balance_type            => l_balance_type_code);
28242    ELSE
28243       NULL;
28244 -- No business flow processing for business flow method of NONE.
28245    END IF;
28246 
28247    --
28248    -- call analytical criteria
28249    --
28250    
28251    --
28252    -- call description
28253    --
28254    
28255 xla_ae_lines_pkg.SetLineDescription(
28256    p_ae_header_id => l_ae_header_id
28257   ,p_description  => Description_2 (
28258      p_application_id         => p_application_id
28259    , p_ae_header_id           => l_ae_header_id 
28260 , p_source_3 => p_source_3
28261    )
28262 );
28263 
28264 
28265    --
28266    -- call ADRs
28267    -- Bug 4922099
28268    --
28269    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28270         (NVL(l_actual_upg_option, 'N') = 'O') OR
28271         (NVL(l_enc_upg_option, 'N') = 'O')
28272       )
28273    THEN
28274    NULL;
28275    --
28276    --
28277    
28278   l_ccid := AcctDerRule_9(
28279            p_application_id           => p_application_id
28280          , p_ae_header_id             => l_ae_header_id 
28281 , p_source_9 => p_source_9
28282          , x_transaction_coa_id       => l_adr_transaction_coa_id
28283          , x_accounting_coa_id        => l_adr_accounting_coa_id
28284          , x_value_type_code          => l_adr_value_type_code
28285          , p_side                     => 'NA'
28286    );
28287 
28288    xla_ae_lines_pkg.set_ccid(
28289     p_code_combination_id          => l_ccid
28290   , p_value_type_code              => l_adr_value_type_code
28291   , p_transaction_coa_id           => l_adr_transaction_coa_id
28292   , p_accounting_coa_id            => l_adr_accounting_coa_id
28293   , p_adr_code                     => 'FV_ACCOUNT_RULE'
28294   , p_adr_type_code                => 'S'
28295   , p_component_type               => l_component_type
28296   , p_component_code               => l_component_code
28297   , p_component_type_code          => l_component_type_code
28298   , p_component_appl_id            => l_component_appl_id
28299   , p_amb_context_code             => l_amb_context_code
28300   , p_side                         => 'NA'
28301   );
28302 
28303 
28304    l_segment := AcctDerRule_12(
28305            p_application_id           => p_application_id
28306          , p_ae_header_id             => l_ae_header_id 
28307 , p_source_7 => p_source_7
28308 , p_source_8 => p_source_8
28309 , p_source_10 => p_source_10
28310 , p_source_11 => p_source_11
28311          , x_transaction_coa_id       => l_adr_transaction_coa_id
28312          , x_accounting_coa_id        => l_adr_accounting_coa_id
28313          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
28314          , x_flex_value_set_id        => l_adr_flex_value_set_id
28315          , x_value_type_code          => l_adr_value_type_code
28316          , x_value_combination_id     => l_adr_value_combination_id
28317          , x_value_segment_code       => l_adr_value_segment_code
28318          , p_side                     => 'NA'
28319          , p_override_seg_flag        => 'Y'
28320    );
28321 
28322    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
28323 
28324       xla_ae_lines_pkg.set_segment(
28325           p_to_segment_code         => 'GL_ACCOUNT'
28326         , p_segment_value           => l_segment
28327         , p_from_segment_code       => l_adr_value_segment_code
28328         , p_from_combination_id     => l_adr_value_combination_id
28329         , p_value_type_code         => l_adr_value_type_code
28330         , p_transaction_coa_id      => l_adr_transaction_coa_id
28331         , p_accounting_coa_id       => l_adr_accounting_coa_id
28332         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
28333         , p_flex_value_set_id       => l_adr_flex_value_set_id
28334         , p_adr_code                => 'FV_PYA_46X002_487101'
28335         , p_adr_type_code           => 'S'
28336         , p_component_type          => l_component_type
28337         , p_component_code          => l_component_code
28338         , p_component_type_code     => l_component_type_code
28339         , p_component_appl_id       => l_component_appl_id
28340         , p_amb_context_code        => l_amb_context_code
28341         , p_entity_code             => 'RELEASE'
28342         , p_event_class_code        => 'RELEASE'
28343         , p_side                    => 'NA'
28344         );
28345 
28346   END IF;
28347 
28348    --
28349    --
28350    END IF;
28351    --
28352    -- Bug 4922099
28353    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28354           (NVL(l_enc_upg_option, 'N') = 'O')
28355         ) AND
28356         (l_bflow_method_code = 'PRIOR_ENTRY')
28357       )
28358    THEN
28359       IF
28360       --
28361       1 = 2
28362       --
28363       THEN
28364       xla_accounting_err_pkg.build_message
28365                                     (p_appli_s_name            => 'XLA'
28366                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28367                                     ,p_token_1                 => 'LINE_NUMBER'
28368                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28369                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28370                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28371                                                                              l_component_type
28372                                                                             ,l_component_code
28373                                                                             ,l_component_type_code
28374                                                                             ,l_component_appl_id
28375                                                                             ,l_amb_context_code
28376                                                                             ,l_entity_code
28377                                                                             ,l_event_class_code
28378                                                                            )
28379                                     ,p_token_3                 => 'OWNER'
28380                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28381                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28382                                                                           ,p_lookup_code    => l_component_type_code
28383                                                                          )
28384                                     ,p_token_4                 => 'PRODUCT_NAME'
28385                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28386                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28387                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28388                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28389                                     ,p_ae_header_id            =>  NULL
28390                                        );
28391 
28392         IF (C_LEVEL_ERROR>= g_log_level) THEN
28393                  trace
28394                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28395                       ,p_level    => C_LEVEL_ERROR
28396                       ,p_module   => l_log_module);
28397         END IF;
28398       END IF;
28399    END IF;
28400    --
28401    --
28402    ------------------------------------------------------------------------------------------------
28403    -- 4219869 Business Flow
28404    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28405    -- Prior Entry.  Currently, the following code is always generated.
28406    ------------------------------------------------------------------------------------------------
28407    XLA_AE_LINES_PKG.ValidateCurrentLine;
28408 
28409    ------------------------------------------------------------------------------------
28410    -- 4219869 Business Flow
28411    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28412    ------------------------------------------------------------------------------------
28413    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28414 
28415    ----------------------------------------------------------------------------------
28416    -- 4219869 Business Flow
28417    -- Update journal entry status -- Need to generate this within IF <condition>
28418    ----------------------------------------------------------------------------------
28419    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28420          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28421          ,p_balance_type_code => l_balance_type_code
28422          );
28423 
28424    -------------------------------------------------------------------------------------------
28425    -- 4262811 - Generate the Accrual Reversal lines
28426    -------------------------------------------------------------------------------------------
28427    BEGIN
28428       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28429                               (g_array_event(p_event_id).array_value_num('header_index'));
28430       IF l_acc_rev_flag IS NULL THEN
28431          l_acc_rev_flag := 'N';
28432       END IF;
28433    EXCEPTION
28434       WHEN OTHERS THEN
28435          l_acc_rev_flag := 'N';
28436    END;
28437    --
28438    IF (l_acc_rev_flag = 'Y') THEN
28439 
28440        -- 4645092  ------------------------------------------------------------------------------
28441        -- To allow MPA report to determine if it should generate report process
28442        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28443        ------------------------------------------------------------------------------------------
28444 
28445        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28446        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28447 
28448        --
28449        -- Update the line information that should be overwritten
28450        --
28451        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28452                                          p_header_num   => 1);
28453        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28454 
28455        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28456 
28457        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28458           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28459        END IF;
28460 
28461       --
28462       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28463       --
28464       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28465           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28466       ELSE
28467           ---------------------------------------------------------------------------------------------------
28468           -- 4262811a Switch Sign
28469           ---------------------------------------------------------------------------------------------------
28470           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28471           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28472                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28473           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28474                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28475           -- 5132302
28476           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28477                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28478 
28479       END IF;
28480 
28481       -- 4955764
28482       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28483       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28484 
28485 
28486       XLA_AE_LINES_PKG.ValidateCurrentLine;
28487       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28488 
28489       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28490                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28491                ,p_balance_type_code => l_balance_type_code);
28492 
28493    END IF;
28494 
28495    -----------------------------------------------------------------------------------------
28496    -- 4262811 Multiperiod Accounting
28497    -----------------------------------------------------------------------------------------
28498      -- No MPA option is assigned.
28499 
28500 
28501 END IF;
28502 END IF;
28503 --
28504 
28505 --
28506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28507    trace
28508       (p_msg      => 'END of AcctLineType_55'
28509       ,p_level    => C_LEVEL_PROCEDURE
28510       ,p_module   => l_log_module);
28511 END IF;
28512 --
28513 EXCEPTION
28514   WHEN xla_exceptions_pkg.application_exception THEN
28515       RAISE;
28516   WHEN OTHERS THEN
28517        xla_exceptions_pkg.raise_message
28518            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_55');
28519 END AcctLineType_55;
28520 --
28521 
28522 ---------------------------------------
28523 --
28524 -- PRIVATE FUNCTION
28525 --         AcctLineType_56
28526 --
28527 ---------------------------------------
28528 PROCEDURE AcctLineType_56 (
28529   p_application_id        IN NUMBER
28530  ,p_event_id              IN NUMBER
28531  ,p_calculate_acctd_flag  IN VARCHAR2
28532  ,p_calculate_g_l_flag    IN VARCHAR2
28533  ,p_actual_flag           IN OUT VARCHAR2
28534  ,p_balance_type_code     OUT VARCHAR2
28535  ,p_gain_or_loss_ref      OUT VARCHAR2
28536  
28537 --Journal entry Line Description
28538  , p_source_3            IN VARCHAR2
28539 --Budget Account
28540  , p_source_9            IN NUMBER
28541 --Federal Prior Year Flag
28542  , p_source_10            IN VARCHAR2
28543 --Federal Net Pya Adj Amt
28544  , p_source_11            IN NUMBER
28545 --Main Or Backing Code
28546  , p_source_13            IN VARCHAR2
28547 --Accounting Reversal Flag
28548  , p_source_15            IN VARCHAR2
28549 --Distribution Link Type
28550  , p_source_17            IN VARCHAR2
28551 --PO Distribution Identifier
28552  , p_source_19            IN NUMBER
28553 --Applied To Application Identifier
28554  , p_source_21            IN NUMBER
28555 --Applied To Distribution Link Type
28556  , p_source_22            IN VARCHAR2
28557 --Applied To Entity Code
28558  , p_source_23            IN VARCHAR2
28559 --Applied To Distribution Identifier 1
28560  , p_source_24            IN NUMBER
28561 --Applied To Header Identifier 1
28562  , p_source_25            IN NUMBER
28563 --Entered Amount
28564  , p_source_26            IN NUMBER
28565 --Currency Code
28566  , p_source_27            IN VARCHAR2
28567 --Accounted Amount
28568  , p_source_28            IN NUMBER
28569 --PO Encumbrance Upgrade Option
28570  , p_source_29            IN VARCHAR2
28571 --PO Upgrade Encumbrance Type Identifier
28572  , p_source_32            IN NUMBER
28573 --Currency Conversion Date
28574  , p_source_35            IN DATE
28575 --Currency Conversion Rate
28576  , p_source_36            IN NUMBER
28577 --Currency Conversion Type
28578  , p_source_37            IN VARCHAR2
28579 --Federal Anticipated Amt
28580  , p_source_39            IN NUMBER
28581 --PO Release Identifier
28582  , p_source_41            IN NUMBER
28583 )
28584 IS
28585 
28586 l_component_type              VARCHAR2(80);
28587 l_component_code              VARCHAR2(30);
28588 l_component_type_code         VARCHAR2(1);
28589 l_component_appl_id           INTEGER;
28590 l_amb_context_code            VARCHAR2(30);
28591 l_entity_code                 VARCHAR2(30);
28592 l_event_class_code            VARCHAR2(30);
28593 l_ae_header_id                NUMBER;
28594 l_event_type_code             VARCHAR2(30);
28595 l_line_definition_code        VARCHAR2(30);
28596 l_line_definition_owner_code  VARCHAR2(1);
28597 --
28598 -- adr variables
28599 l_segment                     VARCHAR2(30);
28600 l_ccid                        NUMBER;
28601 l_adr_transaction_coa_id      NUMBER;
28602 l_adr_accounting_coa_id       NUMBER;
28603 l_adr_flexfield_segment_code  VARCHAR2(30);
28604 l_adr_flex_value_set_id       NUMBER;
28605 l_adr_value_type_code         VARCHAR2(30);
28606 l_adr_value_combination_id    NUMBER;
28607 l_adr_value_segment_code      VARCHAR2(30);
28608 
28609 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28610 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28611 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28612 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28613 
28614 -- 4262811 Variables ------------------------------------------------------------------------------------------
28615 l_entered_amt_idx             NUMBER;
28616 l_accted_amt_idx              NUMBER;
28617 l_acc_rev_flag                VARCHAR2(1);
28618 l_accrual_line_num            NUMBER;
28619 l_tmp_amt                     NUMBER;
28620 l_acc_rev_natural_side_code   VARCHAR2(1);
28621 
28622 l_num_entries                 NUMBER;
28623 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28624 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28625 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28626 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28627 l_recog_line_1                NUMBER;
28628 l_recog_line_2                NUMBER;
28629 
28630 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28631 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28632 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28633 
28634 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28635 
28636 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28637 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28638 
28639 ---------------------------------------------------------------------------------------------------------------
28640 
28641 
28642 --
28643 -- bulk performance
28644 --
28645 l_balance_type_code           VARCHAR2(1);
28646 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28647 l_log_module                  VARCHAR2(240);
28648 
28649 --
28650 -- Upgrade strategy
28651 --
28652 l_actual_upg_option           VARCHAR2(1);
28653 l_enc_upg_option           VARCHAR2(1);
28654 
28655 --
28656 BEGIN
28657 --
28658 IF g_log_enabled THEN
28659       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
28660 END IF;
28661 --
28662 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28663 
28664       trace
28665          (p_msg      => 'BEGIN of AcctLineType_56'
28666          ,p_level    => C_LEVEL_PROCEDURE
28667          ,p_module   => l_log_module);
28668 
28669 END IF;
28670 --
28671 l_component_type             := 'AMB_JLT';
28672 l_component_code             := 'FV_REL_PYA_DW_ANTICIAPTED_CR';
28673 l_component_type_code        := 'S';
28674 l_component_appl_id          :=  201;
28675 l_amb_context_code           := 'DEFAULT';
28676 l_entity_code                := 'RELEASE';
28677 l_event_class_code           := 'RELEASE';
28678 l_event_type_code            := 'RELEASE_ALL';
28679 l_line_definition_owner_code := 'S';
28680 l_line_definition_code       := 'FV_RELEASE_ALL';
28681 --
28682 l_balance_type_code          := 'A';
28683 l_segment                     := NULL;
28684 l_ccid                        := NULL;
28685 l_adr_transaction_coa_id      := NULL;
28686 l_adr_accounting_coa_id       := NULL;
28687 l_adr_flexfield_segment_code  := NULL;
28688 l_adr_flex_value_set_id       := NULL;
28689 l_adr_value_type_code         := NULL;
28690 l_adr_value_combination_id    := NULL;
28691 l_adr_value_segment_code      := NULL;
28692 
28693 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28694 l_bflow_class_code           := '';    -- 4219869 Business Flow
28695 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28696 l_budgetary_control_flag     := 'Y';
28697 
28698 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28699 l_bflow_applied_to_amt       := NULL; -- 5132302
28700 l_entered_amt_idx            := NULL;          -- 4262811
28701 l_accted_amt_idx             := NULL;          -- 4262811
28702 l_acc_rev_flag               := NULL;          -- 4262811
28703 l_accrual_line_num           := NULL;          -- 4262811
28704 l_tmp_amt                    := NULL;          -- 4262811
28705 --
28706  
28707 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28708     l_balance_type_code <> 'B' THEN
28709 IF NVL(
28710 xla_ae_sources_pkg.GetSystemSourceChar(
28711    p_source_code           => 'XLA_EVENT_TYPE_CODE'
28712  , p_source_type_code      => 'Y'
28713  , p_source_application_id =>  602
28714 ),'
28715 ') =  'RELEASE_RESERVED' AND 
28716 NVL(p_source_13,'
28717 ') =  'M' AND 
28718 NVL(p_source_10,'
28719 ') =  'Y' AND 
28720 p_source_11 <  0 AND 
28721 NVL(p_source_39,9E125) <>  0 AND 
28722 p_source_39 IS NOT NULL 
28723  THEN 
28724 
28725    --
28726    XLA_AE_LINES_PKG.SetNewLine;
28727 
28728    p_balance_type_code          := l_balance_type_code;
28729    -- set the flag so later we will know whether the gain loss line needs to be created
28730    
28731    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28732      p_actual_flag :='A';
28733    END IF;
28734 
28735    --
28736    -- bulk performance
28737    --
28738    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28739                                       p_header_num   => 0); -- 4262811
28740    --
28741    -- set accounting line options
28742    --
28743    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28744            p_natural_side_code          => 'C'
28745          , p_gain_or_loss_flag          => 'N'
28746          , p_gl_transfer_mode_code      => 'S'
28747          , p_acct_entry_type_code       => 'A'
28748          , p_switch_side_flag           => 'Y'
28749          , p_merge_duplicate_code       => 'N'
28750          );
28751    --
28752    l_acc_rev_natural_side_code := 'D';  -- 4262811
28753    -- 
28754    --
28755    -- set accounting line type info
28756    --
28757    xla_ae_lines_pkg.SetAcctLineType
28758       (p_component_type             => l_component_type
28759       ,p_event_type_code            => l_event_type_code
28760       ,p_line_definition_owner_code => l_line_definition_owner_code
28761       ,p_line_definition_code       => l_line_definition_code
28762       ,p_accounting_line_code       => l_component_code
28763       ,p_accounting_line_type_code  => l_component_type_code
28764       ,p_accounting_line_appl_id    => l_component_appl_id
28765       ,p_amb_context_code           => l_amb_context_code
28766       ,p_entity_code                => l_entity_code
28767       ,p_event_class_code           => l_event_class_code);
28768    --
28769    -- set accounting class
28770    --
28771    xla_ae_lines_pkg.SetAcctClass(
28772            p_accounting_class_code  => 'PURCHASE_ORDER'
28773          , p_ae_header_id           => l_ae_header_id
28774          );
28775 
28776    --
28777    -- set rounding class
28778    --
28779    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28780                       'PURCHASE_ORDER';
28781 
28782    --
28783    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28784    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28785    --
28786    -- bulk performance
28787    --
28788    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28789 
28790    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28791       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28792 
28793    -- 4955764
28794    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28795       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28796 
28797    -- 4458381 Public Sector Enh
28798    
28799    --
28800    -- set accounting attributes for the line type
28801    --
28802    l_entered_amt_idx := 23;
28803    l_accted_amt_idx  := 28;
28804    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28805    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28806    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
28807    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
28808    l_rec_acct_attrs.array_num_value(2)  := 
28809 xla_ae_sources_pkg.GetSystemSourceNum(
28810    p_source_code           => 'XLA_EVENT_APPL_ID'
28811  , p_source_type_code      => 'Y'
28812  , p_source_application_id =>  602
28813 );
28814    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
28815    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
28816    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
28817    l_rec_acct_attrs.array_char_value(4)  := 
28818 xla_ae_sources_pkg.GetSystemSourceChar(
28819    p_source_code           => 'XLA_ENTITY_CODE'
28820  , p_source_type_code      => 'Y'
28821  , p_source_application_id =>  602
28822 );
28823    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
28824    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
28825    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
28826    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
28827    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
28828    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
28829    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28830    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
28831    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
28832    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
28833    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
28834    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
28835    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28836    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
28837    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
28838    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
28839    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
28840    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
28841    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
28842    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
28843    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
28844    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
28845    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
28846    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
28847    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
28848    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
28849    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
28850    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
28851    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
28852    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
28853    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
28854    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
28855    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
28856    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
28857    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
28858    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
28859    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
28860    l_rec_acct_attrs.array_num_value(23)  := p_source_39;
28861    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
28862    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
28863    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
28864    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
28865    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
28866    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
28867    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
28868    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
28869    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
28870    l_rec_acct_attrs.array_num_value(28)  := p_source_39;
28871    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
28872    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
28873    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
28874    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
28875    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
28876    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
28877    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
28878    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
28879 
28880    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28881    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28882 
28883    ---------------------------------------------------------------------------------------------------------------
28884    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28885    ---------------------------------------------------------------------------------------------------------------
28886    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28887 
28888    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28889    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28890 
28891    IF xla_accounting_cache_pkg.GetValueChar
28892          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28893          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28894    AND l_bflow_method_code = 'PRIOR_ENTRY'
28895 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28896    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28897          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28898        )
28899    THEN
28900          xla_ae_lines_pkg.BflowUpgEntry
28901            (p_business_method_code    => l_bflow_method_code
28902            ,p_business_class_code     => l_bflow_class_code
28903            ,p_balance_type            => l_balance_type_code);
28904    ELSE
28905       NULL;
28906 -- No business flow processing for business flow method of NONE.
28907    END IF;
28908 
28909    --
28910    -- call analytical criteria
28911    --
28912    
28913    --
28914    -- call description
28915    --
28916    
28917 xla_ae_lines_pkg.SetLineDescription(
28918    p_ae_header_id => l_ae_header_id
28919   ,p_description  => Description_2 (
28920      p_application_id         => p_application_id
28921    , p_ae_header_id           => l_ae_header_id 
28922 , p_source_3 => p_source_3
28923    )
28924 );
28925 
28926 
28927    --
28928    -- call ADRs
28929    -- Bug 4922099
28930    --
28931    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28932         (NVL(l_actual_upg_option, 'N') = 'O') OR
28933         (NVL(l_enc_upg_option, 'N') = 'O')
28934       )
28935    THEN
28936    NULL;
28937    --
28938    --
28939    
28940   l_ccid := AcctDerRule_9(
28941            p_application_id           => p_application_id
28942          , p_ae_header_id             => l_ae_header_id 
28943 , p_source_9 => p_source_9
28944          , x_transaction_coa_id       => l_adr_transaction_coa_id
28945          , x_accounting_coa_id        => l_adr_accounting_coa_id
28946          , x_value_type_code          => l_adr_value_type_code
28947          , p_side                     => 'NA'
28948    );
28949 
28950    xla_ae_lines_pkg.set_ccid(
28951     p_code_combination_id          => l_ccid
28952   , p_value_type_code              => l_adr_value_type_code
28953   , p_transaction_coa_id           => l_adr_transaction_coa_id
28954   , p_accounting_coa_id            => l_adr_accounting_coa_id
28955   , p_adr_code                     => 'FV_ACCOUNT_RULE'
28956   , p_adr_type_code                => 'S'
28957   , p_component_type               => l_component_type
28958   , p_component_code               => l_component_code
28959   , p_component_type_code          => l_component_type_code
28960   , p_component_appl_id            => l_component_appl_id
28961   , p_amb_context_code             => l_amb_context_code
28962   , p_side                         => 'NA'
28963   );
28964 
28965 
28966    l_segment := AcctDerRule_10(
28967            p_application_id           => p_application_id
28968          , p_ae_header_id             => l_ae_header_id 
28969          , x_transaction_coa_id       => l_adr_transaction_coa_id
28970          , x_accounting_coa_id        => l_adr_accounting_coa_id
28971          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
28972          , x_flex_value_set_id        => l_adr_flex_value_set_id
28973          , x_value_type_code          => l_adr_value_type_code
28974          , x_value_combination_id     => l_adr_value_combination_id
28975          , x_value_segment_code       => l_adr_value_segment_code
28976          , p_side                     => 'NA'
28977          , p_override_seg_flag        => 'Y'
28978    );
28979 
28980    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
28981 
28982       xla_ae_lines_pkg.set_segment(
28983           p_to_segment_code         => 'GL_ACCOUNT'
28984         , p_segment_value           => l_segment
28985         , p_from_segment_code       => l_adr_value_segment_code
28986         , p_from_combination_id     => l_adr_value_combination_id
28987         , p_value_type_code         => l_adr_value_type_code
28988         , p_transaction_coa_id      => l_adr_transaction_coa_id
28989         , p_accounting_coa_id       => l_adr_accounting_coa_id
28990         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
28991         , p_flex_value_set_id       => l_adr_flex_value_set_id
28992         , p_adr_code                => 'FV_PYA_431002_ANTCIPATED'
28993         , p_adr_type_code           => 'S'
28994         , p_component_type          => l_component_type
28995         , p_component_code          => l_component_code
28996         , p_component_type_code     => l_component_type_code
28997         , p_component_appl_id       => l_component_appl_id
28998         , p_amb_context_code        => l_amb_context_code
28999         , p_entity_code             => 'RELEASE'
29000         , p_event_class_code        => 'RELEASE'
29001         , p_side                    => 'NA'
29002         );
29003 
29004   END IF;
29005 
29006    --
29007    --
29008    END IF;
29009    --
29010    -- Bug 4922099
29011    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29012           (NVL(l_enc_upg_option, 'N') = 'O')
29013         ) AND
29014         (l_bflow_method_code = 'PRIOR_ENTRY')
29015       )
29016    THEN
29017       IF
29018       --
29019       1 = 2
29020       --
29021       THEN
29022       xla_accounting_err_pkg.build_message
29023                                     (p_appli_s_name            => 'XLA'
29024                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29025                                     ,p_token_1                 => 'LINE_NUMBER'
29026                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29027                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29028                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29029                                                                              l_component_type
29030                                                                             ,l_component_code
29031                                                                             ,l_component_type_code
29032                                                                             ,l_component_appl_id
29033                                                                             ,l_amb_context_code
29034                                                                             ,l_entity_code
29035                                                                             ,l_event_class_code
29036                                                                            )
29037                                     ,p_token_3                 => 'OWNER'
29038                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29039                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29040                                                                           ,p_lookup_code    => l_component_type_code
29041                                                                          )
29042                                     ,p_token_4                 => 'PRODUCT_NAME'
29043                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29044                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29045                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29046                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29047                                     ,p_ae_header_id            =>  NULL
29048                                        );
29049 
29050         IF (C_LEVEL_ERROR>= g_log_level) THEN
29051                  trace
29052                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29053                       ,p_level    => C_LEVEL_ERROR
29054                       ,p_module   => l_log_module);
29055         END IF;
29056       END IF;
29057    END IF;
29058    --
29059    --
29060    ------------------------------------------------------------------------------------------------
29061    -- 4219869 Business Flow
29062    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29063    -- Prior Entry.  Currently, the following code is always generated.
29064    ------------------------------------------------------------------------------------------------
29065    XLA_AE_LINES_PKG.ValidateCurrentLine;
29066 
29067    ------------------------------------------------------------------------------------
29068    -- 4219869 Business Flow
29069    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29070    ------------------------------------------------------------------------------------
29071    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29072 
29073    ----------------------------------------------------------------------------------
29074    -- 4219869 Business Flow
29075    -- Update journal entry status -- Need to generate this within IF <condition>
29076    ----------------------------------------------------------------------------------
29077    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29078          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29079          ,p_balance_type_code => l_balance_type_code
29080          );
29081 
29082    -------------------------------------------------------------------------------------------
29083    -- 4262811 - Generate the Accrual Reversal lines
29084    -------------------------------------------------------------------------------------------
29085    BEGIN
29086       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29087                               (g_array_event(p_event_id).array_value_num('header_index'));
29088       IF l_acc_rev_flag IS NULL THEN
29089          l_acc_rev_flag := 'N';
29090       END IF;
29091    EXCEPTION
29092       WHEN OTHERS THEN
29093          l_acc_rev_flag := 'N';
29094    END;
29095    --
29096    IF (l_acc_rev_flag = 'Y') THEN
29097 
29098        -- 4645092  ------------------------------------------------------------------------------
29099        -- To allow MPA report to determine if it should generate report process
29100        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29101        ------------------------------------------------------------------------------------------
29102 
29103        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29104        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29105 
29106        --
29107        -- Update the line information that should be overwritten
29108        --
29109        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29110                                          p_header_num   => 1);
29111        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29112 
29113        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29114 
29115        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29116           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29117        END IF;
29118 
29119       --
29120       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29121       --
29122       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29123           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29124       ELSE
29125           ---------------------------------------------------------------------------------------------------
29126           -- 4262811a Switch Sign
29127           ---------------------------------------------------------------------------------------------------
29128           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29129           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29130                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29131           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29132                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29133           -- 5132302
29134           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29135                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29136 
29137       END IF;
29138 
29139       -- 4955764
29140       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29141       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29142 
29143 
29144       XLA_AE_LINES_PKG.ValidateCurrentLine;
29145       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29146 
29147       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29148                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29149                ,p_balance_type_code => l_balance_type_code);
29150 
29151    END IF;
29152 
29153    -----------------------------------------------------------------------------------------
29154    -- 4262811 Multiperiod Accounting
29155    -----------------------------------------------------------------------------------------
29156      -- No MPA option is assigned.
29157 
29158 
29159 END IF;
29160 END IF;
29161 --
29162 
29163 --
29164 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29165    trace
29166       (p_msg      => 'END of AcctLineType_56'
29167       ,p_level    => C_LEVEL_PROCEDURE
29168       ,p_module   => l_log_module);
29169 END IF;
29170 --
29171 EXCEPTION
29172   WHEN xla_exceptions_pkg.application_exception THEN
29173       RAISE;
29174   WHEN OTHERS THEN
29175        xla_exceptions_pkg.raise_message
29176            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_56');
29177 END AcctLineType_56;
29178 --
29179 
29180 ---------------------------------------
29181 --
29182 -- PRIVATE FUNCTION
29183 --         AcctLineType_57
29184 --
29185 ---------------------------------------
29186 PROCEDURE AcctLineType_57 (
29187   p_application_id        IN NUMBER
29188  ,p_event_id              IN NUMBER
29189  ,p_calculate_acctd_flag  IN VARCHAR2
29190  ,p_calculate_g_l_flag    IN VARCHAR2
29191  ,p_actual_flag           IN OUT VARCHAR2
29192  ,p_balance_type_code     OUT VARCHAR2
29193  ,p_gain_or_loss_ref      OUT VARCHAR2
29194  
29195 --Journal entry Line Description
29196  , p_source_3            IN VARCHAR2
29197 --Federal Fund Expired Status
29198  , p_source_8            IN VARCHAR2
29199 --Budget Account
29200  , p_source_9            IN NUMBER
29201 --Federal Prior Year Flag
29202  , p_source_10            IN VARCHAR2
29203 --Federal Net Pya Adj Amt
29204  , p_source_11            IN NUMBER
29205 --Main Or Backing Code
29206  , p_source_13            IN VARCHAR2
29207 --Accounting Reversal Flag
29208  , p_source_15            IN VARCHAR2
29209 --Distribution Link Type
29210  , p_source_17            IN VARCHAR2
29211 --PO Distribution Identifier
29212  , p_source_19            IN NUMBER
29213 --Applied To Application Identifier
29214  , p_source_21            IN NUMBER
29215 --Applied To Distribution Link Type
29216  , p_source_22            IN VARCHAR2
29217 --Applied To Entity Code
29218  , p_source_23            IN VARCHAR2
29219 --Applied To Distribution Identifier 1
29220  , p_source_24            IN NUMBER
29221 --Applied To Header Identifier 1
29222  , p_source_25            IN NUMBER
29223 --Entered Amount
29224  , p_source_26            IN NUMBER
29225 --Currency Code
29226  , p_source_27            IN VARCHAR2
29227 --Accounted Amount
29228  , p_source_28            IN NUMBER
29229 --PO Encumbrance Upgrade Option
29230  , p_source_29            IN VARCHAR2
29231 --Federal Unanticipated Amt
29232  , p_source_30            IN NUMBER
29233 --PO Upgrade Encumbrance Type Identifier
29234  , p_source_32            IN NUMBER
29235 --Currency Conversion Date
29236  , p_source_35            IN DATE
29237 --Currency Conversion Rate
29238  , p_source_36            IN NUMBER
29239 --Currency Conversion Type
29240  , p_source_37            IN VARCHAR2
29241 --Federal Anticipated Amt
29242  , p_source_39            IN NUMBER
29243 --PO Release Identifier
29244  , p_source_41            IN NUMBER
29245 )
29246 IS
29247 
29248 l_component_type              VARCHAR2(80);
29249 l_component_code              VARCHAR2(30);
29250 l_component_type_code         VARCHAR2(1);
29251 l_component_appl_id           INTEGER;
29252 l_amb_context_code            VARCHAR2(30);
29253 l_entity_code                 VARCHAR2(30);
29254 l_event_class_code            VARCHAR2(30);
29255 l_ae_header_id                NUMBER;
29256 l_event_type_code             VARCHAR2(30);
29257 l_line_definition_code        VARCHAR2(30);
29258 l_line_definition_owner_code  VARCHAR2(1);
29259 --
29260 -- adr variables
29261 l_segment                     VARCHAR2(30);
29262 l_ccid                        NUMBER;
29263 l_adr_transaction_coa_id      NUMBER;
29264 l_adr_accounting_coa_id       NUMBER;
29265 l_adr_flexfield_segment_code  VARCHAR2(30);
29266 l_adr_flex_value_set_id       NUMBER;
29267 l_adr_value_type_code         VARCHAR2(30);
29268 l_adr_value_combination_id    NUMBER;
29269 l_adr_value_segment_code      VARCHAR2(30);
29270 
29271 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29272 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29273 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29274 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29275 
29276 -- 4262811 Variables ------------------------------------------------------------------------------------------
29277 l_entered_amt_idx             NUMBER;
29278 l_accted_amt_idx              NUMBER;
29279 l_acc_rev_flag                VARCHAR2(1);
29280 l_accrual_line_num            NUMBER;
29281 l_tmp_amt                     NUMBER;
29282 l_acc_rev_natural_side_code   VARCHAR2(1);
29283 
29284 l_num_entries                 NUMBER;
29285 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29286 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29287 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29288 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29289 l_recog_line_1                NUMBER;
29290 l_recog_line_2                NUMBER;
29291 
29292 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29293 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29294 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29295 
29296 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29297 
29298 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29299 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29300 
29301 ---------------------------------------------------------------------------------------------------------------
29302 
29303 
29304 --
29305 -- bulk performance
29306 --
29307 l_balance_type_code           VARCHAR2(1);
29308 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29309 l_log_module                  VARCHAR2(240);
29310 
29311 --
29312 -- Upgrade strategy
29313 --
29314 l_actual_upg_option           VARCHAR2(1);
29315 l_enc_upg_option           VARCHAR2(1);
29316 
29317 --
29318 BEGIN
29319 --
29320 IF g_log_enabled THEN
29321       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
29322 END IF;
29323 --
29324 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29325 
29326       trace
29327          (p_msg      => 'BEGIN of AcctLineType_57'
29328          ,p_level    => C_LEVEL_PROCEDURE
29329          ,p_module   => l_log_module);
29330 
29331 END IF;
29332 --
29333 l_component_type             := 'AMB_JLT';
29334 l_component_code             := 'FV_REL_PYA_DW_UNANTICIPATED_CR';
29335 l_component_type_code        := 'S';
29336 l_component_appl_id          :=  201;
29337 l_amb_context_code           := 'DEFAULT';
29338 l_entity_code                := 'RELEASE';
29339 l_event_class_code           := 'RELEASE';
29340 l_event_type_code            := 'RELEASE_ALL';
29341 l_line_definition_owner_code := 'S';
29342 l_line_definition_code       := 'FV_RELEASE_ALL';
29343 --
29344 l_balance_type_code          := 'A';
29345 l_segment                     := NULL;
29346 l_ccid                        := NULL;
29347 l_adr_transaction_coa_id      := NULL;
29348 l_adr_accounting_coa_id       := NULL;
29349 l_adr_flexfield_segment_code  := NULL;
29350 l_adr_flex_value_set_id       := NULL;
29351 l_adr_value_type_code         := NULL;
29352 l_adr_value_combination_id    := NULL;
29353 l_adr_value_segment_code      := NULL;
29354 
29355 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29356 l_bflow_class_code           := '';    -- 4219869 Business Flow
29357 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29358 l_budgetary_control_flag     := 'Y';
29359 
29360 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29361 l_bflow_applied_to_amt       := NULL; -- 5132302
29362 l_entered_amt_idx            := NULL;          -- 4262811
29363 l_accted_amt_idx             := NULL;          -- 4262811
29364 l_acc_rev_flag               := NULL;          -- 4262811
29365 l_accrual_line_num           := NULL;          -- 4262811
29366 l_tmp_amt                    := NULL;          -- 4262811
29367 --
29368  
29369 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29370     l_balance_type_code <> 'B' THEN
29371 IF NVL(
29372 xla_ae_sources_pkg.GetSystemSourceChar(
29373    p_source_code           => 'XLA_EVENT_TYPE_CODE'
29374  , p_source_type_code      => 'Y'
29375  , p_source_application_id =>  602
29376 ),'
29377 ') =  'RELEASE_RESERVED' AND 
29378 NVL(p_source_13,'
29379 ') =  'M' AND 
29380 NVL(p_source_10,'
29381 ') =  'Y' AND 
29382 p_source_11 <  0 AND 
29383 NVL(p_source_39,9E125) <>  0 AND 
29384 p_source_39 IS NOT NULL 
29385  THEN 
29386 
29387    --
29388    XLA_AE_LINES_PKG.SetNewLine;
29389 
29390    p_balance_type_code          := l_balance_type_code;
29391    -- set the flag so later we will know whether the gain loss line needs to be created
29392    
29393    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29394      p_actual_flag :='A';
29395    END IF;
29396 
29397    --
29398    -- bulk performance
29399    --
29400    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29401                                       p_header_num   => 0); -- 4262811
29402    --
29403    -- set accounting line options
29404    --
29405    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29406            p_natural_side_code          => 'C'
29407          , p_gain_or_loss_flag          => 'N'
29408          , p_gl_transfer_mode_code      => 'S'
29409          , p_acct_entry_type_code       => 'A'
29410          , p_switch_side_flag           => 'Y'
29411          , p_merge_duplicate_code       => 'N'
29412          );
29413    --
29414    l_acc_rev_natural_side_code := 'D';  -- 4262811
29415    -- 
29416    --
29417    -- set accounting line type info
29418    --
29419    xla_ae_lines_pkg.SetAcctLineType
29420       (p_component_type             => l_component_type
29421       ,p_event_type_code            => l_event_type_code
29422       ,p_line_definition_owner_code => l_line_definition_owner_code
29423       ,p_line_definition_code       => l_line_definition_code
29424       ,p_accounting_line_code       => l_component_code
29425       ,p_accounting_line_type_code  => l_component_type_code
29426       ,p_accounting_line_appl_id    => l_component_appl_id
29427       ,p_amb_context_code           => l_amb_context_code
29428       ,p_entity_code                => l_entity_code
29429       ,p_event_class_code           => l_event_class_code);
29430    --
29431    -- set accounting class
29432    --
29433    xla_ae_lines_pkg.SetAcctClass(
29434            p_accounting_class_code  => 'PURCHASE_ORDER'
29435          , p_ae_header_id           => l_ae_header_id
29436          );
29437 
29438    --
29439    -- set rounding class
29440    --
29441    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29442                       'PURCHASE_ORDER';
29443 
29444    --
29445    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29446    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29447    --
29448    -- bulk performance
29449    --
29450    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29451 
29452    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29453       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29454 
29455    -- 4955764
29456    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29457       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29458 
29459    -- 4458381 Public Sector Enh
29460    
29461    --
29462    -- set accounting attributes for the line type
29463    --
29464    l_entered_amt_idx := 23;
29465    l_accted_amt_idx  := 28;
29466    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29467    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
29468    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
29469    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
29470    l_rec_acct_attrs.array_num_value(2)  := 
29471 xla_ae_sources_pkg.GetSystemSourceNum(
29472    p_source_code           => 'XLA_EVENT_APPL_ID'
29473  , p_source_type_code      => 'Y'
29474  , p_source_application_id =>  602
29475 );
29476    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
29477    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
29478    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
29479    l_rec_acct_attrs.array_char_value(4)  := 
29480 xla_ae_sources_pkg.GetSystemSourceChar(
29481    p_source_code           => 'XLA_ENTITY_CODE'
29482  , p_source_type_code      => 'Y'
29483  , p_source_application_id =>  602
29484 );
29485    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
29486    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
29487    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
29488    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
29489    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
29490    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
29491    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29492    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
29493    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
29494    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
29495    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
29496    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
29497    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29498    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
29499    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
29500    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
29501    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
29502    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
29503    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
29504    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
29505    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
29506    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
29507    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
29508    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
29509    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
29510    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
29511    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
29512    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
29513    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
29514    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
29515    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
29516    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
29517    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
29518    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
29519    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
29520    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
29521    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
29522    l_rec_acct_attrs.array_num_value(23)  := p_source_30;
29523    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
29524    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
29525    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
29526    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
29527    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
29528    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
29529    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
29530    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
29531    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
29532    l_rec_acct_attrs.array_num_value(28)  := p_source_30;
29533    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
29534    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
29535    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
29536    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
29537    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
29538    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
29539    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
29540    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
29541 
29542    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29543    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29544 
29545    ---------------------------------------------------------------------------------------------------------------
29546    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29547    ---------------------------------------------------------------------------------------------------------------
29548    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29549 
29550    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29551    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29552 
29553    IF xla_accounting_cache_pkg.GetValueChar
29554          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29555          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29556    AND l_bflow_method_code = 'PRIOR_ENTRY'
29557 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29558    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29559          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29560        )
29561    THEN
29562          xla_ae_lines_pkg.BflowUpgEntry
29563            (p_business_method_code    => l_bflow_method_code
29564            ,p_business_class_code     => l_bflow_class_code
29565            ,p_balance_type            => l_balance_type_code);
29566    ELSE
29567       NULL;
29568 -- No business flow processing for business flow method of NONE.
29569    END IF;
29570 
29571    --
29572    -- call analytical criteria
29573    --
29574    
29575    --
29576    -- call description
29577    --
29578    
29579 xla_ae_lines_pkg.SetLineDescription(
29580    p_ae_header_id => l_ae_header_id
29581   ,p_description  => Description_2 (
29582      p_application_id         => p_application_id
29583    , p_ae_header_id           => l_ae_header_id 
29584 , p_source_3 => p_source_3
29585    )
29586 );
29587 
29588 
29589    --
29590    -- call ADRs
29591    -- Bug 4922099
29592    --
29593    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29594         (NVL(l_actual_upg_option, 'N') = 'O') OR
29595         (NVL(l_enc_upg_option, 'N') = 'O')
29596       )
29597    THEN
29598    NULL;
29599    --
29600    --
29601    
29602   l_ccid := AcctDerRule_9(
29603            p_application_id           => p_application_id
29604          , p_ae_header_id             => l_ae_header_id 
29605 , p_source_9 => p_source_9
29606          , x_transaction_coa_id       => l_adr_transaction_coa_id
29607          , x_accounting_coa_id        => l_adr_accounting_coa_id
29608          , x_value_type_code          => l_adr_value_type_code
29609          , p_side                     => 'NA'
29610    );
29611 
29612    xla_ae_lines_pkg.set_ccid(
29613     p_code_combination_id          => l_ccid
29614   , p_value_type_code              => l_adr_value_type_code
29615   , p_transaction_coa_id           => l_adr_transaction_coa_id
29616   , p_accounting_coa_id            => l_adr_accounting_coa_id
29617   , p_adr_code                     => 'FV_ACCOUNT_RULE'
29618   , p_adr_type_code                => 'S'
29619   , p_component_type               => l_component_type
29620   , p_component_code               => l_component_code
29621   , p_component_type_code          => l_component_type_code
29622   , p_component_appl_id            => l_component_appl_id
29623   , p_amb_context_code             => l_amb_context_code
29624   , p_side                         => 'NA'
29625   );
29626 
29627 
29628    l_segment := AcctDerRule_11(
29629            p_application_id           => p_application_id
29630          , p_ae_header_id             => l_ae_header_id 
29631 , p_source_8 => p_source_8
29632          , x_transaction_coa_id       => l_adr_transaction_coa_id
29633          , x_accounting_coa_id        => l_adr_accounting_coa_id
29634          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
29635          , x_flex_value_set_id        => l_adr_flex_value_set_id
29636          , x_value_type_code          => l_adr_value_type_code
29637          , x_value_combination_id     => l_adr_value_combination_id
29638          , x_value_segment_code       => l_adr_value_segment_code
29639          , p_side                     => 'NA'
29640          , p_override_seg_flag        => 'Y'
29641    );
29642 
29643    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
29644 
29645       xla_ae_lines_pkg.set_segment(
29646           p_to_segment_code         => 'GL_ACCOUNT'
29647         , p_segment_value           => l_segment
29648         , p_from_segment_code       => l_adr_value_segment_code
29649         , p_from_combination_id     => l_adr_value_combination_id
29650         , p_value_type_code         => l_adr_value_type_code
29651         , p_transaction_coa_id      => l_adr_transaction_coa_id
29652         , p_accounting_coa_id       => l_adr_accounting_coa_id
29653         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
29654         , p_flex_value_set_id       => l_adr_flex_value_set_id
29655         , p_adr_code                => 'FV_PYA_445002_UNANTICIPATED'
29656         , p_adr_type_code           => 'S'
29657         , p_component_type          => l_component_type
29658         , p_component_code          => l_component_code
29659         , p_component_type_code     => l_component_type_code
29660         , p_component_appl_id       => l_component_appl_id
29661         , p_amb_context_code        => l_amb_context_code
29662         , p_entity_code             => 'RELEASE'
29663         , p_event_class_code        => 'RELEASE'
29664         , p_side                    => 'NA'
29665         );
29666 
29667   END IF;
29668 
29669    --
29670    --
29671    END IF;
29672    --
29673    -- Bug 4922099
29674    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29675           (NVL(l_enc_upg_option, 'N') = 'O')
29676         ) AND
29677         (l_bflow_method_code = 'PRIOR_ENTRY')
29678       )
29679    THEN
29680       IF
29681       --
29682       1 = 2
29683       --
29684       THEN
29685       xla_accounting_err_pkg.build_message
29686                                     (p_appli_s_name            => 'XLA'
29687                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29688                                     ,p_token_1                 => 'LINE_NUMBER'
29689                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29690                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29691                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29692                                                                              l_component_type
29693                                                                             ,l_component_code
29694                                                                             ,l_component_type_code
29695                                                                             ,l_component_appl_id
29696                                                                             ,l_amb_context_code
29697                                                                             ,l_entity_code
29698                                                                             ,l_event_class_code
29699                                                                            )
29700                                     ,p_token_3                 => 'OWNER'
29701                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29702                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29703                                                                           ,p_lookup_code    => l_component_type_code
29704                                                                          )
29705                                     ,p_token_4                 => 'PRODUCT_NAME'
29706                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29707                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29708                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29709                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29710                                     ,p_ae_header_id            =>  NULL
29711                                        );
29712 
29713         IF (C_LEVEL_ERROR>= g_log_level) THEN
29714                  trace
29715                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29716                       ,p_level    => C_LEVEL_ERROR
29717                       ,p_module   => l_log_module);
29718         END IF;
29719       END IF;
29720    END IF;
29721    --
29722    --
29723    ------------------------------------------------------------------------------------------------
29724    -- 4219869 Business Flow
29725    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29726    -- Prior Entry.  Currently, the following code is always generated.
29727    ------------------------------------------------------------------------------------------------
29728    XLA_AE_LINES_PKG.ValidateCurrentLine;
29729 
29730    ------------------------------------------------------------------------------------
29731    -- 4219869 Business Flow
29732    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29733    ------------------------------------------------------------------------------------
29734    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29735 
29736    ----------------------------------------------------------------------------------
29737    -- 4219869 Business Flow
29738    -- Update journal entry status -- Need to generate this within IF <condition>
29739    ----------------------------------------------------------------------------------
29740    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29741          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29742          ,p_balance_type_code => l_balance_type_code
29743          );
29744 
29745    -------------------------------------------------------------------------------------------
29746    -- 4262811 - Generate the Accrual Reversal lines
29747    -------------------------------------------------------------------------------------------
29748    BEGIN
29749       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29750                               (g_array_event(p_event_id).array_value_num('header_index'));
29751       IF l_acc_rev_flag IS NULL THEN
29752          l_acc_rev_flag := 'N';
29753       END IF;
29754    EXCEPTION
29755       WHEN OTHERS THEN
29756          l_acc_rev_flag := 'N';
29757    END;
29758    --
29759    IF (l_acc_rev_flag = 'Y') THEN
29760 
29761        -- 4645092  ------------------------------------------------------------------------------
29762        -- To allow MPA report to determine if it should generate report process
29763        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29764        ------------------------------------------------------------------------------------------
29765 
29766        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29767        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29768 
29769        --
29770        -- Update the line information that should be overwritten
29771        --
29772        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29773                                          p_header_num   => 1);
29774        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29775 
29776        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29777 
29778        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29779           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29780        END IF;
29781 
29782       --
29783       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29784       --
29785       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29786           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29787       ELSE
29788           ---------------------------------------------------------------------------------------------------
29789           -- 4262811a Switch Sign
29790           ---------------------------------------------------------------------------------------------------
29791           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29792           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29793                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29794           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29795                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29796           -- 5132302
29797           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29798                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29799 
29800       END IF;
29801 
29802       -- 4955764
29803       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29805 
29806 
29807       XLA_AE_LINES_PKG.ValidateCurrentLine;
29808       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29809 
29810       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29811                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29812                ,p_balance_type_code => l_balance_type_code);
29813 
29814    END IF;
29815 
29816    -----------------------------------------------------------------------------------------
29817    -- 4262811 Multiperiod Accounting
29818    -----------------------------------------------------------------------------------------
29819      -- No MPA option is assigned.
29820 
29821 
29822 END IF;
29823 END IF;
29824 --
29825 
29826 --
29827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29828    trace
29829       (p_msg      => 'END of AcctLineType_57'
29830       ,p_level    => C_LEVEL_PROCEDURE
29831       ,p_module   => l_log_module);
29832 END IF;
29833 --
29834 EXCEPTION
29835   WHEN xla_exceptions_pkg.application_exception THEN
29836       RAISE;
29837   WHEN OTHERS THEN
29838        xla_exceptions_pkg.raise_message
29839            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_57');
29840 END AcctLineType_57;
29841 --
29842 
29843 ---------------------------------------
29844 --
29845 -- PRIVATE FUNCTION
29846 --         AcctLineType_58
29847 --
29848 ---------------------------------------
29849 PROCEDURE AcctLineType_58 (
29850   p_application_id        IN NUMBER
29851  ,p_event_id              IN NUMBER
29852  ,p_calculate_acctd_flag  IN VARCHAR2
29853  ,p_calculate_g_l_flag    IN VARCHAR2
29854  ,p_actual_flag           IN OUT VARCHAR2
29855  ,p_balance_type_code     OUT VARCHAR2
29856  ,p_gain_or_loss_ref      OUT VARCHAR2
29857  
29858 --Journal entry Line Description
29859  , p_source_3            IN VARCHAR2
29860 --Federal Fund Category
29861  , p_source_7            IN VARCHAR2
29862 --Federal Fund Expired Status
29863  , p_source_8            IN VARCHAR2
29864 --Budget Account
29865  , p_source_9            IN NUMBER
29866 --Federal Prior Year Flag
29867  , p_source_10            IN VARCHAR2
29868 --Federal Net Pya Adj Amt
29869  , p_source_11            IN NUMBER
29870 --Main Or Backing Code
29871  , p_source_13            IN VARCHAR2
29872 --Accounting Reversal Flag
29873  , p_source_15            IN VARCHAR2
29874 --Distribution Link Type
29875  , p_source_17            IN VARCHAR2
29876 --PO Distribution Identifier
29877  , p_source_19            IN NUMBER
29878 --Applied To Application Identifier
29879  , p_source_21            IN NUMBER
29880 --Applied To Distribution Link Type
29881  , p_source_22            IN VARCHAR2
29882 --Applied To Entity Code
29883  , p_source_23            IN VARCHAR2
29884 --Applied To Distribution Identifier 1
29885  , p_source_24            IN NUMBER
29886 --Applied To Header Identifier 1
29887  , p_source_25            IN NUMBER
29888 --Entered Amount
29889  , p_source_26            IN NUMBER
29890 --Currency Code
29891  , p_source_27            IN VARCHAR2
29892 --Accounted Amount
29893  , p_source_28            IN NUMBER
29894 --PO Encumbrance Upgrade Option
29895  , p_source_29            IN VARCHAR2
29896 --PO Upgrade Encumbrance Type Identifier
29897  , p_source_32            IN NUMBER
29898 --Currency Conversion Date
29899  , p_source_35            IN DATE
29900 --Currency Conversion Rate
29901  , p_source_36            IN NUMBER
29902 --Currency Conversion Type
29903  , p_source_37            IN VARCHAR2
29904 --PO Release Identifier
29905  , p_source_41            IN NUMBER
29906 )
29907 IS
29908 
29909 l_component_type              VARCHAR2(80);
29910 l_component_code              VARCHAR2(30);
29911 l_component_type_code         VARCHAR2(1);
29912 l_component_appl_id           INTEGER;
29913 l_amb_context_code            VARCHAR2(30);
29914 l_entity_code                 VARCHAR2(30);
29915 l_event_class_code            VARCHAR2(30);
29916 l_ae_header_id                NUMBER;
29917 l_event_type_code             VARCHAR2(30);
29918 l_line_definition_code        VARCHAR2(30);
29919 l_line_definition_owner_code  VARCHAR2(1);
29920 --
29921 -- adr variables
29922 l_segment                     VARCHAR2(30);
29923 l_ccid                        NUMBER;
29924 l_adr_transaction_coa_id      NUMBER;
29925 l_adr_accounting_coa_id       NUMBER;
29926 l_adr_flexfield_segment_code  VARCHAR2(30);
29927 l_adr_flex_value_set_id       NUMBER;
29928 l_adr_value_type_code         VARCHAR2(30);
29929 l_adr_value_combination_id    NUMBER;
29930 l_adr_value_segment_code      VARCHAR2(30);
29931 
29932 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29933 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29934 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29935 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29936 
29937 -- 4262811 Variables ------------------------------------------------------------------------------------------
29938 l_entered_amt_idx             NUMBER;
29939 l_accted_amt_idx              NUMBER;
29940 l_acc_rev_flag                VARCHAR2(1);
29941 l_accrual_line_num            NUMBER;
29942 l_tmp_amt                     NUMBER;
29943 l_acc_rev_natural_side_code   VARCHAR2(1);
29944 
29945 l_num_entries                 NUMBER;
29946 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29947 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29948 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29949 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29950 l_recog_line_1                NUMBER;
29951 l_recog_line_2                NUMBER;
29952 
29953 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29954 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29955 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29956 
29957 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29958 
29959 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29960 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29961 
29962 ---------------------------------------------------------------------------------------------------------------
29963 
29964 
29965 --
29966 -- bulk performance
29967 --
29968 l_balance_type_code           VARCHAR2(1);
29969 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29970 l_log_module                  VARCHAR2(240);
29971 
29972 --
29973 -- Upgrade strategy
29974 --
29975 l_actual_upg_option           VARCHAR2(1);
29976 l_enc_upg_option           VARCHAR2(1);
29977 
29978 --
29979 BEGIN
29980 --
29981 IF g_log_enabled THEN
29982       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
29983 END IF;
29984 --
29985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29986 
29987       trace
29988          (p_msg      => 'BEGIN of AcctLineType_58'
29989          ,p_level    => C_LEVEL_PROCEDURE
29990          ,p_module   => l_log_module);
29991 
29992 END IF;
29993 --
29994 l_component_type             := 'AMB_JLT';
29995 l_component_code             := 'FV_REL_PYA_FINAL_CLOSE_CR';
29996 l_component_type_code        := 'S';
29997 l_component_appl_id          :=  201;
29998 l_amb_context_code           := 'DEFAULT';
29999 l_entity_code                := 'RELEASE';
30000 l_event_class_code           := 'RELEASE';
30001 l_event_type_code            := 'RELEASE_ALL';
30002 l_line_definition_owner_code := 'S';
30003 l_line_definition_code       := 'FV_RELEASE_ALL';
30004 --
30005 l_balance_type_code          := 'A';
30006 l_segment                     := NULL;
30007 l_ccid                        := NULL;
30008 l_adr_transaction_coa_id      := NULL;
30009 l_adr_accounting_coa_id       := NULL;
30010 l_adr_flexfield_segment_code  := NULL;
30011 l_adr_flex_value_set_id       := NULL;
30012 l_adr_value_type_code         := NULL;
30013 l_adr_value_combination_id    := NULL;
30014 l_adr_value_segment_code      := NULL;
30015 
30016 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30017 l_bflow_class_code           := '';    -- 4219869 Business Flow
30018 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30019 l_budgetary_control_flag     := 'Y';
30020 
30021 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30022 l_bflow_applied_to_amt       := NULL; -- 5132302
30023 l_entered_amt_idx            := NULL;          -- 4262811
30024 l_accted_amt_idx             := NULL;          -- 4262811
30025 l_acc_rev_flag               := NULL;          -- 4262811
30026 l_accrual_line_num           := NULL;          -- 4262811
30027 l_tmp_amt                    := NULL;          -- 4262811
30028 --
30029  
30030 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30031     l_balance_type_code <> 'B' THEN
30032 IF NVL(
30033 xla_ae_sources_pkg.GetSystemSourceChar(
30034    p_source_code           => 'XLA_EVENT_TYPE_CODE'
30035  , p_source_type_code      => 'Y'
30036  , p_source_application_id =>  602
30037 ),'
30038 ') =  'RELEASE_FINAL_CLOSED' AND 
30039 NVL(p_source_13,'
30040 ') =  'M' AND 
30041 NVL(p_source_10,'
30042 ') =  'Y'
30043  THEN 
30044 
30045    --
30046    XLA_AE_LINES_PKG.SetNewLine;
30047 
30048    p_balance_type_code          := l_balance_type_code;
30049    -- set the flag so later we will know whether the gain loss line needs to be created
30050    
30051    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30052      p_actual_flag :='A';
30053    END IF;
30054 
30055    --
30056    -- bulk performance
30057    --
30058    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30059                                       p_header_num   => 0); -- 4262811
30060    --
30061    -- set accounting line options
30062    --
30063    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30064            p_natural_side_code          => 'C'
30065          , p_gain_or_loss_flag          => 'N'
30066          , p_gl_transfer_mode_code      => 'S'
30067          , p_acct_entry_type_code       => 'A'
30068          , p_switch_side_flag           => 'N'
30069          , p_merge_duplicate_code       => 'N'
30070          );
30071    --
30072    l_acc_rev_natural_side_code := 'D';  -- 4262811
30073    -- 
30074    --
30075    -- set accounting line type info
30076    --
30077    xla_ae_lines_pkg.SetAcctLineType
30078       (p_component_type             => l_component_type
30079       ,p_event_type_code            => l_event_type_code
30080       ,p_line_definition_owner_code => l_line_definition_owner_code
30081       ,p_line_definition_code       => l_line_definition_code
30082       ,p_accounting_line_code       => l_component_code
30083       ,p_accounting_line_type_code  => l_component_type_code
30084       ,p_accounting_line_appl_id    => l_component_appl_id
30085       ,p_amb_context_code           => l_amb_context_code
30086       ,p_entity_code                => l_entity_code
30087       ,p_event_class_code           => l_event_class_code);
30088    --
30089    -- set accounting class
30090    --
30091    xla_ae_lines_pkg.SetAcctClass(
30092            p_accounting_class_code  => 'PURCHASE_ORDER'
30093          , p_ae_header_id           => l_ae_header_id
30094          );
30095 
30096    --
30097    -- set rounding class
30098    --
30099    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30100                       'PURCHASE_ORDER';
30101 
30102    --
30103    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30104    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30105    --
30106    -- bulk performance
30107    --
30108    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30109 
30110    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30111       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30112 
30113    -- 4955764
30114    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30115       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30116 
30117    -- 4458381 Public Sector Enh
30118    
30119    --
30120    -- set accounting attributes for the line type
30121    --
30122    l_entered_amt_idx := 23;
30123    l_accted_amt_idx  := 28;
30124    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30125    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30126    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
30127    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
30128    l_rec_acct_attrs.array_num_value(2)  := 
30129 xla_ae_sources_pkg.GetSystemSourceNum(
30130    p_source_code           => 'XLA_EVENT_APPL_ID'
30131  , p_source_type_code      => 'Y'
30132  , p_source_application_id =>  602
30133 );
30134    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
30135    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
30136    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
30137    l_rec_acct_attrs.array_char_value(4)  := 
30138 xla_ae_sources_pkg.GetSystemSourceChar(
30139    p_source_code           => 'XLA_ENTITY_CODE'
30140  , p_source_type_code      => 'Y'
30141  , p_source_application_id =>  602
30142 );
30143    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
30144    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
30145    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
30146    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
30147    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
30148    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
30149    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30150    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
30151    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
30152    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
30153    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
30154    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
30155    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30156    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
30157    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
30158    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
30159    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
30160    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
30161    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
30162    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
30163    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
30164    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
30165    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
30166    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
30167    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
30168    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
30169    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
30170    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
30171    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
30172    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
30173    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
30174    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
30175    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
30176    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
30177    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
30178    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
30179    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
30180    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
30181    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
30182    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
30183    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
30184    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
30185    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
30186    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
30187    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
30188    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
30189    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
30190    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
30191    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
30192    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
30193    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
30194    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
30195    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
30196    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
30197    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
30198    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
30199 
30200    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30201    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30202 
30203    ---------------------------------------------------------------------------------------------------------------
30204    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30205    ---------------------------------------------------------------------------------------------------------------
30206    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30207 
30208    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30209    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30210 
30211    IF xla_accounting_cache_pkg.GetValueChar
30212          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30213          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30214    AND l_bflow_method_code = 'PRIOR_ENTRY'
30215 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30216    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30217          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30218        )
30219    THEN
30220          xla_ae_lines_pkg.BflowUpgEntry
30221            (p_business_method_code    => l_bflow_method_code
30222            ,p_business_class_code     => l_bflow_class_code
30223            ,p_balance_type            => l_balance_type_code);
30224    ELSE
30225       NULL;
30226 -- No business flow processing for business flow method of NONE.
30227    END IF;
30228 
30229    --
30230    -- call analytical criteria
30231    --
30232    
30233    --
30234    -- call description
30235    --
30236    
30237 xla_ae_lines_pkg.SetLineDescription(
30238    p_ae_header_id => l_ae_header_id
30239   ,p_description  => Description_2 (
30240      p_application_id         => p_application_id
30241    , p_ae_header_id           => l_ae_header_id 
30242 , p_source_3 => p_source_3
30243    )
30244 );
30245 
30246 
30247    --
30248    -- call ADRs
30249    -- Bug 4922099
30250    --
30251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30252         (NVL(l_actual_upg_option, 'N') = 'O') OR
30253         (NVL(l_enc_upg_option, 'N') = 'O')
30254       )
30255    THEN
30256    NULL;
30257    --
30258    --
30259    
30260   l_ccid := AcctDerRule_9(
30261            p_application_id           => p_application_id
30262          , p_ae_header_id             => l_ae_header_id 
30263 , p_source_9 => p_source_9
30264          , x_transaction_coa_id       => l_adr_transaction_coa_id
30265          , x_accounting_coa_id        => l_adr_accounting_coa_id
30266          , x_value_type_code          => l_adr_value_type_code
30267          , p_side                     => 'NA'
30268    );
30269 
30270    xla_ae_lines_pkg.set_ccid(
30271     p_code_combination_id          => l_ccid
30272   , p_value_type_code              => l_adr_value_type_code
30273   , p_transaction_coa_id           => l_adr_transaction_coa_id
30274   , p_accounting_coa_id            => l_adr_accounting_coa_id
30275   , p_adr_code                     => 'FV_ACCOUNT_RULE'
30276   , p_adr_type_code                => 'S'
30277   , p_component_type               => l_component_type
30278   , p_component_code               => l_component_code
30279   , p_component_type_code          => l_component_type_code
30280   , p_component_appl_id            => l_component_appl_id
30281   , p_amb_context_code             => l_amb_context_code
30282   , p_side                         => 'NA'
30283   );
30284 
30285 
30286    l_segment := AcctDerRule_12(
30287            p_application_id           => p_application_id
30288          , p_ae_header_id             => l_ae_header_id 
30289 , p_source_7 => p_source_7
30290 , p_source_8 => p_source_8
30291 , p_source_10 => p_source_10
30292 , p_source_11 => p_source_11
30293          , x_transaction_coa_id       => l_adr_transaction_coa_id
30294          , x_accounting_coa_id        => l_adr_accounting_coa_id
30295          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
30296          , x_flex_value_set_id        => l_adr_flex_value_set_id
30297          , x_value_type_code          => l_adr_value_type_code
30298          , x_value_combination_id     => l_adr_value_combination_id
30299          , x_value_segment_code       => l_adr_value_segment_code
30300          , p_side                     => 'NA'
30301          , p_override_seg_flag        => 'Y'
30302    );
30303 
30304    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
30305 
30306       xla_ae_lines_pkg.set_segment(
30307           p_to_segment_code         => 'GL_ACCOUNT'
30308         , p_segment_value           => l_segment
30309         , p_from_segment_code       => l_adr_value_segment_code
30310         , p_from_combination_id     => l_adr_value_combination_id
30311         , p_value_type_code         => l_adr_value_type_code
30312         , p_transaction_coa_id      => l_adr_transaction_coa_id
30313         , p_accounting_coa_id       => l_adr_accounting_coa_id
30314         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
30315         , p_flex_value_set_id       => l_adr_flex_value_set_id
30316         , p_adr_code                => 'FV_PYA_46X002_487101'
30317         , p_adr_type_code           => 'S'
30318         , p_component_type          => l_component_type
30319         , p_component_code          => l_component_code
30320         , p_component_type_code     => l_component_type_code
30321         , p_component_appl_id       => l_component_appl_id
30322         , p_amb_context_code        => l_amb_context_code
30323         , p_entity_code             => 'RELEASE'
30324         , p_event_class_code        => 'RELEASE'
30325         , p_side                    => 'NA'
30326         );
30327 
30328   END IF;
30329 
30330    --
30331    --
30332    END IF;
30333    --
30334    -- Bug 4922099
30335    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30336           (NVL(l_enc_upg_option, 'N') = 'O')
30337         ) AND
30338         (l_bflow_method_code = 'PRIOR_ENTRY')
30339       )
30340    THEN
30341       IF
30342       --
30343       1 = 2
30344       --
30345       THEN
30346       xla_accounting_err_pkg.build_message
30347                                     (p_appli_s_name            => 'XLA'
30348                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30349                                     ,p_token_1                 => 'LINE_NUMBER'
30350                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30351                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30352                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30353                                                                              l_component_type
30354                                                                             ,l_component_code
30355                                                                             ,l_component_type_code
30356                                                                             ,l_component_appl_id
30357                                                                             ,l_amb_context_code
30358                                                                             ,l_entity_code
30359                                                                             ,l_event_class_code
30360                                                                            )
30361                                     ,p_token_3                 => 'OWNER'
30362                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30363                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30364                                                                           ,p_lookup_code    => l_component_type_code
30365                                                                          )
30366                                     ,p_token_4                 => 'PRODUCT_NAME'
30367                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30368                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30369                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30370                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30371                                     ,p_ae_header_id            =>  NULL
30372                                        );
30373 
30374         IF (C_LEVEL_ERROR>= g_log_level) THEN
30375                  trace
30376                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30377                       ,p_level    => C_LEVEL_ERROR
30378                       ,p_module   => l_log_module);
30379         END IF;
30380       END IF;
30381    END IF;
30382    --
30383    --
30384    ------------------------------------------------------------------------------------------------
30385    -- 4219869 Business Flow
30386    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30387    -- Prior Entry.  Currently, the following code is always generated.
30388    ------------------------------------------------------------------------------------------------
30389    XLA_AE_LINES_PKG.ValidateCurrentLine;
30390 
30391    ------------------------------------------------------------------------------------
30392    -- 4219869 Business Flow
30393    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30394    ------------------------------------------------------------------------------------
30395    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30396 
30397    ----------------------------------------------------------------------------------
30398    -- 4219869 Business Flow
30399    -- Update journal entry status -- Need to generate this within IF <condition>
30400    ----------------------------------------------------------------------------------
30401    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30402          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30403          ,p_balance_type_code => l_balance_type_code
30404          );
30405 
30406    -------------------------------------------------------------------------------------------
30407    -- 4262811 - Generate the Accrual Reversal lines
30408    -------------------------------------------------------------------------------------------
30409    BEGIN
30410       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30411                               (g_array_event(p_event_id).array_value_num('header_index'));
30412       IF l_acc_rev_flag IS NULL THEN
30413          l_acc_rev_flag := 'N';
30414       END IF;
30415    EXCEPTION
30416       WHEN OTHERS THEN
30417          l_acc_rev_flag := 'N';
30418    END;
30419    --
30420    IF (l_acc_rev_flag = 'Y') THEN
30421 
30422        -- 4645092  ------------------------------------------------------------------------------
30423        -- To allow MPA report to determine if it should generate report process
30424        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30425        ------------------------------------------------------------------------------------------
30426 
30427        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30428        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30429 
30430        --
30431        -- Update the line information that should be overwritten
30432        --
30433        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30434                                          p_header_num   => 1);
30435        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30436 
30437        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30438 
30439        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30440           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30441        END IF;
30442 
30443       --
30444       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30445       --
30446       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30447           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30448       ELSE
30449           ---------------------------------------------------------------------------------------------------
30450           -- 4262811a Switch Sign
30451           ---------------------------------------------------------------------------------------------------
30452           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30453           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30454                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30455           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30456                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30457           -- 5132302
30458           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30459                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30460 
30461       END IF;
30462 
30463       -- 4955764
30464       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30465       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30466 
30467 
30468       XLA_AE_LINES_PKG.ValidateCurrentLine;
30469       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30470 
30471       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30472                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30473                ,p_balance_type_code => l_balance_type_code);
30474 
30475    END IF;
30476 
30477    -----------------------------------------------------------------------------------------
30478    -- 4262811 Multiperiod Accounting
30479    -----------------------------------------------------------------------------------------
30480      -- No MPA option is assigned.
30481 
30482 
30483 END IF;
30484 END IF;
30485 --
30486 
30487 --
30488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30489    trace
30490       (p_msg      => 'END of AcctLineType_58'
30491       ,p_level    => C_LEVEL_PROCEDURE
30492       ,p_module   => l_log_module);
30493 END IF;
30494 --
30495 EXCEPTION
30496   WHEN xla_exceptions_pkg.application_exception THEN
30497       RAISE;
30498   WHEN OTHERS THEN
30499        xla_exceptions_pkg.raise_message
30500            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_58');
30501 END AcctLineType_58;
30502 --
30503 
30504 ---------------------------------------
30505 --
30506 -- PRIVATE FUNCTION
30507 --         AcctLineType_59
30508 --
30509 ---------------------------------------
30510 PROCEDURE AcctLineType_59 (
30511   p_application_id        IN NUMBER
30512  ,p_event_id              IN NUMBER
30513  ,p_calculate_acctd_flag  IN VARCHAR2
30514  ,p_calculate_g_l_flag    IN VARCHAR2
30515  ,p_actual_flag           IN OUT VARCHAR2
30516  ,p_balance_type_code     OUT VARCHAR2
30517  ,p_gain_or_loss_ref      OUT VARCHAR2
30518  
30519 --Journal entry Line Description
30520  , p_source_3            IN VARCHAR2
30521 --Federal Fund Expired Status
30522  , p_source_8            IN VARCHAR2
30523 --Budget Account
30524  , p_source_9            IN NUMBER
30525 --Federal Prior Year Flag
30526  , p_source_10            IN VARCHAR2
30527 --Main Or Backing Code
30528  , p_source_13            IN VARCHAR2
30529 --Accounting Reversal Flag
30530  , p_source_15            IN VARCHAR2
30531 --Distribution Link Type
30532  , p_source_17            IN VARCHAR2
30533 --PO Distribution Identifier
30534  , p_source_19            IN NUMBER
30535 --Applied To Application Identifier
30536  , p_source_21            IN NUMBER
30537 --Applied To Distribution Link Type
30538  , p_source_22            IN VARCHAR2
30539 --Applied To Entity Code
30540  , p_source_23            IN VARCHAR2
30541 --Applied To Distribution Identifier 1
30542  , p_source_24            IN NUMBER
30543 --Applied To Header Identifier 1
30544  , p_source_25            IN NUMBER
30545 --Entered Amount
30546  , p_source_26            IN NUMBER
30547 --Currency Code
30548  , p_source_27            IN VARCHAR2
30549 --Accounted Amount
30550  , p_source_28            IN NUMBER
30551 --PO Encumbrance Upgrade Option
30552  , p_source_29            IN VARCHAR2
30553 --PO Upgrade Encumbrance Type Identifier
30554  , p_source_32            IN NUMBER
30555 --Currency Conversion Date
30556  , p_source_35            IN DATE
30557 --Currency Conversion Rate
30558  , p_source_36            IN NUMBER
30559 --Currency Conversion Type
30560  , p_source_37            IN VARCHAR2
30561 --PO Release Identifier
30562  , p_source_41            IN NUMBER
30563 )
30564 IS
30565 
30566 l_component_type              VARCHAR2(80);
30567 l_component_code              VARCHAR2(30);
30568 l_component_type_code         VARCHAR2(1);
30569 l_component_appl_id           INTEGER;
30570 l_amb_context_code            VARCHAR2(30);
30571 l_entity_code                 VARCHAR2(30);
30572 l_event_class_code            VARCHAR2(30);
30573 l_ae_header_id                NUMBER;
30574 l_event_type_code             VARCHAR2(30);
30575 l_line_definition_code        VARCHAR2(30);
30576 l_line_definition_owner_code  VARCHAR2(1);
30577 --
30578 -- adr variables
30579 l_segment                     VARCHAR2(30);
30580 l_ccid                        NUMBER;
30581 l_adr_transaction_coa_id      NUMBER;
30582 l_adr_accounting_coa_id       NUMBER;
30583 l_adr_flexfield_segment_code  VARCHAR2(30);
30584 l_adr_flex_value_set_id       NUMBER;
30585 l_adr_value_type_code         VARCHAR2(30);
30586 l_adr_value_combination_id    NUMBER;
30587 l_adr_value_segment_code      VARCHAR2(30);
30588 
30589 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30590 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30591 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30592 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30593 
30594 -- 4262811 Variables ------------------------------------------------------------------------------------------
30595 l_entered_amt_idx             NUMBER;
30596 l_accted_amt_idx              NUMBER;
30597 l_acc_rev_flag                VARCHAR2(1);
30598 l_accrual_line_num            NUMBER;
30599 l_tmp_amt                     NUMBER;
30600 l_acc_rev_natural_side_code   VARCHAR2(1);
30601 
30602 l_num_entries                 NUMBER;
30603 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30604 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30605 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30606 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30607 l_recog_line_1                NUMBER;
30608 l_recog_line_2                NUMBER;
30609 
30610 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30611 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30612 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30613 
30614 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30615 
30616 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30617 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30618 
30619 ---------------------------------------------------------------------------------------------------------------
30620 
30621 
30622 --
30623 -- bulk performance
30624 --
30625 l_balance_type_code           VARCHAR2(1);
30626 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30627 l_log_module                  VARCHAR2(240);
30628 
30629 --
30630 -- Upgrade strategy
30631 --
30632 l_actual_upg_option           VARCHAR2(1);
30633 l_enc_upg_option           VARCHAR2(1);
30634 
30635 --
30636 BEGIN
30637 --
30638 IF g_log_enabled THEN
30639       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
30640 END IF;
30641 --
30642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30643 
30644       trace
30645          (p_msg      => 'BEGIN of AcctLineType_59'
30646          ,p_level    => C_LEVEL_PROCEDURE
30647          ,p_module   => l_log_module);
30648 
30649 END IF;
30650 --
30651 l_component_type             := 'AMB_JLT';
30652 l_component_code             := 'FV_REL_PYA_FINAL_CLOSE_DR';
30653 l_component_type_code        := 'S';
30654 l_component_appl_id          :=  201;
30655 l_amb_context_code           := 'DEFAULT';
30656 l_entity_code                := 'RELEASE';
30657 l_event_class_code           := 'RELEASE';
30658 l_event_type_code            := 'RELEASE_ALL';
30659 l_line_definition_owner_code := 'S';
30660 l_line_definition_code       := 'FV_RELEASE_ALL';
30661 --
30662 l_balance_type_code          := 'A';
30663 l_segment                     := NULL;
30664 l_ccid                        := NULL;
30665 l_adr_transaction_coa_id      := NULL;
30666 l_adr_accounting_coa_id       := NULL;
30667 l_adr_flexfield_segment_code  := NULL;
30668 l_adr_flex_value_set_id       := NULL;
30669 l_adr_value_type_code         := NULL;
30670 l_adr_value_combination_id    := NULL;
30671 l_adr_value_segment_code      := NULL;
30672 
30673 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30674 l_bflow_class_code           := '';    -- 4219869 Business Flow
30675 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30676 l_budgetary_control_flag     := 'Y';
30677 
30678 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30679 l_bflow_applied_to_amt       := NULL; -- 5132302
30680 l_entered_amt_idx            := NULL;          -- 4262811
30681 l_accted_amt_idx             := NULL;          -- 4262811
30682 l_acc_rev_flag               := NULL;          -- 4262811
30683 l_accrual_line_num           := NULL;          -- 4262811
30684 l_tmp_amt                    := NULL;          -- 4262811
30685 --
30686  
30687 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30688     l_balance_type_code <> 'B' THEN
30689 IF NVL(
30690 xla_ae_sources_pkg.GetSystemSourceChar(
30691    p_source_code           => 'XLA_EVENT_TYPE_CODE'
30692  , p_source_type_code      => 'Y'
30693  , p_source_application_id =>  602
30694 ),'
30695 ') =  'RELEASE_FINAL_CLOSED' AND 
30696 NVL(p_source_13,'
30697 ') =  'M' AND 
30698 NVL(p_source_10,'
30699 ') =  'Y'
30700  THEN 
30701 
30702    --
30703    XLA_AE_LINES_PKG.SetNewLine;
30704 
30705    p_balance_type_code          := l_balance_type_code;
30706    -- set the flag so later we will know whether the gain loss line needs to be created
30707    
30708    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30709      p_actual_flag :='A';
30710    END IF;
30711 
30712    --
30713    -- bulk performance
30714    --
30715    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30716                                       p_header_num   => 0); -- 4262811
30717    --
30718    -- set accounting line options
30719    --
30720    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30721            p_natural_side_code          => 'D'
30722          , p_gain_or_loss_flag          => 'N'
30723          , p_gl_transfer_mode_code      => 'S'
30724          , p_acct_entry_type_code       => 'A'
30725          , p_switch_side_flag           => 'N'
30726          , p_merge_duplicate_code       => 'N'
30727          );
30728    --
30729    l_acc_rev_natural_side_code := 'C';  -- 4262811
30730    -- 
30731    --
30732    -- set accounting line type info
30733    --
30734    xla_ae_lines_pkg.SetAcctLineType
30735       (p_component_type             => l_component_type
30736       ,p_event_type_code            => l_event_type_code
30737       ,p_line_definition_owner_code => l_line_definition_owner_code
30738       ,p_line_definition_code       => l_line_definition_code
30739       ,p_accounting_line_code       => l_component_code
30740       ,p_accounting_line_type_code  => l_component_type_code
30741       ,p_accounting_line_appl_id    => l_component_appl_id
30742       ,p_amb_context_code           => l_amb_context_code
30743       ,p_entity_code                => l_entity_code
30744       ,p_event_class_code           => l_event_class_code);
30745    --
30746    -- set accounting class
30747    --
30748    xla_ae_lines_pkg.SetAcctClass(
30749            p_accounting_class_code  => 'PURCHASE_ORDER'
30750          , p_ae_header_id           => l_ae_header_id
30751          );
30752 
30753    --
30754    -- set rounding class
30755    --
30756    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30757                       'PURCHASE_ORDER';
30758 
30759    --
30760    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30761    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30762    --
30763    -- bulk performance
30764    --
30765    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30766 
30767    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30768       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30769 
30770    -- 4955764
30771    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30772       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30773 
30774    -- 4458381 Public Sector Enh
30775    
30776    --
30777    -- set accounting attributes for the line type
30778    --
30779    l_entered_amt_idx := 23;
30780    l_accted_amt_idx  := 28;
30781    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30782    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30783    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
30784    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
30785    l_rec_acct_attrs.array_num_value(2)  := 
30786 xla_ae_sources_pkg.GetSystemSourceNum(
30787    p_source_code           => 'XLA_EVENT_APPL_ID'
30788  , p_source_type_code      => 'Y'
30789  , p_source_application_id =>  602
30790 );
30791    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
30792    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
30793    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
30794    l_rec_acct_attrs.array_char_value(4)  := 
30795 xla_ae_sources_pkg.GetSystemSourceChar(
30796    p_source_code           => 'XLA_ENTITY_CODE'
30797  , p_source_type_code      => 'Y'
30798  , p_source_application_id =>  602
30799 );
30800    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
30801    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
30802    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
30803    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
30804    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
30805    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
30806    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30807    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
30808    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
30809    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
30810    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
30811    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
30812    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30813    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
30814    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
30815    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
30816    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
30817    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
30818    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
30819    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
30820    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
30821    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
30822    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
30823    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
30824    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
30825    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
30826    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
30827    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
30828    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
30829    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
30830    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
30831    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
30832    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
30833    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
30834    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
30835    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
30836    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
30837    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
30838    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
30839    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
30840    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
30841    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
30842    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
30843    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
30844    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
30845    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
30846    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
30847    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
30848    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
30849    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
30850    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
30851    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
30852    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
30853    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
30854    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
30855    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
30856 
30857    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30858    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30859 
30860    ---------------------------------------------------------------------------------------------------------------
30861    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30862    ---------------------------------------------------------------------------------------------------------------
30863    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30864 
30865    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30866    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30867 
30868    IF xla_accounting_cache_pkg.GetValueChar
30869          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30870          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30871    AND l_bflow_method_code = 'PRIOR_ENTRY'
30872 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30873    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30874          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30875        )
30876    THEN
30877          xla_ae_lines_pkg.BflowUpgEntry
30878            (p_business_method_code    => l_bflow_method_code
30879            ,p_business_class_code     => l_bflow_class_code
30880            ,p_balance_type            => l_balance_type_code);
30881    ELSE
30882       NULL;
30883 -- No business flow processing for business flow method of NONE.
30884    END IF;
30885 
30886    --
30887    -- call analytical criteria
30888    --
30889    
30890    --
30891    -- call description
30892    --
30893    
30894 xla_ae_lines_pkg.SetLineDescription(
30895    p_ae_header_id => l_ae_header_id
30896   ,p_description  => Description_2 (
30897      p_application_id         => p_application_id
30898    , p_ae_header_id           => l_ae_header_id 
30899 , p_source_3 => p_source_3
30900    )
30901 );
30902 
30903 
30904    --
30905    -- call ADRs
30906    -- Bug 4922099
30907    --
30908    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30909         (NVL(l_actual_upg_option, 'N') = 'O') OR
30910         (NVL(l_enc_upg_option, 'N') = 'O')
30911       )
30912    THEN
30913    NULL;
30914    --
30915    --
30916    
30917   l_ccid := AcctDerRule_9(
30918            p_application_id           => p_application_id
30919          , p_ae_header_id             => l_ae_header_id 
30920 , p_source_9 => p_source_9
30921          , x_transaction_coa_id       => l_adr_transaction_coa_id
30922          , x_accounting_coa_id        => l_adr_accounting_coa_id
30923          , x_value_type_code          => l_adr_value_type_code
30924          , p_side                     => 'NA'
30925    );
30926 
30927    xla_ae_lines_pkg.set_ccid(
30928     p_code_combination_id          => l_ccid
30929   , p_value_type_code              => l_adr_value_type_code
30930   , p_transaction_coa_id           => l_adr_transaction_coa_id
30931   , p_accounting_coa_id            => l_adr_accounting_coa_id
30932   , p_adr_code                     => 'FV_ACCOUNT_RULE'
30933   , p_adr_type_code                => 'S'
30934   , p_component_type               => l_component_type
30935   , p_component_code               => l_component_code
30936   , p_component_type_code          => l_component_type_code
30937   , p_component_appl_id            => l_component_appl_id
30938   , p_amb_context_code             => l_amb_context_code
30939   , p_side                         => 'NA'
30940   );
30941 
30942 
30943    l_segment := AcctDerRule_11(
30944            p_application_id           => p_application_id
30945          , p_ae_header_id             => l_ae_header_id 
30946 , p_source_8 => p_source_8
30947          , x_transaction_coa_id       => l_adr_transaction_coa_id
30948          , x_accounting_coa_id        => l_adr_accounting_coa_id
30949          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
30950          , x_flex_value_set_id        => l_adr_flex_value_set_id
30951          , x_value_type_code          => l_adr_value_type_code
30952          , x_value_combination_id     => l_adr_value_combination_id
30953          , x_value_segment_code       => l_adr_value_segment_code
30954          , p_side                     => 'NA'
30955          , p_override_seg_flag        => 'Y'
30956    );
30957 
30958    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
30959 
30960       xla_ae_lines_pkg.set_segment(
30961           p_to_segment_code         => 'GL_ACCOUNT'
30962         , p_segment_value           => l_segment
30963         , p_from_segment_code       => l_adr_value_segment_code
30964         , p_from_combination_id     => l_adr_value_combination_id
30965         , p_value_type_code         => l_adr_value_type_code
30966         , p_transaction_coa_id      => l_adr_transaction_coa_id
30967         , p_accounting_coa_id       => l_adr_accounting_coa_id
30968         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
30969         , p_flex_value_set_id       => l_adr_flex_value_set_id
30970         , p_adr_code                => 'FV_PYA_445002_UNANTICIPATED'
30971         , p_adr_type_code           => 'S'
30972         , p_component_type          => l_component_type
30973         , p_component_code          => l_component_code
30974         , p_component_type_code     => l_component_type_code
30975         , p_component_appl_id       => l_component_appl_id
30976         , p_amb_context_code        => l_amb_context_code
30977         , p_entity_code             => 'RELEASE'
30978         , p_event_class_code        => 'RELEASE'
30979         , p_side                    => 'NA'
30980         );
30981 
30982   END IF;
30983 
30984    --
30985    --
30986    END IF;
30987    --
30988    -- Bug 4922099
30989    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30990           (NVL(l_enc_upg_option, 'N') = 'O')
30991         ) AND
30992         (l_bflow_method_code = 'PRIOR_ENTRY')
30993       )
30994    THEN
30995       IF
30996       --
30997       1 = 2
30998       --
30999       THEN
31000       xla_accounting_err_pkg.build_message
31001                                     (p_appli_s_name            => 'XLA'
31002                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31003                                     ,p_token_1                 => 'LINE_NUMBER'
31004                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31005                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31006                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31007                                                                              l_component_type
31008                                                                             ,l_component_code
31009                                                                             ,l_component_type_code
31010                                                                             ,l_component_appl_id
31011                                                                             ,l_amb_context_code
31012                                                                             ,l_entity_code
31013                                                                             ,l_event_class_code
31014                                                                            )
31015                                     ,p_token_3                 => 'OWNER'
31016                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31017                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31018                                                                           ,p_lookup_code    => l_component_type_code
31019                                                                          )
31020                                     ,p_token_4                 => 'PRODUCT_NAME'
31021                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31022                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31023                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31024                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31025                                     ,p_ae_header_id            =>  NULL
31026                                        );
31027 
31028         IF (C_LEVEL_ERROR>= g_log_level) THEN
31029                  trace
31030                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31031                       ,p_level    => C_LEVEL_ERROR
31032                       ,p_module   => l_log_module);
31033         END IF;
31034       END IF;
31035    END IF;
31036    --
31037    --
31038    ------------------------------------------------------------------------------------------------
31039    -- 4219869 Business Flow
31040    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31041    -- Prior Entry.  Currently, the following code is always generated.
31042    ------------------------------------------------------------------------------------------------
31043    XLA_AE_LINES_PKG.ValidateCurrentLine;
31044 
31045    ------------------------------------------------------------------------------------
31046    -- 4219869 Business Flow
31047    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31048    ------------------------------------------------------------------------------------
31049    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31050 
31051    ----------------------------------------------------------------------------------
31052    -- 4219869 Business Flow
31053    -- Update journal entry status -- Need to generate this within IF <condition>
31054    ----------------------------------------------------------------------------------
31055    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31056          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31057          ,p_balance_type_code => l_balance_type_code
31058          );
31059 
31060    -------------------------------------------------------------------------------------------
31061    -- 4262811 - Generate the Accrual Reversal lines
31062    -------------------------------------------------------------------------------------------
31063    BEGIN
31064       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31065                               (g_array_event(p_event_id).array_value_num('header_index'));
31066       IF l_acc_rev_flag IS NULL THEN
31067          l_acc_rev_flag := 'N';
31068       END IF;
31069    EXCEPTION
31070       WHEN OTHERS THEN
31071          l_acc_rev_flag := 'N';
31072    END;
31073    --
31074    IF (l_acc_rev_flag = 'Y') THEN
31075 
31076        -- 4645092  ------------------------------------------------------------------------------
31077        -- To allow MPA report to determine if it should generate report process
31078        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31079        ------------------------------------------------------------------------------------------
31080 
31081        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31082        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31083 
31084        --
31085        -- Update the line information that should be overwritten
31086        --
31087        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31088                                          p_header_num   => 1);
31089        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31090 
31091        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31092 
31093        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31094           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31095        END IF;
31096 
31097       --
31098       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31099       --
31100       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31101           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31102       ELSE
31103           ---------------------------------------------------------------------------------------------------
31104           -- 4262811a Switch Sign
31105           ---------------------------------------------------------------------------------------------------
31106           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31107           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31108                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31109           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31110                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31111           -- 5132302
31112           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31113                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31114 
31115       END IF;
31116 
31117       -- 4955764
31118       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31119       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31120 
31121 
31122       XLA_AE_LINES_PKG.ValidateCurrentLine;
31123       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31124 
31125       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31126                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31127                ,p_balance_type_code => l_balance_type_code);
31128 
31129    END IF;
31130 
31131    -----------------------------------------------------------------------------------------
31132    -- 4262811 Multiperiod Accounting
31133    -----------------------------------------------------------------------------------------
31134      -- No MPA option is assigned.
31135 
31136 
31137 END IF;
31138 END IF;
31139 --
31140 
31141 --
31142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31143    trace
31144       (p_msg      => 'END of AcctLineType_59'
31145       ,p_level    => C_LEVEL_PROCEDURE
31146       ,p_module   => l_log_module);
31147 END IF;
31148 --
31149 EXCEPTION
31150   WHEN xla_exceptions_pkg.application_exception THEN
31151       RAISE;
31152   WHEN OTHERS THEN
31153        xla_exceptions_pkg.raise_message
31154            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_59');
31155 END AcctLineType_59;
31156 --
31157 
31158 ---------------------------------------
31159 --
31160 -- PRIVATE FUNCTION
31161 --         AcctLineType_60
31162 --
31163 ---------------------------------------
31164 PROCEDURE AcctLineType_60 (
31165   p_application_id        IN NUMBER
31166  ,p_event_id              IN NUMBER
31167  ,p_calculate_acctd_flag  IN VARCHAR2
31168  ,p_calculate_g_l_flag    IN VARCHAR2
31169  ,p_actual_flag           IN OUT VARCHAR2
31170  ,p_balance_type_code     OUT VARCHAR2
31171  ,p_gain_or_loss_ref      OUT VARCHAR2
31172  
31173 --Journal entry Line Description
31174  , p_source_3            IN VARCHAR2
31175 --Budget Account
31176  , p_source_9            IN NUMBER
31177 --Federal Prior Year Flag
31178  , p_source_10            IN VARCHAR2
31179 --Main Or Backing Code
31180  , p_source_13            IN VARCHAR2
31181 --Accounting Reversal Flag
31182  , p_source_15            IN VARCHAR2
31183 --Distribution Link Type
31184  , p_source_17            IN VARCHAR2
31185 --PO Distribution Identifier
31186  , p_source_19            IN NUMBER
31187 --Applied To Application Identifier
31188  , p_source_21            IN NUMBER
31189 --Applied To Distribution Link Type
31190  , p_source_22            IN VARCHAR2
31191 --Applied To Entity Code
31192  , p_source_23            IN VARCHAR2
31193 --Applied To Distribution Identifier 1
31194  , p_source_24            IN NUMBER
31195 --Applied To Header Identifier 1
31196  , p_source_25            IN NUMBER
31197 --Entered Amount
31198  , p_source_26            IN NUMBER
31199 --Currency Code
31200  , p_source_27            IN VARCHAR2
31201 --Accounted Amount
31202  , p_source_28            IN NUMBER
31203 --PO Encumbrance Upgrade Option
31204  , p_source_29            IN VARCHAR2
31205 --PO Upgrade Encumbrance Type Identifier
31206  , p_source_32            IN NUMBER
31207 --Currency Conversion Date
31208  , p_source_35            IN DATE
31209 --Currency Conversion Rate
31210  , p_source_36            IN NUMBER
31211 --Currency Conversion Type
31212  , p_source_37            IN VARCHAR2
31213 --Federal Pya Amt
31214  , p_source_40            IN NUMBER
31215 --PO Release Identifier
31216  , p_source_41            IN NUMBER
31217 )
31218 IS
31219 
31220 l_component_type              VARCHAR2(80);
31221 l_component_code              VARCHAR2(30);
31222 l_component_type_code         VARCHAR2(1);
31223 l_component_appl_id           INTEGER;
31224 l_amb_context_code            VARCHAR2(30);
31225 l_entity_code                 VARCHAR2(30);
31226 l_event_class_code            VARCHAR2(30);
31227 l_ae_header_id                NUMBER;
31228 l_event_type_code             VARCHAR2(30);
31229 l_line_definition_code        VARCHAR2(30);
31230 l_line_definition_owner_code  VARCHAR2(1);
31231 --
31232 -- adr variables
31233 l_segment                     VARCHAR2(30);
31234 l_ccid                        NUMBER;
31235 l_adr_transaction_coa_id      NUMBER;
31236 l_adr_accounting_coa_id       NUMBER;
31237 l_adr_flexfield_segment_code  VARCHAR2(30);
31238 l_adr_flex_value_set_id       NUMBER;
31239 l_adr_value_type_code         VARCHAR2(30);
31240 l_adr_value_combination_id    NUMBER;
31241 l_adr_value_segment_code      VARCHAR2(30);
31242 
31243 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31244 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31245 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31246 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31247 
31248 -- 4262811 Variables ------------------------------------------------------------------------------------------
31249 l_entered_amt_idx             NUMBER;
31250 l_accted_amt_idx              NUMBER;
31251 l_acc_rev_flag                VARCHAR2(1);
31252 l_accrual_line_num            NUMBER;
31253 l_tmp_amt                     NUMBER;
31254 l_acc_rev_natural_side_code   VARCHAR2(1);
31255 
31256 l_num_entries                 NUMBER;
31257 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31258 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31259 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31260 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31261 l_recog_line_1                NUMBER;
31262 l_recog_line_2                NUMBER;
31263 
31264 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31265 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31266 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31267 
31268 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31269 
31270 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31271 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31272 
31273 ---------------------------------------------------------------------------------------------------------------
31274 
31275 
31276 --
31277 -- bulk performance
31278 --
31279 l_balance_type_code           VARCHAR2(1);
31280 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31281 l_log_module                  VARCHAR2(240);
31282 
31283 --
31284 -- Upgrade strategy
31285 --
31286 l_actual_upg_option           VARCHAR2(1);
31287 l_enc_upg_option           VARCHAR2(1);
31288 
31289 --
31290 BEGIN
31291 --
31292 IF g_log_enabled THEN
31293       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
31294 END IF;
31295 --
31296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31297 
31298       trace
31299          (p_msg      => 'BEGIN of AcctLineType_60'
31300          ,p_level    => C_LEVEL_PROCEDURE
31301          ,p_module   => l_log_module);
31302 
31303 END IF;
31304 --
31305 l_component_type             := 'AMB_JLT';
31306 l_component_code             := 'FV_REL_PYA_RESERVE_CR';
31307 l_component_type_code        := 'S';
31308 l_component_appl_id          :=  201;
31309 l_amb_context_code           := 'DEFAULT';
31310 l_entity_code                := 'RELEASE';
31311 l_event_class_code           := 'RELEASE';
31312 l_event_type_code            := 'RELEASE_ALL';
31313 l_line_definition_owner_code := 'S';
31314 l_line_definition_code       := 'FV_RELEASE_ALL';
31315 --
31316 l_balance_type_code          := 'A';
31317 l_segment                     := NULL;
31318 l_ccid                        := NULL;
31319 l_adr_transaction_coa_id      := NULL;
31320 l_adr_accounting_coa_id       := NULL;
31321 l_adr_flexfield_segment_code  := NULL;
31322 l_adr_flex_value_set_id       := NULL;
31323 l_adr_value_type_code         := NULL;
31324 l_adr_value_combination_id    := NULL;
31325 l_adr_value_segment_code      := NULL;
31326 
31327 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31328 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
31329 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31330 l_budgetary_control_flag     := 'Y';
31331 
31332 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31333 l_bflow_applied_to_amt       := NULL; -- 5132302
31334 l_entered_amt_idx            := NULL;          -- 4262811
31335 l_accted_amt_idx             := NULL;          -- 4262811
31336 l_acc_rev_flag               := NULL;          -- 4262811
31337 l_accrual_line_num           := NULL;          -- 4262811
31338 l_tmp_amt                    := NULL;          -- 4262811
31339 --
31340  
31341 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31342     l_balance_type_code <> 'B' THEN
31343 IF NVL(
31344 xla_ae_sources_pkg.GetSystemSourceChar(
31345    p_source_code           => 'XLA_EVENT_CLASS_CODE'
31346  , p_source_type_code      => 'Y'
31347  , p_source_application_id =>  602
31348 ),'
31349 ') =  'RELEASE_RESERVED' AND 
31350 NVL(p_source_13,'
31351 ') =  'Y' AND 
31352 NVL(p_source_10,'
31353 ') =  'Y' AND 
31354 NVL(p_source_40,9E125) <>  0 AND 
31355 p_source_40 IS NOT NULL 
31356  THEN 
31357 
31358    --
31359    XLA_AE_LINES_PKG.SetNewLine;
31360 
31361    p_balance_type_code          := l_balance_type_code;
31362    -- set the flag so later we will know whether the gain loss line needs to be created
31363    
31364    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31365      p_actual_flag :='A';
31366    END IF;
31367 
31368    --
31369    -- bulk performance
31370    --
31371    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31372                                       p_header_num   => 0); -- 4262811
31373    --
31374    -- set accounting line options
31375    --
31376    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31377            p_natural_side_code          => 'C'
31378          , p_gain_or_loss_flag          => 'N'
31379          , p_gl_transfer_mode_code      => 'S'
31380          , p_acct_entry_type_code       => 'A'
31381          , p_switch_side_flag           => 'Y'
31382          , p_merge_duplicate_code       => 'N'
31383          );
31384    --
31385    l_acc_rev_natural_side_code := 'D';  -- 4262811
31386    -- 
31387    --
31388    -- set accounting line type info
31389    --
31390    xla_ae_lines_pkg.SetAcctLineType
31391       (p_component_type             => l_component_type
31392       ,p_event_type_code            => l_event_type_code
31393       ,p_line_definition_owner_code => l_line_definition_owner_code
31394       ,p_line_definition_code       => l_line_definition_code
31395       ,p_accounting_line_code       => l_component_code
31396       ,p_accounting_line_type_code  => l_component_type_code
31397       ,p_accounting_line_appl_id    => l_component_appl_id
31398       ,p_amb_context_code           => l_amb_context_code
31399       ,p_entity_code                => l_entity_code
31400       ,p_event_class_code           => l_event_class_code);
31401    --
31402    -- set accounting class
31403    --
31404    xla_ae_lines_pkg.SetAcctClass(
31405            p_accounting_class_code  => 'PURCHASE_ORDER'
31406          , p_ae_header_id           => l_ae_header_id
31407          );
31408 
31409    --
31410    -- set rounding class
31411    --
31412    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31413                       'PURCHASE_ORDER';
31414 
31415    --
31416    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31417    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31418    --
31419    -- bulk performance
31420    --
31421    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31422 
31423    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31424       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31425 
31426    -- 4955764
31427    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31428       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31429 
31430    -- 4458381 Public Sector Enh
31431    
31432    --
31433    -- set accounting attributes for the line type
31434    --
31435    l_entered_amt_idx := 23;
31436    l_accted_amt_idx  := 28;
31437    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31438    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31439    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
31440    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
31441    l_rec_acct_attrs.array_num_value(2)  := 
31442 xla_ae_sources_pkg.GetSystemSourceNum(
31443    p_source_code           => 'XLA_EVENT_APPL_ID'
31444  , p_source_type_code      => 'Y'
31445  , p_source_application_id =>  602
31446 );
31447    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
31448    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
31449    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
31450    l_rec_acct_attrs.array_char_value(4)  := 
31451 xla_ae_sources_pkg.GetSystemSourceChar(
31452    p_source_code           => 'XLA_ENTITY_CODE'
31453  , p_source_type_code      => 'Y'
31454  , p_source_application_id =>  602
31455 );
31456    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
31457    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
31458    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
31459    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
31460    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
31461    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
31462    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
31463    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
31464    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
31465    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
31466    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
31467    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
31468    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
31469    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
31470    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
31471    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
31472    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
31473    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
31474    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
31475    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
31476    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
31477    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
31478    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
31479    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
31480    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
31481    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
31482    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
31483    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
31484    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
31485    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
31486    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
31487    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
31488    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
31489    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
31490    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
31491    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
31492    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
31493    l_rec_acct_attrs.array_num_value(23)  := p_source_40;
31494    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
31495    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
31496    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
31497    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
31498    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
31499    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
31500    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
31501    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
31502    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
31503    l_rec_acct_attrs.array_num_value(28)  := p_source_40;
31504    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
31505    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
31506    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
31507    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
31508    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
31509    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
31510    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
31511    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
31512 
31513    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31514    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31515 
31516    ---------------------------------------------------------------------------------------------------------------
31517    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31518    ---------------------------------------------------------------------------------------------------------------
31519    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31520 
31521    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31522    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31523 
31524    IF xla_accounting_cache_pkg.GetValueChar
31525          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31526          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31527    AND l_bflow_method_code = 'PRIOR_ENTRY'
31528 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31529    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31530          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31531        )
31532    THEN
31533          xla_ae_lines_pkg.BflowUpgEntry
31534            (p_business_method_code    => l_bflow_method_code
31535            ,p_business_class_code     => l_bflow_class_code
31536            ,p_balance_type            => l_balance_type_code);
31537    ELSE
31538       NULL;
31539 -- No business flow processing for business flow method of NONE.
31540    END IF;
31541 
31542    --
31543    -- call analytical criteria
31544    --
31545    
31546    --
31547    -- call description
31548    --
31549    
31550 xla_ae_lines_pkg.SetLineDescription(
31551    p_ae_header_id => l_ae_header_id
31552   ,p_description  => Description_2 (
31553      p_application_id         => p_application_id
31554    , p_ae_header_id           => l_ae_header_id 
31555 , p_source_3 => p_source_3
31556    )
31557 );
31558 
31559 
31560    --
31561    -- call ADRs
31562    -- Bug 4922099
31563    --
31564    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31565         (NVL(l_actual_upg_option, 'N') = 'O') OR
31566         (NVL(l_enc_upg_option, 'N') = 'O')
31567       )
31568    THEN
31569    NULL;
31570    --
31571    --
31572    
31573   l_ccid := AcctDerRule_9(
31574            p_application_id           => p_application_id
31575          , p_ae_header_id             => l_ae_header_id 
31576 , p_source_9 => p_source_9
31577          , x_transaction_coa_id       => l_adr_transaction_coa_id
31578          , x_accounting_coa_id        => l_adr_accounting_coa_id
31579          , x_value_type_code          => l_adr_value_type_code
31580          , p_side                     => 'NA'
31581    );
31582 
31583    xla_ae_lines_pkg.set_ccid(
31584     p_code_combination_id          => l_ccid
31585   , p_value_type_code              => l_adr_value_type_code
31586   , p_transaction_coa_id           => l_adr_transaction_coa_id
31587   , p_accounting_coa_id            => l_adr_accounting_coa_id
31588   , p_adr_code                     => 'FV_ACCOUNT_RULE'
31589   , p_adr_type_code                => 'S'
31590   , p_component_type               => l_component_type
31591   , p_component_code               => l_component_code
31592   , p_component_type_code          => l_component_type_code
31593   , p_component_appl_id            => l_component_appl_id
31594   , p_amb_context_code             => l_amb_context_code
31595   , p_side                         => 'NA'
31596   );
31597 
31598 
31599    l_segment := AcctDerRule_8(
31600            p_application_id           => p_application_id
31601          , p_ae_header_id             => l_ae_header_id 
31602          , x_transaction_coa_id       => l_adr_transaction_coa_id
31603          , x_accounting_coa_id        => l_adr_accounting_coa_id
31604          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
31605          , x_flex_value_set_id        => l_adr_flex_value_set_id
31606          , x_value_type_code          => l_adr_value_type_code
31607          , x_value_combination_id     => l_adr_value_combination_id
31608          , x_value_segment_code       => l_adr_value_segment_code
31609          , p_side                     => 'NA'
31610          , p_override_seg_flag        => 'Y'
31611    );
31612 
31613    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
31614 
31615       xla_ae_lines_pkg.set_segment(
31616           p_to_segment_code         => 'GL_ACCOUNT'
31617         , p_segment_value           => l_segment
31618         , p_from_segment_code       => l_adr_value_segment_code
31619         , p_from_combination_id     => l_adr_value_combination_id
31620         , p_value_type_code         => l_adr_value_type_code
31621         , p_transaction_coa_id      => l_adr_transaction_coa_id
31622         , p_accounting_coa_id       => l_adr_accounting_coa_id
31623         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
31624         , p_flex_value_set_id       => l_adr_flex_value_set_id
31625         , p_adr_code                => 'FV_48X101_PURCHASING'
31626         , p_adr_type_code           => 'S'
31627         , p_component_type          => l_component_type
31628         , p_component_code          => l_component_code
31629         , p_component_type_code     => l_component_type_code
31630         , p_component_appl_id       => l_component_appl_id
31631         , p_amb_context_code        => l_amb_context_code
31632         , p_entity_code             => 'RELEASE'
31633         , p_event_class_code        => 'RELEASE'
31634         , p_side                    => 'NA'
31635         );
31636 
31637   END IF;
31638 
31639    --
31640    --
31641    END IF;
31642    --
31643    -- Bug 4922099
31644    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31645           (NVL(l_enc_upg_option, 'N') = 'O')
31646         ) AND
31647         (l_bflow_method_code = 'PRIOR_ENTRY')
31648       )
31649    THEN
31650       IF
31651       --
31652       1 = 2
31653       --
31654       THEN
31655       xla_accounting_err_pkg.build_message
31656                                     (p_appli_s_name            => 'XLA'
31657                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31658                                     ,p_token_1                 => 'LINE_NUMBER'
31659                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31660                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31661                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31662                                                                              l_component_type
31663                                                                             ,l_component_code
31664                                                                             ,l_component_type_code
31665                                                                             ,l_component_appl_id
31666                                                                             ,l_amb_context_code
31667                                                                             ,l_entity_code
31668                                                                             ,l_event_class_code
31669                                                                            )
31670                                     ,p_token_3                 => 'OWNER'
31671                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31672                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31673                                                                           ,p_lookup_code    => l_component_type_code
31674                                                                          )
31675                                     ,p_token_4                 => 'PRODUCT_NAME'
31676                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31677                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31678                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31679                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31680                                     ,p_ae_header_id            =>  NULL
31681                                        );
31682 
31683         IF (C_LEVEL_ERROR>= g_log_level) THEN
31684                  trace
31685                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31686                       ,p_level    => C_LEVEL_ERROR
31687                       ,p_module   => l_log_module);
31688         END IF;
31689       END IF;
31690    END IF;
31691    --
31692    --
31693    ------------------------------------------------------------------------------------------------
31694    -- 4219869 Business Flow
31695    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31696    -- Prior Entry.  Currently, the following code is always generated.
31697    ------------------------------------------------------------------------------------------------
31698    XLA_AE_LINES_PKG.ValidateCurrentLine;
31699 
31700    ------------------------------------------------------------------------------------
31701    -- 4219869 Business Flow
31702    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31703    ------------------------------------------------------------------------------------
31704    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31705 
31706    ----------------------------------------------------------------------------------
31707    -- 4219869 Business Flow
31708    -- Update journal entry status -- Need to generate this within IF <condition>
31709    ----------------------------------------------------------------------------------
31710    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31711          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31712          ,p_balance_type_code => l_balance_type_code
31713          );
31714 
31715    -------------------------------------------------------------------------------------------
31716    -- 4262811 - Generate the Accrual Reversal lines
31717    -------------------------------------------------------------------------------------------
31718    BEGIN
31719       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31720                               (g_array_event(p_event_id).array_value_num('header_index'));
31721       IF l_acc_rev_flag IS NULL THEN
31722          l_acc_rev_flag := 'N';
31723       END IF;
31724    EXCEPTION
31725       WHEN OTHERS THEN
31726          l_acc_rev_flag := 'N';
31727    END;
31728    --
31729    IF (l_acc_rev_flag = 'Y') THEN
31730 
31731        -- 4645092  ------------------------------------------------------------------------------
31732        -- To allow MPA report to determine if it should generate report process
31733        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31734        ------------------------------------------------------------------------------------------
31735 
31736        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31737        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31738 
31739        --
31740        -- Update the line information that should be overwritten
31741        --
31742        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31743                                          p_header_num   => 1);
31744        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31745 
31746        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31747 
31748        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31749           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31750        END IF;
31751 
31752       --
31753       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31754       --
31755       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31756           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31757       ELSE
31758           ---------------------------------------------------------------------------------------------------
31759           -- 4262811a Switch Sign
31760           ---------------------------------------------------------------------------------------------------
31761           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31762           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31763                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31764           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31765                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31766           -- 5132302
31767           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31768                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31769 
31770       END IF;
31771 
31772       -- 4955764
31773       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31774       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31775 
31776 
31777       XLA_AE_LINES_PKG.ValidateCurrentLine;
31778       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31779 
31780       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31781                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31782                ,p_balance_type_code => l_balance_type_code);
31783 
31784    END IF;
31785 
31786    -----------------------------------------------------------------------------------------
31787    -- 4262811 Multiperiod Accounting
31788    -----------------------------------------------------------------------------------------
31789      -- No MPA option is assigned.
31790 
31791 
31792 END IF;
31793 END IF;
31794 --
31795 
31796 --
31797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31798    trace
31799       (p_msg      => 'END of AcctLineType_60'
31800       ,p_level    => C_LEVEL_PROCEDURE
31801       ,p_module   => l_log_module);
31802 END IF;
31803 --
31804 EXCEPTION
31805   WHEN xla_exceptions_pkg.application_exception THEN
31806       RAISE;
31807   WHEN OTHERS THEN
31808        xla_exceptions_pkg.raise_message
31809            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_60');
31810 END AcctLineType_60;
31811 --
31812 
31813 ---------------------------------------
31814 --
31815 -- PRIVATE FUNCTION
31816 --         AcctLineType_61
31817 --
31818 ---------------------------------------
31819 PROCEDURE AcctLineType_61 (
31820   p_application_id        IN NUMBER
31821  ,p_event_id              IN NUMBER
31822  ,p_calculate_acctd_flag  IN VARCHAR2
31823  ,p_calculate_g_l_flag    IN VARCHAR2
31824  ,p_actual_flag           IN OUT VARCHAR2
31825  ,p_balance_type_code     OUT VARCHAR2
31826  ,p_gain_or_loss_ref      OUT VARCHAR2
31827  
31828 --Journal entry Line Description
31829  , p_source_3            IN VARCHAR2
31830 --Federal Fund Category
31831  , p_source_7            IN VARCHAR2
31832 --Federal Fund Expired Status
31833  , p_source_8            IN VARCHAR2
31834 --Budget Account
31835  , p_source_9            IN NUMBER
31836 --Federal Prior Year Flag
31837  , p_source_10            IN VARCHAR2
31838 --Main Or Backing Code
31839  , p_source_13            IN VARCHAR2
31840 --Accounting Reversal Flag
31841  , p_source_15            IN VARCHAR2
31842 --Distribution Link Type
31843  , p_source_17            IN VARCHAR2
31844 --PO Distribution Identifier
31845  , p_source_19            IN NUMBER
31846 --Applied To Application Identifier
31847  , p_source_21            IN NUMBER
31848 --Applied To Distribution Link Type
31849  , p_source_22            IN VARCHAR2
31850 --Applied To Entity Code
31851  , p_source_23            IN VARCHAR2
31852 --Applied To Distribution Identifier 1
31853  , p_source_24            IN NUMBER
31854 --Applied To Header Identifier 1
31855  , p_source_25            IN NUMBER
31856 --Entered Amount
31857  , p_source_26            IN NUMBER
31858 --Currency Code
31859  , p_source_27            IN VARCHAR2
31860 --Accounted Amount
31861  , p_source_28            IN NUMBER
31862 --PO Encumbrance Upgrade Option
31863  , p_source_29            IN VARCHAR2
31864 --PO Upgrade Encumbrance Type Identifier
31865  , p_source_32            IN NUMBER
31866 --Currency Conversion Date
31867  , p_source_35            IN DATE
31868 --Currency Conversion Rate
31869  , p_source_36            IN NUMBER
31870 --Currency Conversion Type
31871  , p_source_37            IN VARCHAR2
31872 --Federal Pya Amt
31873  , p_source_40            IN NUMBER
31874 --PO Release Identifier
31875  , p_source_41            IN NUMBER
31876 )
31877 IS
31878 
31879 l_component_type              VARCHAR2(80);
31880 l_component_code              VARCHAR2(30);
31881 l_component_type_code         VARCHAR2(1);
31882 l_component_appl_id           INTEGER;
31883 l_amb_context_code            VARCHAR2(30);
31884 l_entity_code                 VARCHAR2(30);
31885 l_event_class_code            VARCHAR2(30);
31886 l_ae_header_id                NUMBER;
31887 l_event_type_code             VARCHAR2(30);
31888 l_line_definition_code        VARCHAR2(30);
31889 l_line_definition_owner_code  VARCHAR2(1);
31890 --
31891 -- adr variables
31892 l_segment                     VARCHAR2(30);
31893 l_ccid                        NUMBER;
31894 l_adr_transaction_coa_id      NUMBER;
31895 l_adr_accounting_coa_id       NUMBER;
31896 l_adr_flexfield_segment_code  VARCHAR2(30);
31897 l_adr_flex_value_set_id       NUMBER;
31898 l_adr_value_type_code         VARCHAR2(30);
31899 l_adr_value_combination_id    NUMBER;
31900 l_adr_value_segment_code      VARCHAR2(30);
31901 
31902 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31903 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31904 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31905 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31906 
31907 -- 4262811 Variables ------------------------------------------------------------------------------------------
31908 l_entered_amt_idx             NUMBER;
31909 l_accted_amt_idx              NUMBER;
31910 l_acc_rev_flag                VARCHAR2(1);
31911 l_accrual_line_num            NUMBER;
31912 l_tmp_amt                     NUMBER;
31913 l_acc_rev_natural_side_code   VARCHAR2(1);
31914 
31915 l_num_entries                 NUMBER;
31916 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31917 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31918 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31919 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31920 l_recog_line_1                NUMBER;
31921 l_recog_line_2                NUMBER;
31922 
31923 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31924 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31925 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31926 
31927 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31928 
31929 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31930 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31931 
31932 ---------------------------------------------------------------------------------------------------------------
31933 
31934 
31935 --
31936 -- bulk performance
31937 --
31938 l_balance_type_code           VARCHAR2(1);
31939 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31940 l_log_module                  VARCHAR2(240);
31941 
31942 --
31943 -- Upgrade strategy
31944 --
31945 l_actual_upg_option           VARCHAR2(1);
31946 l_enc_upg_option           VARCHAR2(1);
31947 
31948 --
31949 BEGIN
31950 --
31951 IF g_log_enabled THEN
31952       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
31953 END IF;
31954 --
31955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31956 
31957       trace
31958          (p_msg      => 'BEGIN of AcctLineType_61'
31959          ,p_level    => C_LEVEL_PROCEDURE
31960          ,p_module   => l_log_module);
31961 
31962 END IF;
31963 --
31964 l_component_type             := 'AMB_JLT';
31965 l_component_code             := 'FV_REL_PYA_RESERVE_DR';
31966 l_component_type_code        := 'S';
31967 l_component_appl_id          :=  201;
31968 l_amb_context_code           := 'DEFAULT';
31969 l_entity_code                := 'RELEASE';
31970 l_event_class_code           := 'RELEASE';
31971 l_event_type_code            := 'RELEASE_ALL';
31972 l_line_definition_owner_code := 'S';
31973 l_line_definition_code       := 'FV_RELEASE_ALL';
31974 --
31975 l_balance_type_code          := 'A';
31976 l_segment                     := NULL;
31977 l_ccid                        := NULL;
31978 l_adr_transaction_coa_id      := NULL;
31979 l_adr_accounting_coa_id       := NULL;
31980 l_adr_flexfield_segment_code  := NULL;
31981 l_adr_flex_value_set_id       := NULL;
31982 l_adr_value_type_code         := NULL;
31983 l_adr_value_combination_id    := NULL;
31984 l_adr_value_segment_code      := NULL;
31985 
31986 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31987 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
31988 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31989 l_budgetary_control_flag     := 'Y';
31990 
31991 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31992 l_bflow_applied_to_amt       := NULL; -- 5132302
31993 l_entered_amt_idx            := NULL;          -- 4262811
31994 l_accted_amt_idx             := NULL;          -- 4262811
31995 l_acc_rev_flag               := NULL;          -- 4262811
31996 l_accrual_line_num           := NULL;          -- 4262811
31997 l_tmp_amt                    := NULL;          -- 4262811
31998 --
31999  
32000 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32001     l_balance_type_code <> 'B' THEN
32002 IF NVL(
32003 xla_ae_sources_pkg.GetSystemSourceChar(
32004    p_source_code           => 'XLA_EVENT_CLASS_CODE'
32005  , p_source_type_code      => 'Y'
32006  , p_source_application_id =>  602
32007 ),'
32008 ') =  'RELEASE_RESERVED' AND 
32009 NVL(p_source_13,'
32010 ') =  'Y' AND 
32011 NVL(p_source_10,'
32012 ') =  'Y' AND 
32013 NVL(p_source_40,9E125) <>  0 AND 
32014 p_source_40 IS NOT NULL 
32015  THEN 
32016 
32017    --
32018    XLA_AE_LINES_PKG.SetNewLine;
32019 
32020    p_balance_type_code          := l_balance_type_code;
32021    -- set the flag so later we will know whether the gain loss line needs to be created
32022    
32023    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32024      p_actual_flag :='A';
32025    END IF;
32026 
32027    --
32028    -- bulk performance
32029    --
32030    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32031                                       p_header_num   => 0); -- 4262811
32032    --
32033    -- set accounting line options
32034    --
32035    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32036            p_natural_side_code          => 'D'
32037          , p_gain_or_loss_flag          => 'N'
32038          , p_gl_transfer_mode_code      => 'S'
32039          , p_acct_entry_type_code       => 'A'
32040          , p_switch_side_flag           => 'Y'
32041          , p_merge_duplicate_code       => 'N'
32042          );
32043    --
32044    l_acc_rev_natural_side_code := 'C';  -- 4262811
32045    -- 
32046    --
32047    -- set accounting line type info
32048    --
32049    xla_ae_lines_pkg.SetAcctLineType
32050       (p_component_type             => l_component_type
32051       ,p_event_type_code            => l_event_type_code
32052       ,p_line_definition_owner_code => l_line_definition_owner_code
32053       ,p_line_definition_code       => l_line_definition_code
32054       ,p_accounting_line_code       => l_component_code
32055       ,p_accounting_line_type_code  => l_component_type_code
32056       ,p_accounting_line_appl_id    => l_component_appl_id
32057       ,p_amb_context_code           => l_amb_context_code
32058       ,p_entity_code                => l_entity_code
32059       ,p_event_class_code           => l_event_class_code);
32060    --
32061    -- set accounting class
32062    --
32063    xla_ae_lines_pkg.SetAcctClass(
32064            p_accounting_class_code  => 'PURCHASE_ORDER'
32065          , p_ae_header_id           => l_ae_header_id
32066          );
32067 
32068    --
32069    -- set rounding class
32070    --
32071    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32072                       'PURCHASE_ORDER';
32073 
32074    --
32075    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32076    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32077    --
32078    -- bulk performance
32079    --
32080    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32081 
32082    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32083       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32084 
32085    -- 4955764
32086    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32087       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32088 
32089    -- 4458381 Public Sector Enh
32090    
32091    --
32092    -- set accounting attributes for the line type
32093    --
32094    l_entered_amt_idx := 23;
32095    l_accted_amt_idx  := 28;
32096    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32097    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32098    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
32099    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
32100    l_rec_acct_attrs.array_num_value(2)  := 
32101 xla_ae_sources_pkg.GetSystemSourceNum(
32102    p_source_code           => 'XLA_EVENT_APPL_ID'
32103  , p_source_type_code      => 'Y'
32104  , p_source_application_id =>  602
32105 );
32106    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
32107    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
32108    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
32109    l_rec_acct_attrs.array_char_value(4)  := 
32110 xla_ae_sources_pkg.GetSystemSourceChar(
32111    p_source_code           => 'XLA_ENTITY_CODE'
32112  , p_source_type_code      => 'Y'
32113  , p_source_application_id =>  602
32114 );
32115    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
32116    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
32117    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
32118    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
32119    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
32120    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
32121    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32122    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
32123    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
32124    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
32125    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
32126    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
32127    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32128    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
32129    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
32130    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
32131    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
32132    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
32133    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
32134    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
32135    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
32136    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
32137    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
32138    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
32139    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
32140    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
32141    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
32142    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
32143    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
32144    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
32145    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
32146    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
32147    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
32148    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
32149    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
32150    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
32151    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
32152    l_rec_acct_attrs.array_num_value(23)  := p_source_40;
32153    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
32154    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
32155    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
32156    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
32157    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
32158    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
32159    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
32160    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
32161    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
32162    l_rec_acct_attrs.array_num_value(28)  := p_source_40;
32163    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
32164    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
32165    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
32166    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
32167    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
32168    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
32169    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
32170    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
32171 
32172    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32173    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32174 
32175    ---------------------------------------------------------------------------------------------------------------
32176    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32177    ---------------------------------------------------------------------------------------------------------------
32178    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32179 
32180    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32181    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32182 
32183    IF xla_accounting_cache_pkg.GetValueChar
32184          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32185          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32186    AND l_bflow_method_code = 'PRIOR_ENTRY'
32187 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32188    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32189          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32190        )
32191    THEN
32192          xla_ae_lines_pkg.BflowUpgEntry
32193            (p_business_method_code    => l_bflow_method_code
32194            ,p_business_class_code     => l_bflow_class_code
32195            ,p_balance_type            => l_balance_type_code);
32196    ELSE
32197       NULL;
32198 -- No business flow processing for business flow method of NONE.
32199    END IF;
32200 
32201    --
32202    -- call analytical criteria
32203    --
32204    
32205    --
32206    -- call description
32207    --
32208    
32209 xla_ae_lines_pkg.SetLineDescription(
32210    p_ae_header_id => l_ae_header_id
32211   ,p_description  => Description_2 (
32212      p_application_id         => p_application_id
32213    , p_ae_header_id           => l_ae_header_id 
32214 , p_source_3 => p_source_3
32215    )
32216 );
32217 
32218 
32219    --
32220    -- call ADRs
32221    -- Bug 4922099
32222    --
32223    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32224         (NVL(l_actual_upg_option, 'N') = 'O') OR
32225         (NVL(l_enc_upg_option, 'N') = 'O')
32226       )
32227    THEN
32228    NULL;
32229    --
32230    --
32231    
32232   l_ccid := AcctDerRule_9(
32233            p_application_id           => p_application_id
32234          , p_ae_header_id             => l_ae_header_id 
32235 , p_source_9 => p_source_9
32236          , x_transaction_coa_id       => l_adr_transaction_coa_id
32237          , x_accounting_coa_id        => l_adr_accounting_coa_id
32238          , x_value_type_code          => l_adr_value_type_code
32239          , p_side                     => 'NA'
32240    );
32241 
32242    xla_ae_lines_pkg.set_ccid(
32243     p_code_combination_id          => l_ccid
32244   , p_value_type_code              => l_adr_value_type_code
32245   , p_transaction_coa_id           => l_adr_transaction_coa_id
32246   , p_accounting_coa_id            => l_adr_accounting_coa_id
32247   , p_adr_code                     => 'FV_ACCOUNT_RULE'
32248   , p_adr_type_code                => 'S'
32249   , p_component_type               => l_component_type
32250   , p_component_code               => l_component_code
32251   , p_component_type_code          => l_component_type_code
32252   , p_component_appl_id            => l_component_appl_id
32253   , p_amb_context_code             => l_amb_context_code
32254   , p_side                         => 'NA'
32255   );
32256 
32257 
32258    l_segment := AcctDerRule_5(
32259            p_application_id           => p_application_id
32260          , p_ae_header_id             => l_ae_header_id 
32261 , p_source_7 => p_source_7
32262 , p_source_8 => p_source_8
32263          , x_transaction_coa_id       => l_adr_transaction_coa_id
32264          , x_accounting_coa_id        => l_adr_accounting_coa_id
32265          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
32266          , x_flex_value_set_id        => l_adr_flex_value_set_id
32267          , x_value_type_code          => l_adr_value_type_code
32268          , x_value_combination_id     => l_adr_value_combination_id
32269          , x_value_segment_code       => l_adr_value_segment_code
32270          , p_side                     => 'NA'
32271          , p_override_seg_flag        => 'Y'
32272    );
32273 
32274    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
32275 
32276       xla_ae_lines_pkg.set_segment(
32277           p_to_segment_code         => 'GL_ACCOUNT'
32278         , p_segment_value           => l_segment
32279         , p_from_segment_code       => l_adr_value_segment_code
32280         , p_from_combination_id     => l_adr_value_combination_id
32281         , p_value_type_code         => l_adr_value_type_code
32282         , p_transaction_coa_id      => l_adr_transaction_coa_id
32283         , p_accounting_coa_id       => l_adr_accounting_coa_id
32284         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
32285         , p_flex_value_set_id       => l_adr_flex_value_set_id
32286         , p_adr_code                => 'FV_46X002'
32287         , p_adr_type_code           => 'S'
32288         , p_component_type          => l_component_type
32289         , p_component_code          => l_component_code
32290         , p_component_type_code     => l_component_type_code
32291         , p_component_appl_id       => l_component_appl_id
32292         , p_amb_context_code        => l_amb_context_code
32293         , p_entity_code             => 'RELEASE'
32294         , p_event_class_code        => 'RELEASE'
32295         , p_side                    => 'NA'
32296         );
32297 
32298   END IF;
32299 
32300    --
32301    --
32302    END IF;
32303    --
32304    -- Bug 4922099
32305    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32306           (NVL(l_enc_upg_option, 'N') = 'O')
32307         ) AND
32308         (l_bflow_method_code = 'PRIOR_ENTRY')
32309       )
32310    THEN
32311       IF
32312       --
32313       1 = 2
32314       --
32315       THEN
32316       xla_accounting_err_pkg.build_message
32317                                     (p_appli_s_name            => 'XLA'
32318                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32319                                     ,p_token_1                 => 'LINE_NUMBER'
32320                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32321                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32322                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32323                                                                              l_component_type
32324                                                                             ,l_component_code
32325                                                                             ,l_component_type_code
32326                                                                             ,l_component_appl_id
32327                                                                             ,l_amb_context_code
32328                                                                             ,l_entity_code
32329                                                                             ,l_event_class_code
32330                                                                            )
32331                                     ,p_token_3                 => 'OWNER'
32332                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32333                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32334                                                                           ,p_lookup_code    => l_component_type_code
32335                                                                          )
32336                                     ,p_token_4                 => 'PRODUCT_NAME'
32337                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32338                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32339                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32340                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32341                                     ,p_ae_header_id            =>  NULL
32342                                        );
32343 
32344         IF (C_LEVEL_ERROR>= g_log_level) THEN
32345                  trace
32346                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32347                       ,p_level    => C_LEVEL_ERROR
32348                       ,p_module   => l_log_module);
32349         END IF;
32350       END IF;
32351    END IF;
32352    --
32353    --
32354    ------------------------------------------------------------------------------------------------
32355    -- 4219869 Business Flow
32356    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32357    -- Prior Entry.  Currently, the following code is always generated.
32358    ------------------------------------------------------------------------------------------------
32359    XLA_AE_LINES_PKG.ValidateCurrentLine;
32360 
32361    ------------------------------------------------------------------------------------
32362    -- 4219869 Business Flow
32363    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32364    ------------------------------------------------------------------------------------
32365    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32366 
32367    ----------------------------------------------------------------------------------
32368    -- 4219869 Business Flow
32369    -- Update journal entry status -- Need to generate this within IF <condition>
32370    ----------------------------------------------------------------------------------
32371    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32372          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32373          ,p_balance_type_code => l_balance_type_code
32374          );
32375 
32376    -------------------------------------------------------------------------------------------
32377    -- 4262811 - Generate the Accrual Reversal lines
32378    -------------------------------------------------------------------------------------------
32379    BEGIN
32380       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32381                               (g_array_event(p_event_id).array_value_num('header_index'));
32382       IF l_acc_rev_flag IS NULL THEN
32383          l_acc_rev_flag := 'N';
32384       END IF;
32385    EXCEPTION
32386       WHEN OTHERS THEN
32387          l_acc_rev_flag := 'N';
32388    END;
32389    --
32390    IF (l_acc_rev_flag = 'Y') THEN
32391 
32392        -- 4645092  ------------------------------------------------------------------------------
32393        -- To allow MPA report to determine if it should generate report process
32394        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32395        ------------------------------------------------------------------------------------------
32396 
32397        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32398        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32399 
32400        --
32401        -- Update the line information that should be overwritten
32402        --
32403        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32404                                          p_header_num   => 1);
32405        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32406 
32407        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32408 
32409        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32410           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32411        END IF;
32412 
32413       --
32414       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32415       --
32416       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32417           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32418       ELSE
32419           ---------------------------------------------------------------------------------------------------
32420           -- 4262811a Switch Sign
32421           ---------------------------------------------------------------------------------------------------
32422           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32423           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32424                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32425           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32426                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32427           -- 5132302
32428           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32429                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32430 
32431       END IF;
32432 
32433       -- 4955764
32434       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32435       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32436 
32437 
32438       XLA_AE_LINES_PKG.ValidateCurrentLine;
32439       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32440 
32441       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32442                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32443                ,p_balance_type_code => l_balance_type_code);
32444 
32445    END IF;
32446 
32447    -----------------------------------------------------------------------------------------
32448    -- 4262811 Multiperiod Accounting
32449    -----------------------------------------------------------------------------------------
32450      -- No MPA option is assigned.
32451 
32452 
32453 END IF;
32454 END IF;
32455 --
32456 
32457 --
32458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32459    trace
32460       (p_msg      => 'END of AcctLineType_61'
32461       ,p_level    => C_LEVEL_PROCEDURE
32462       ,p_module   => l_log_module);
32463 END IF;
32464 --
32465 EXCEPTION
32466   WHEN xla_exceptions_pkg.application_exception THEN
32467       RAISE;
32468   WHEN OTHERS THEN
32469        xla_exceptions_pkg.raise_message
32470            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_61');
32471 END AcctLineType_61;
32472 --
32473 
32474 ---------------------------------------
32475 --
32476 -- PRIVATE FUNCTION
32477 --         AcctLineType_62
32478 --
32479 ---------------------------------------
32480 PROCEDURE AcctLineType_62 (
32481   p_application_id        IN NUMBER
32482  ,p_event_id              IN NUMBER
32483  ,p_calculate_acctd_flag  IN VARCHAR2
32484  ,p_calculate_g_l_flag    IN VARCHAR2
32485  ,p_actual_flag           IN OUT VARCHAR2
32486  ,p_balance_type_code     OUT VARCHAR2
32487  ,p_gain_or_loss_ref      OUT VARCHAR2
32488  
32489 --Budget Account
32490  , p_source_9            IN NUMBER
32491 --Main Or Backing Code
32492  , p_source_13            IN VARCHAR2
32493 --Accounting Reversal Flag
32494  , p_source_15            IN VARCHAR2
32495 --Distribution Link Type
32496  , p_source_17            IN VARCHAR2
32497 --PO Distribution Identifier
32498  , p_source_19            IN NUMBER
32499 --Applied To Application Identifier
32500  , p_source_21            IN NUMBER
32501 --Applied To Distribution Link Type
32502  , p_source_22            IN VARCHAR2
32503 --Applied To Entity Code
32504  , p_source_23            IN VARCHAR2
32505 --Applied To Distribution Identifier 1
32506  , p_source_24            IN NUMBER
32507 --Applied To Header Identifier 1
32508  , p_source_25            IN NUMBER
32509 --Entered Amount
32510  , p_source_26            IN NUMBER
32511 --Currency Code
32512  , p_source_27            IN VARCHAR2
32513 --Accounted Amount
32514  , p_source_28            IN NUMBER
32515 --PO Encumbrance Upgrade Option
32516  , p_source_29            IN VARCHAR2
32517 --JFMIP Reference
32518  , p_source_31            IN VARCHAR2
32519 --PO Upgrade Encumbrance Type Identifier
32520  , p_source_32            IN NUMBER
32521 --Allocated to Main Document Distribution Identifier
32522  , p_source_34            IN NUMBER
32523 --PO Release Identifier
32524  , p_source_41            IN NUMBER
32525 )
32526 IS
32527 
32528 l_component_type              VARCHAR2(80);
32529 l_component_code              VARCHAR2(30);
32530 l_component_type_code         VARCHAR2(1);
32531 l_component_appl_id           INTEGER;
32532 l_amb_context_code            VARCHAR2(30);
32533 l_entity_code                 VARCHAR2(30);
32534 l_event_class_code            VARCHAR2(30);
32535 l_ae_header_id                NUMBER;
32536 l_event_type_code             VARCHAR2(30);
32537 l_line_definition_code        VARCHAR2(30);
32538 l_line_definition_owner_code  VARCHAR2(1);
32539 --
32540 -- adr variables
32541 l_segment                     VARCHAR2(30);
32542 l_ccid                        NUMBER;
32543 l_adr_transaction_coa_id      NUMBER;
32544 l_adr_accounting_coa_id       NUMBER;
32545 l_adr_flexfield_segment_code  VARCHAR2(30);
32546 l_adr_flex_value_set_id       NUMBER;
32547 l_adr_value_type_code         VARCHAR2(30);
32548 l_adr_value_combination_id    NUMBER;
32549 l_adr_value_segment_code      VARCHAR2(30);
32550 
32551 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32552 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32553 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32554 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32555 
32556 -- 4262811 Variables ------------------------------------------------------------------------------------------
32557 l_entered_amt_idx             NUMBER;
32558 l_accted_amt_idx              NUMBER;
32559 l_acc_rev_flag                VARCHAR2(1);
32560 l_accrual_line_num            NUMBER;
32561 l_tmp_amt                     NUMBER;
32562 l_acc_rev_natural_side_code   VARCHAR2(1);
32563 
32564 l_num_entries                 NUMBER;
32565 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32566 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32567 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32568 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32569 l_recog_line_1                NUMBER;
32570 l_recog_line_2                NUMBER;
32571 
32572 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32573 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32574 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32575 
32576 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32577 
32578 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32579 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32580 
32581 ---------------------------------------------------------------------------------------------------------------
32582 
32583 
32584 --
32585 -- bulk performance
32586 --
32587 l_balance_type_code           VARCHAR2(1);
32588 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32589 l_log_module                  VARCHAR2(240);
32590 
32591 --
32592 -- Upgrade strategy
32593 --
32594 l_actual_upg_option           VARCHAR2(1);
32595 l_enc_upg_option           VARCHAR2(1);
32596 
32597 --
32598 BEGIN
32599 --
32600 IF g_log_enabled THEN
32601       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
32602 END IF;
32603 --
32604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32605 
32606       trace
32607          (p_msg      => 'BEGIN of AcctLineType_62'
32608          ,p_level    => C_LEVEL_PROCEDURE
32609          ,p_module   => l_log_module);
32610 
32611 END IF;
32612 --
32613 l_component_type             := 'AMB_JLT';
32614 l_component_code             := 'FV_REL_REINST_PO_PA_CR';
32615 l_component_type_code        := 'S';
32616 l_component_appl_id          :=  201;
32617 l_amb_context_code           := 'DEFAULT';
32618 l_entity_code                := 'RELEASE';
32619 l_event_class_code           := 'RELEASE';
32620 l_event_type_code            := 'RELEASE_ALL';
32621 l_line_definition_owner_code := 'S';
32622 l_line_definition_code       := 'FV_RELEASE_ALL';
32623 --
32624 l_balance_type_code          := 'A';
32625 l_segment                     := NULL;
32626 l_ccid                        := NULL;
32627 l_adr_transaction_coa_id      := NULL;
32628 l_adr_accounting_coa_id       := NULL;
32629 l_adr_flexfield_segment_code  := NULL;
32630 l_adr_flex_value_set_id       := NULL;
32631 l_adr_value_type_code         := NULL;
32632 l_adr_value_combination_id    := NULL;
32633 l_adr_value_segment_code      := NULL;
32634 
32635 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
32636 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
32637 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
32638 l_budgetary_control_flag     := 'Y';
32639 
32640 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32641 l_bflow_applied_to_amt       := NULL; -- 5132302
32642 l_entered_amt_idx            := NULL;          -- 4262811
32643 l_accted_amt_idx             := NULL;          -- 4262811
32644 l_acc_rev_flag               := NULL;          -- 4262811
32645 l_accrual_line_num           := NULL;          -- 4262811
32646 l_tmp_amt                    := NULL;          -- 4262811
32647 --
32648  
32649 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32650     l_balance_type_code <> 'B' THEN
32651 IF (NVL(
32652 xla_ae_sources_pkg.GetSystemSourceChar(
32653    p_source_code           => 'XLA_EVENT_TYPE_CODE'
32654  , p_source_type_code      => 'Y'
32655  , p_source_application_id =>  602
32656 ),'
32657 ') =  'RELEASE_UNRESERVED' OR 
32658 NVL(
32659 xla_ae_sources_pkg.GetSystemSourceChar(
32660    p_source_code           => 'XLA_EVENT_TYPE_CODE'
32661  , p_source_type_code      => 'Y'
32662  , p_source_application_id =>  602
32663 ),'
32664 ') =  'RELEASE_REJECTED' OR 
32665 NVL(
32666 xla_ae_sources_pkg.GetSystemSourceChar(
32667    p_source_code           => 'XLA_EVENT_TYPE_CODE'
32668  , p_source_type_code      => 'Y'
32669  , p_source_application_id =>  602
32670 ),'
32671 ') =  'RELEASE_INV_CANCELLED') AND 
32672 (NVL(p_source_13,'
32673 ') =  'B_PO' OR 
32674 NVL(p_source_13,'
32675 ') =  'B_PA')
32676  THEN 
32677 
32678    --
32679    XLA_AE_LINES_PKG.SetNewLine;
32680 
32681    p_balance_type_code          := l_balance_type_code;
32682    -- set the flag so later we will know whether the gain loss line needs to be created
32683    
32684    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32685      p_actual_flag :='A';
32686    END IF;
32687 
32688    --
32689    -- bulk performance
32690    --
32691    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32692                                       p_header_num   => 0); -- 4262811
32693    --
32694    -- set accounting line options
32695    --
32696    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32697            p_natural_side_code          => 'C'
32698          , p_gain_or_loss_flag          => 'N'
32699          , p_gl_transfer_mode_code      => 'S'
32700          , p_acct_entry_type_code       => 'A'
32701          , p_switch_side_flag           => 'N'
32702          , p_merge_duplicate_code       => 'N'
32703          );
32704    --
32705    l_acc_rev_natural_side_code := 'D';  -- 4262811
32706    -- 
32707    --
32708    -- set accounting line type info
32709    --
32710    xla_ae_lines_pkg.SetAcctLineType
32711       (p_component_type             => l_component_type
32712       ,p_event_type_code            => l_event_type_code
32713       ,p_line_definition_owner_code => l_line_definition_owner_code
32714       ,p_line_definition_code       => l_line_definition_code
32715       ,p_accounting_line_code       => l_component_code
32716       ,p_accounting_line_type_code  => l_component_type_code
32717       ,p_accounting_line_appl_id    => l_component_appl_id
32718       ,p_amb_context_code           => l_amb_context_code
32719       ,p_entity_code                => l_entity_code
32720       ,p_event_class_code           => l_event_class_code);
32721    --
32722    -- set accounting class
32723    --
32724    xla_ae_lines_pkg.SetAcctClass(
32725            p_accounting_class_code  => 'PURCHASE_ORDER'
32726          , p_ae_header_id           => l_ae_header_id
32727          );
32728 
32729    --
32730    -- set rounding class
32731    --
32732    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32733                       'PURCHASE_ORDER';
32734 
32735    --
32736    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32737    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32738    --
32739    -- bulk performance
32740    --
32741    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32742 
32743    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32744       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32745 
32746    -- 4955764
32747    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32748       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32749 
32750    -- 4458381 Public Sector Enh
32751    
32752    --
32753    -- set accounting attributes for the line type
32754    --
32755    l_entered_amt_idx := 23;
32756    l_accted_amt_idx  := 25;
32757    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32758    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32759    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
32760    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
32761    l_rec_acct_attrs.array_num_value(2)  := 
32762 xla_ae_sources_pkg.GetSystemSourceNum(
32763    p_source_code           => 'XLA_EVENT_APPL_ID'
32764  , p_source_type_code      => 'Y'
32765  , p_source_application_id =>  602
32766 );
32767    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
32768    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
32769    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
32770    l_rec_acct_attrs.array_char_value(4)  := 
32771 xla_ae_sources_pkg.GetSystemSourceChar(
32772    p_source_code           => 'XLA_ENTITY_CODE'
32773  , p_source_type_code      => 'Y'
32774  , p_source_application_id =>  602
32775 );
32776    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
32777    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
32778    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
32779    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
32780    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
32781    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
32782    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32783    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
32784    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
32785    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
32786    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
32787    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
32788    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32789    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
32790    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
32791    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
32792    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
32793    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
32794    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
32795    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
32796    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
32797    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
32798    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
32799    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
32800    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
32801    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
32802    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
32803    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
32804    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
32805    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
32806    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
32807    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
32808    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
32809    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
32810    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
32811    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
32812    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
32813    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
32814    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
32815    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
32816    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
32817    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
32818    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
32819    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
32820    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
32821    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
32822    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
32823    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
32824    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
32825    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
32826    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
32827    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
32828    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
32829    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
32830 
32831    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32832    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32833 
32834    ---------------------------------------------------------------------------------------------------------------
32835    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32836    ---------------------------------------------------------------------------------------------------------------
32837    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32838 
32839    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32840    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32841 
32842    IF xla_accounting_cache_pkg.GetValueChar
32843          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32844          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32845    AND l_bflow_method_code = 'PRIOR_ENTRY'
32846 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32847    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32848          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32849        )
32850    THEN
32851          xla_ae_lines_pkg.BflowUpgEntry
32852            (p_business_method_code    => l_bflow_method_code
32853            ,p_business_class_code     => l_bflow_class_code
32854            ,p_balance_type            => l_balance_type_code);
32855    ELSE
32856       NULL;
32857 XLA_AE_LINES_PKG.business_flow_validation(
32858                                 p_business_method_code     => l_bflow_method_code
32859                                ,p_business_class_code      => l_bflow_class_code
32860                                ,p_inherit_description_flag => l_inherit_desc_flag);
32861    END IF;
32862 
32863    --
32864    -- call analytical criteria
32865    --
32866    -- Inherited Analytical Criteria for business flow method of Prior Entry.
32867    --
32868    -- call description
32869    --
32870    -- No description or it is inherited.
32871    --
32872    -- call ADRs
32873    -- Bug 4922099
32874    --
32875    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32876         (NVL(l_actual_upg_option, 'N') = 'O') OR
32877         (NVL(l_enc_upg_option, 'N') = 'O')
32878       )
32879    THEN
32880    NULL;
32881    --
32882    --
32883    
32884    --
32885    --
32886    END IF;
32887    --
32888    -- Bug 4922099
32889    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32890           (NVL(l_enc_upg_option, 'N') = 'O')
32891         ) AND
32892         (l_bflow_method_code = 'PRIOR_ENTRY')
32893       )
32894    THEN
32895       IF
32896       --
32897       1 = 1
32898       --
32899       THEN
32900       xla_accounting_err_pkg.build_message
32901                                     (p_appli_s_name            => 'XLA'
32902                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32903                                     ,p_token_1                 => 'LINE_NUMBER'
32904                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32905                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32906                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32907                                                                              l_component_type
32908                                                                             ,l_component_code
32909                                                                             ,l_component_type_code
32910                                                                             ,l_component_appl_id
32911                                                                             ,l_amb_context_code
32912                                                                             ,l_entity_code
32913                                                                             ,l_event_class_code
32914                                                                            )
32915                                     ,p_token_3                 => 'OWNER'
32916                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32917                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32918                                                                           ,p_lookup_code    => l_component_type_code
32919                                                                          )
32920                                     ,p_token_4                 => 'PRODUCT_NAME'
32921                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32922                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32923                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32924                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32925                                     ,p_ae_header_id            =>  NULL
32926                                        );
32927 
32928         IF (C_LEVEL_ERROR>= g_log_level) THEN
32929                  trace
32930                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32931                       ,p_level    => C_LEVEL_ERROR
32932                       ,p_module   => l_log_module);
32933         END IF;
32934       END IF;
32935    END IF;
32936    --
32937    --
32938    ------------------------------------------------------------------------------------------------
32939    -- 4219869 Business Flow
32940    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32941    -- Prior Entry.  Currently, the following code is always generated.
32942    ------------------------------------------------------------------------------------------------
32943    -- No ValidateCurrentLine for business flow method of Prior Entry
32944 
32945    ------------------------------------------------------------------------------------
32946    -- 4219869 Business Flow
32947    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32948    ------------------------------------------------------------------------------------
32949    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32950 
32951    ----------------------------------------------------------------------------------
32952    -- 4219869 Business Flow
32953    -- Update journal entry status -- Need to generate this within IF <condition>
32954    ----------------------------------------------------------------------------------
32955    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32956          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32957          ,p_balance_type_code => l_balance_type_code
32958          );
32959 
32960    -------------------------------------------------------------------------------------------
32961    -- 4262811 - Generate the Accrual Reversal lines
32962    -------------------------------------------------------------------------------------------
32963    BEGIN
32964       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32965                               (g_array_event(p_event_id).array_value_num('header_index'));
32966       IF l_acc_rev_flag IS NULL THEN
32967          l_acc_rev_flag := 'N';
32968       END IF;
32969    EXCEPTION
32970       WHEN OTHERS THEN
32971          l_acc_rev_flag := 'N';
32972    END;
32973    --
32974    IF (l_acc_rev_flag = 'Y') THEN
32975 
32976        -- 4645092  ------------------------------------------------------------------------------
32977        -- To allow MPA report to determine if it should generate report process
32978        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32979        ------------------------------------------------------------------------------------------
32980 
32981        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32982        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32983 
32984        --
32985        -- Update the line information that should be overwritten
32986        --
32987        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32988                                          p_header_num   => 1);
32989        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32990 
32991        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32992 
32993        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32994           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32995        END IF;
32996 
32997       --
32998       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32999       --
33000       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33001           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33002       ELSE
33003           ---------------------------------------------------------------------------------------------------
33004           -- 4262811a Switch Sign
33005           ---------------------------------------------------------------------------------------------------
33006           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33007           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33008                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33009           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33010                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33011           -- 5132302
33012           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33013                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33014 
33015       END IF;
33016 
33017       -- 4955764
33018       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33019       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33020 
33021 
33022       XLA_AE_LINES_PKG.ValidateCurrentLine;
33023       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33024 
33025       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33026                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33027                ,p_balance_type_code => l_balance_type_code);
33028 
33029    END IF;
33030 
33031    -----------------------------------------------------------------------------------------
33032    -- 4262811 Multiperiod Accounting
33033    -----------------------------------------------------------------------------------------
33034      -- No MPA option is assigned.
33035 
33036 
33037 END IF;
33038 END IF;
33039 --
33040 
33041 --
33042 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33043    trace
33044       (p_msg      => 'END of AcctLineType_62'
33045       ,p_level    => C_LEVEL_PROCEDURE
33046       ,p_module   => l_log_module);
33047 END IF;
33048 --
33049 EXCEPTION
33050   WHEN xla_exceptions_pkg.application_exception THEN
33051       RAISE;
33052   WHEN OTHERS THEN
33053        xla_exceptions_pkg.raise_message
33054            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_62');
33055 END AcctLineType_62;
33056 --
33057 
33058 ---------------------------------------
33059 --
33060 -- PRIVATE FUNCTION
33061 --         AcctLineType_63
33062 --
33063 ---------------------------------------
33064 PROCEDURE AcctLineType_63 (
33065   p_application_id        IN NUMBER
33066  ,p_event_id              IN NUMBER
33067  ,p_calculate_acctd_flag  IN VARCHAR2
33068  ,p_calculate_g_l_flag    IN VARCHAR2
33069  ,p_actual_flag           IN OUT VARCHAR2
33070  ,p_balance_type_code     OUT VARCHAR2
33071  ,p_gain_or_loss_ref      OUT VARCHAR2
33072  
33073 --Budget Account
33074  , p_source_9            IN NUMBER
33075 --Main Or Backing Code
33076  , p_source_13            IN VARCHAR2
33077 --Accounting Reversal Flag
33078  , p_source_15            IN VARCHAR2
33079 --Distribution Link Type
33080  , p_source_17            IN VARCHAR2
33081 --PO Distribution Identifier
33082  , p_source_19            IN NUMBER
33083 --Applied To Application Identifier
33084  , p_source_21            IN NUMBER
33085 --Applied To Distribution Link Type
33086  , p_source_22            IN VARCHAR2
33087 --Applied To Entity Code
33088  , p_source_23            IN VARCHAR2
33089 --Applied To Distribution Identifier 1
33090  , p_source_24            IN NUMBER
33091 --Applied To Header Identifier 1
33092  , p_source_25            IN NUMBER
33093 --Entered Amount
33094  , p_source_26            IN NUMBER
33095 --Currency Code
33096  , p_source_27            IN VARCHAR2
33097 --Accounted Amount
33098  , p_source_28            IN NUMBER
33099 --PO Encumbrance Upgrade Option
33100  , p_source_29            IN VARCHAR2
33101 --JFMIP Reference
33102  , p_source_31            IN VARCHAR2
33103 --PO Upgrade Encumbrance Type Identifier
33104  , p_source_32            IN NUMBER
33105 --Allocated to Main Document Distribution Type
33106  , p_source_33            IN VARCHAR2
33107 --Allocated to Main Document Distribution Identifier
33108  , p_source_34            IN NUMBER
33109 --PO Release Identifier
33110  , p_source_41            IN NUMBER
33111 )
33112 IS
33113 
33114 l_component_type              VARCHAR2(80);
33115 l_component_code              VARCHAR2(30);
33116 l_component_type_code         VARCHAR2(1);
33117 l_component_appl_id           INTEGER;
33118 l_amb_context_code            VARCHAR2(30);
33119 l_entity_code                 VARCHAR2(30);
33120 l_event_class_code            VARCHAR2(30);
33121 l_ae_header_id                NUMBER;
33122 l_event_type_code             VARCHAR2(30);
33123 l_line_definition_code        VARCHAR2(30);
33124 l_line_definition_owner_code  VARCHAR2(1);
33125 --
33126 -- adr variables
33127 l_segment                     VARCHAR2(30);
33128 l_ccid                        NUMBER;
33129 l_adr_transaction_coa_id      NUMBER;
33130 l_adr_accounting_coa_id       NUMBER;
33131 l_adr_flexfield_segment_code  VARCHAR2(30);
33132 l_adr_flex_value_set_id       NUMBER;
33133 l_adr_value_type_code         VARCHAR2(30);
33134 l_adr_value_combination_id    NUMBER;
33135 l_adr_value_segment_code      VARCHAR2(30);
33136 
33137 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33138 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33139 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33140 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33141 
33142 -- 4262811 Variables ------------------------------------------------------------------------------------------
33143 l_entered_amt_idx             NUMBER;
33144 l_accted_amt_idx              NUMBER;
33145 l_acc_rev_flag                VARCHAR2(1);
33146 l_accrual_line_num            NUMBER;
33147 l_tmp_amt                     NUMBER;
33148 l_acc_rev_natural_side_code   VARCHAR2(1);
33149 
33150 l_num_entries                 NUMBER;
33151 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33152 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33153 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33154 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33155 l_recog_line_1                NUMBER;
33156 l_recog_line_2                NUMBER;
33157 
33158 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33159 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33160 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33161 
33162 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33163 
33164 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33165 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33166 
33167 ---------------------------------------------------------------------------------------------------------------
33168 
33169 
33170 --
33171 -- bulk performance
33172 --
33173 l_balance_type_code           VARCHAR2(1);
33174 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33175 l_log_module                  VARCHAR2(240);
33176 
33177 --
33178 -- Upgrade strategy
33179 --
33180 l_actual_upg_option           VARCHAR2(1);
33181 l_enc_upg_option           VARCHAR2(1);
33182 
33183 --
33184 BEGIN
33185 --
33186 IF g_log_enabled THEN
33187       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
33188 END IF;
33189 --
33190 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33191 
33192       trace
33193          (p_msg      => 'BEGIN of AcctLineType_63'
33194          ,p_level    => C_LEVEL_PROCEDURE
33195          ,p_module   => l_log_module);
33196 
33197 END IF;
33198 --
33199 l_component_type             := 'AMB_JLT';
33200 l_component_code             := 'FV_REL_REINST_PO_PA_DR';
33201 l_component_type_code        := 'S';
33202 l_component_appl_id          :=  201;
33203 l_amb_context_code           := 'DEFAULT';
33204 l_entity_code                := 'RELEASE';
33205 l_event_class_code           := 'RELEASE';
33206 l_event_type_code            := 'RELEASE_ALL';
33207 l_line_definition_owner_code := 'S';
33208 l_line_definition_code       := 'FV_RELEASE_ALL';
33209 --
33210 l_balance_type_code          := 'A';
33211 l_segment                     := NULL;
33212 l_ccid                        := NULL;
33213 l_adr_transaction_coa_id      := NULL;
33214 l_adr_accounting_coa_id       := NULL;
33215 l_adr_flexfield_segment_code  := NULL;
33216 l_adr_flex_value_set_id       := NULL;
33217 l_adr_value_type_code         := NULL;
33218 l_adr_value_combination_id    := NULL;
33219 l_adr_value_segment_code      := NULL;
33220 
33221 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
33222 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
33223 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
33224 l_budgetary_control_flag     := 'Y';
33225 
33226 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33227 l_bflow_applied_to_amt       := NULL; -- 5132302
33228 l_entered_amt_idx            := NULL;          -- 4262811
33229 l_accted_amt_idx             := NULL;          -- 4262811
33230 l_acc_rev_flag               := NULL;          -- 4262811
33231 l_accrual_line_num           := NULL;          -- 4262811
33232 l_tmp_amt                    := NULL;          -- 4262811
33233 --
33234  
33235 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33236     l_balance_type_code <> 'B' THEN
33237 IF (NVL(
33238 xla_ae_sources_pkg.GetSystemSourceChar(
33239    p_source_code           => 'XLA_EVENT_TYPE_CODE'
33240  , p_source_type_code      => 'Y'
33241  , p_source_application_id =>  602
33242 ),'
33243 ') =  'RELEASE_UNRESERVED' OR 
33244 NVL(
33245 xla_ae_sources_pkg.GetSystemSourceChar(
33246    p_source_code           => 'XLA_EVENT_TYPE_CODE'
33247  , p_source_type_code      => 'Y'
33248  , p_source_application_id =>  602
33249 ),'
33250 ') =  'RELEASE_REJECTED' OR 
33251 NVL(
33252 xla_ae_sources_pkg.GetSystemSourceChar(
33253    p_source_code           => 'XLA_EVENT_TYPE_CODE'
33254  , p_source_type_code      => 'Y'
33255  , p_source_application_id =>  602
33256 ),'
33257 ') =  'RELEASE_INV_CANCELLED') AND 
33258 (NVL(p_source_13,'
33259 ') =  'B_PO' OR 
33260 NVL(p_source_13,'
33261 ') =  'B_PA')
33262  THEN 
33263 
33264    --
33265    XLA_AE_LINES_PKG.SetNewLine;
33266 
33267    p_balance_type_code          := l_balance_type_code;
33268    -- set the flag so later we will know whether the gain loss line needs to be created
33269    
33270    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33271      p_actual_flag :='A';
33272    END IF;
33273 
33274    --
33275    -- bulk performance
33276    --
33277    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33278                                       p_header_num   => 0); -- 4262811
33279    --
33280    -- set accounting line options
33281    --
33282    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33283            p_natural_side_code          => 'D'
33284          , p_gain_or_loss_flag          => 'N'
33285          , p_gl_transfer_mode_code      => 'S'
33286          , p_acct_entry_type_code       => 'A'
33287          , p_switch_side_flag           => 'N'
33288          , p_merge_duplicate_code       => 'N'
33289          );
33290    --
33291    l_acc_rev_natural_side_code := 'C';  -- 4262811
33292    -- 
33293    --
33294    -- set accounting line type info
33295    --
33296    xla_ae_lines_pkg.SetAcctLineType
33297       (p_component_type             => l_component_type
33298       ,p_event_type_code            => l_event_type_code
33299       ,p_line_definition_owner_code => l_line_definition_owner_code
33300       ,p_line_definition_code       => l_line_definition_code
33301       ,p_accounting_line_code       => l_component_code
33302       ,p_accounting_line_type_code  => l_component_type_code
33303       ,p_accounting_line_appl_id    => l_component_appl_id
33304       ,p_amb_context_code           => l_amb_context_code
33305       ,p_entity_code                => l_entity_code
33306       ,p_event_class_code           => l_event_class_code);
33307    --
33308    -- set accounting class
33309    --
33310    xla_ae_lines_pkg.SetAcctClass(
33311            p_accounting_class_code  => 'PURCHASE_ORDER'
33312          , p_ae_header_id           => l_ae_header_id
33313          );
33314 
33315    --
33316    -- set rounding class
33317    --
33318    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33319                       'PURCHASE_ORDER';
33320 
33321    --
33322    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33323    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33324    --
33325    -- bulk performance
33326    --
33327    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33328 
33329    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33330       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33331 
33332    -- 4955764
33333    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33334       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33335 
33336    -- 4458381 Public Sector Enh
33337    
33338    --
33339    -- set accounting attributes for the line type
33340    --
33341    l_entered_amt_idx := 23;
33342    l_accted_amt_idx  := 25;
33343    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33344    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33345    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
33346    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
33347    l_rec_acct_attrs.array_num_value(2)  := 
33348 xla_ae_sources_pkg.GetSystemSourceNum(
33349    p_source_code           => 'XLA_EVENT_APPL_ID'
33350  , p_source_type_code      => 'Y'
33351  , p_source_application_id =>  602
33352 );
33353    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
33354    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
33355    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
33356    l_rec_acct_attrs.array_char_value(4)  := 
33357 xla_ae_sources_pkg.GetSystemSourceChar(
33358    p_source_code           => 'XLA_ENTITY_CODE'
33359  , p_source_type_code      => 'Y'
33360  , p_source_application_id =>  602
33361 );
33362    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
33363    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
33364    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
33365    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
33366    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
33367    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
33368    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33369    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
33370    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
33371    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
33372    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
33373    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
33374    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33375    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
33376    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
33377    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
33378    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
33379    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
33380    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
33381    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
33382    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
33383    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
33384    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
33385    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
33386    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
33387    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
33388    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
33389    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
33390    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
33391    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
33392    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
33393    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
33394    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
33395    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
33396    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
33397    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
33398    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
33399    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
33400    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
33401    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
33402    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
33403    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
33404    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
33405    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
33406    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
33407    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
33408    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
33409    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
33410    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
33411    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
33412    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
33413    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
33414    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
33415    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
33416 
33417    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33418    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33419 
33420    ---------------------------------------------------------------------------------------------------------------
33421    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33422    ---------------------------------------------------------------------------------------------------------------
33423    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33424 
33425    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33426    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33427 
33428    IF xla_accounting_cache_pkg.GetValueChar
33429          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33430          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33431    AND l_bflow_method_code = 'PRIOR_ENTRY'
33432 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33433    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33434          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33435        )
33436    THEN
33437          xla_ae_lines_pkg.BflowUpgEntry
33438            (p_business_method_code    => l_bflow_method_code
33439            ,p_business_class_code     => l_bflow_class_code
33440            ,p_balance_type            => l_balance_type_code);
33441    ELSE
33442       NULL;
33443 XLA_AE_LINES_PKG.business_flow_validation(
33444                                 p_business_method_code     => l_bflow_method_code
33445                                ,p_business_class_code      => l_bflow_class_code
33446                                ,p_inherit_description_flag => l_inherit_desc_flag);
33447    END IF;
33448 
33449    --
33450    -- call analytical criteria
33451    --
33452    -- Inherited Analytical Criteria for business flow method of Prior Entry.
33453    --
33454    -- call description
33455    --
33456    -- No description or it is inherited.
33457    --
33458    -- call ADRs
33459    -- Bug 4922099
33460    --
33461    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33462         (NVL(l_actual_upg_option, 'N') = 'O') OR
33463         (NVL(l_enc_upg_option, 'N') = 'O')
33464       )
33465    THEN
33466    NULL;
33467    --
33468    --
33469    
33470    --
33471    --
33472    END IF;
33473    --
33474    -- Bug 4922099
33475    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33476           (NVL(l_enc_upg_option, 'N') = 'O')
33477         ) AND
33478         (l_bflow_method_code = 'PRIOR_ENTRY')
33479       )
33480    THEN
33481       IF
33482       --
33483       1 = 1
33484       --
33485       THEN
33486       xla_accounting_err_pkg.build_message
33487                                     (p_appli_s_name            => 'XLA'
33488                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33489                                     ,p_token_1                 => 'LINE_NUMBER'
33490                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33491                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33492                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33493                                                                              l_component_type
33494                                                                             ,l_component_code
33495                                                                             ,l_component_type_code
33496                                                                             ,l_component_appl_id
33497                                                                             ,l_amb_context_code
33498                                                                             ,l_entity_code
33499                                                                             ,l_event_class_code
33500                                                                            )
33501                                     ,p_token_3                 => 'OWNER'
33502                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33503                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33504                                                                           ,p_lookup_code    => l_component_type_code
33505                                                                          )
33506                                     ,p_token_4                 => 'PRODUCT_NAME'
33507                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33508                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33509                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33510                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33511                                     ,p_ae_header_id            =>  NULL
33512                                        );
33513 
33514         IF (C_LEVEL_ERROR>= g_log_level) THEN
33515                  trace
33516                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33517                       ,p_level    => C_LEVEL_ERROR
33518                       ,p_module   => l_log_module);
33519         END IF;
33520       END IF;
33521    END IF;
33522    --
33523    --
33524    ------------------------------------------------------------------------------------------------
33525    -- 4219869 Business Flow
33526    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33527    -- Prior Entry.  Currently, the following code is always generated.
33528    ------------------------------------------------------------------------------------------------
33529    -- No ValidateCurrentLine for business flow method of Prior Entry
33530 
33531    ------------------------------------------------------------------------------------
33532    -- 4219869 Business Flow
33533    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33534    ------------------------------------------------------------------------------------
33535    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33536 
33537    ----------------------------------------------------------------------------------
33538    -- 4219869 Business Flow
33539    -- Update journal entry status -- Need to generate this within IF <condition>
33540    ----------------------------------------------------------------------------------
33541    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33542          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33543          ,p_balance_type_code => l_balance_type_code
33544          );
33545 
33546    -------------------------------------------------------------------------------------------
33547    -- 4262811 - Generate the Accrual Reversal lines
33548    -------------------------------------------------------------------------------------------
33549    BEGIN
33550       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33551                               (g_array_event(p_event_id).array_value_num('header_index'));
33552       IF l_acc_rev_flag IS NULL THEN
33553          l_acc_rev_flag := 'N';
33554       END IF;
33555    EXCEPTION
33556       WHEN OTHERS THEN
33557          l_acc_rev_flag := 'N';
33558    END;
33559    --
33560    IF (l_acc_rev_flag = 'Y') THEN
33561 
33562        -- 4645092  ------------------------------------------------------------------------------
33563        -- To allow MPA report to determine if it should generate report process
33564        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33565        ------------------------------------------------------------------------------------------
33566 
33567        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33568        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33569 
33570        --
33571        -- Update the line information that should be overwritten
33572        --
33573        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33574                                          p_header_num   => 1);
33575        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33576 
33577        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33578 
33579        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33580           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33581        END IF;
33582 
33583       --
33584       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33585       --
33586       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33587           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33588       ELSE
33589           ---------------------------------------------------------------------------------------------------
33590           -- 4262811a Switch Sign
33591           ---------------------------------------------------------------------------------------------------
33592           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33593           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33594                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33595           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33596                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33597           -- 5132302
33598           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33599                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33600 
33601       END IF;
33602 
33603       -- 4955764
33604       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33605       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33606 
33607 
33608       XLA_AE_LINES_PKG.ValidateCurrentLine;
33609       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33610 
33611       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33612                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33613                ,p_balance_type_code => l_balance_type_code);
33614 
33615    END IF;
33616 
33617    -----------------------------------------------------------------------------------------
33618    -- 4262811 Multiperiod Accounting
33619    -----------------------------------------------------------------------------------------
33620      -- No MPA option is assigned.
33621 
33622 
33623 END IF;
33624 END IF;
33625 --
33626 
33627 --
33628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33629    trace
33630       (p_msg      => 'END of AcctLineType_63'
33631       ,p_level    => C_LEVEL_PROCEDURE
33632       ,p_module   => l_log_module);
33633 END IF;
33634 --
33635 EXCEPTION
33636   WHEN xla_exceptions_pkg.application_exception THEN
33637       RAISE;
33638   WHEN OTHERS THEN
33639        xla_exceptions_pkg.raise_message
33640            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_63');
33641 END AcctLineType_63;
33642 --
33643 
33644 ---------------------------------------
33645 --
33646 -- PRIVATE FUNCTION
33647 --         AcctLineType_64
33648 --
33649 ---------------------------------------
33650 PROCEDURE AcctLineType_64 (
33651   p_application_id        IN NUMBER
33652  ,p_event_id              IN NUMBER
33653  ,p_calculate_acctd_flag  IN VARCHAR2
33654  ,p_calculate_g_l_flag    IN VARCHAR2
33655  ,p_actual_flag           IN OUT VARCHAR2
33656  ,p_balance_type_code     OUT VARCHAR2
33657  ,p_gain_or_loss_ref      OUT VARCHAR2
33658  
33659 --Budget Account
33660  , p_source_9            IN NUMBER
33661 --Main Or Backing Code
33662  , p_source_13            IN VARCHAR2
33663 --Accounting Reversal Flag
33664  , p_source_15            IN VARCHAR2
33665 --Distribution Link Type
33666  , p_source_17            IN VARCHAR2
33667 --PO Distribution Identifier
33668  , p_source_19            IN NUMBER
33669 --Applied To Application Identifier
33670  , p_source_21            IN NUMBER
33671 --Applied To Distribution Link Type
33672  , p_source_22            IN VARCHAR2
33673 --Applied To Entity Code
33674  , p_source_23            IN VARCHAR2
33675 --Applied To Distribution Identifier 1
33676  , p_source_24            IN NUMBER
33677 --Applied To Header Identifier 1
33678  , p_source_25            IN NUMBER
33679 --Entered Amount
33680  , p_source_26            IN NUMBER
33681 --Currency Code
33682  , p_source_27            IN VARCHAR2
33683 --Accounted Amount
33684  , p_source_28            IN NUMBER
33685 --PO Encumbrance Upgrade Option
33686  , p_source_29            IN VARCHAR2
33687 --JFMIP Reference
33688  , p_source_31            IN VARCHAR2
33689 --PO Upgrade Encumbrance Type Identifier
33690  , p_source_32            IN NUMBER
33691 --Allocated to Main Document Distribution Type
33692  , p_source_33            IN VARCHAR2
33693 --Allocated to Main Document Distribution Identifier
33694  , p_source_34            IN NUMBER
33695 --PO Release Identifier
33696  , p_source_41            IN NUMBER
33697 )
33698 IS
33699 
33700 l_component_type              VARCHAR2(80);
33701 l_component_code              VARCHAR2(30);
33702 l_component_type_code         VARCHAR2(1);
33703 l_component_appl_id           INTEGER;
33704 l_amb_context_code            VARCHAR2(30);
33705 l_entity_code                 VARCHAR2(30);
33706 l_event_class_code            VARCHAR2(30);
33707 l_ae_header_id                NUMBER;
33708 l_event_type_code             VARCHAR2(30);
33709 l_line_definition_code        VARCHAR2(30);
33710 l_line_definition_owner_code  VARCHAR2(1);
33711 --
33712 -- adr variables
33713 l_segment                     VARCHAR2(30);
33714 l_ccid                        NUMBER;
33715 l_adr_transaction_coa_id      NUMBER;
33716 l_adr_accounting_coa_id       NUMBER;
33717 l_adr_flexfield_segment_code  VARCHAR2(30);
33718 l_adr_flex_value_set_id       NUMBER;
33719 l_adr_value_type_code         VARCHAR2(30);
33720 l_adr_value_combination_id    NUMBER;
33721 l_adr_value_segment_code      VARCHAR2(30);
33722 
33723 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33724 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33725 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33726 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33727 
33728 -- 4262811 Variables ------------------------------------------------------------------------------------------
33729 l_entered_amt_idx             NUMBER;
33730 l_accted_amt_idx              NUMBER;
33731 l_acc_rev_flag                VARCHAR2(1);
33732 l_accrual_line_num            NUMBER;
33733 l_tmp_amt                     NUMBER;
33734 l_acc_rev_natural_side_code   VARCHAR2(1);
33735 
33736 l_num_entries                 NUMBER;
33737 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33738 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33739 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33740 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33741 l_recog_line_1                NUMBER;
33742 l_recog_line_2                NUMBER;
33743 
33744 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33745 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33746 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33747 
33748 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33749 
33750 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33751 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33752 
33753 ---------------------------------------------------------------------------------------------------------------
33754 
33755 
33756 --
33757 -- bulk performance
33758 --
33759 l_balance_type_code           VARCHAR2(1);
33760 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33761 l_log_module                  VARCHAR2(240);
33762 
33763 --
33764 -- Upgrade strategy
33765 --
33766 l_actual_upg_option           VARCHAR2(1);
33767 l_enc_upg_option           VARCHAR2(1);
33768 
33769 --
33770 BEGIN
33771 --
33772 IF g_log_enabled THEN
33773       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
33774 END IF;
33775 --
33776 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33777 
33778       trace
33779          (p_msg      => 'BEGIN of AcctLineType_64'
33780          ,p_level    => C_LEVEL_PROCEDURE
33781          ,p_module   => l_log_module);
33782 
33783 END IF;
33784 --
33785 l_component_type             := 'AMB_JLT';
33786 l_component_code             := 'FV_REL_REINST_REQ_CR';
33787 l_component_type_code        := 'S';
33788 l_component_appl_id          :=  201;
33789 l_amb_context_code           := 'DEFAULT';
33790 l_entity_code                := 'RELEASE';
33791 l_event_class_code           := 'RELEASE';
33792 l_event_type_code            := 'RELEASE_ALL';
33793 l_line_definition_owner_code := 'S';
33794 l_line_definition_code       := 'FV_RELEASE_ALL';
33795 --
33796 l_balance_type_code          := 'A';
33797 l_segment                     := NULL;
33798 l_ccid                        := NULL;
33799 l_adr_transaction_coa_id      := NULL;
33800 l_adr_accounting_coa_id       := NULL;
33801 l_adr_flexfield_segment_code  := NULL;
33802 l_adr_flex_value_set_id       := NULL;
33803 l_adr_value_type_code         := NULL;
33804 l_adr_value_combination_id    := NULL;
33805 l_adr_value_segment_code      := NULL;
33806 
33807 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
33808 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
33809 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
33810 l_budgetary_control_flag     := 'Y';
33811 
33812 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33813 l_bflow_applied_to_amt       := NULL; -- 5132302
33814 l_entered_amt_idx            := NULL;          -- 4262811
33815 l_accted_amt_idx             := NULL;          -- 4262811
33816 l_acc_rev_flag               := NULL;          -- 4262811
33817 l_accrual_line_num           := NULL;          -- 4262811
33818 l_tmp_amt                    := NULL;          -- 4262811
33819 --
33820  
33821 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33822     l_balance_type_code <> 'B' THEN
33823 IF (NVL(
33824 xla_ae_sources_pkg.GetSystemSourceChar(
33825    p_source_code           => 'XLA_EVENT_TYPE_CODE'
33826  , p_source_type_code      => 'Y'
33827  , p_source_application_id =>  602
33828 ),'
33829 ') =  'RELEASE_REJECTED' OR 
33830 NVL(
33831 xla_ae_sources_pkg.GetSystemSourceChar(
33832    p_source_code           => 'XLA_EVENT_TYPE_CODE'
33833  , p_source_type_code      => 'Y'
33834  , p_source_application_id =>  602
33835 ),'
33836 ') =  'RELEASE_INV_CANCELLED' OR 
33837 NVL(
33838 xla_ae_sources_pkg.GetSystemSourceChar(
33839    p_source_code           => 'XLA_EVENT_TYPE_CODE'
33840  , p_source_type_code      => 'Y'
33841  , p_source_application_id =>  602
33842 ),'
33843 ') =  'RELEASE_UNRESERVED') AND 
33844 NVL(p_source_13,'
33845 ') =  'B_REQ'
33846  THEN 
33847 
33848    --
33849    XLA_AE_LINES_PKG.SetNewLine;
33850 
33851    p_balance_type_code          := l_balance_type_code;
33852    -- set the flag so later we will know whether the gain loss line needs to be created
33853    
33854    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33855      p_actual_flag :='A';
33856    END IF;
33857 
33858    --
33859    -- bulk performance
33860    --
33861    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33862                                       p_header_num   => 0); -- 4262811
33863    --
33864    -- set accounting line options
33865    --
33866    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33867            p_natural_side_code          => 'C'
33868          , p_gain_or_loss_flag          => 'N'
33869          , p_gl_transfer_mode_code      => 'S'
33870          , p_acct_entry_type_code       => 'A'
33871          , p_switch_side_flag           => 'N'
33872          , p_merge_duplicate_code       => 'N'
33873          );
33874    --
33875    l_acc_rev_natural_side_code := 'D';  -- 4262811
33876    -- 
33877    --
33878    -- set accounting line type info
33879    --
33880    xla_ae_lines_pkg.SetAcctLineType
33881       (p_component_type             => l_component_type
33882       ,p_event_type_code            => l_event_type_code
33883       ,p_line_definition_owner_code => l_line_definition_owner_code
33884       ,p_line_definition_code       => l_line_definition_code
33885       ,p_accounting_line_code       => l_component_code
33886       ,p_accounting_line_type_code  => l_component_type_code
33887       ,p_accounting_line_appl_id    => l_component_appl_id
33888       ,p_amb_context_code           => l_amb_context_code
33889       ,p_entity_code                => l_entity_code
33890       ,p_event_class_code           => l_event_class_code);
33891    --
33892    -- set accounting class
33893    --
33894    xla_ae_lines_pkg.SetAcctClass(
33895            p_accounting_class_code  => 'PURCHASE_ORDER'
33896          , p_ae_header_id           => l_ae_header_id
33897          );
33898 
33899    --
33900    -- set rounding class
33901    --
33902    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33903                       'PURCHASE_ORDER';
33904 
33905    --
33906    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33907    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33908    --
33909    -- bulk performance
33910    --
33911    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33912 
33913    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33914       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33915 
33916    -- 4955764
33917    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33918       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33919 
33920    -- 4458381 Public Sector Enh
33921    
33922    --
33923    -- set accounting attributes for the line type
33924    --
33925    l_entered_amt_idx := 23;
33926    l_accted_amt_idx  := 25;
33927    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33928    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33929    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
33930    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
33931    l_rec_acct_attrs.array_num_value(2)  := 
33932 xla_ae_sources_pkg.GetSystemSourceNum(
33933    p_source_code           => 'XLA_EVENT_APPL_ID'
33934  , p_source_type_code      => 'Y'
33935  , p_source_application_id =>  602
33936 );
33937    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
33938    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
33939    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
33940    l_rec_acct_attrs.array_char_value(4)  := 
33941 xla_ae_sources_pkg.GetSystemSourceChar(
33942    p_source_code           => 'XLA_ENTITY_CODE'
33943  , p_source_type_code      => 'Y'
33944  , p_source_application_id =>  602
33945 );
33946    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
33947    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
33948    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
33949    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
33950    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
33951    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
33952    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33953    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
33954    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
33955    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
33956    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
33957    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
33958    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33959    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
33960    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
33961    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
33962    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
33963    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
33964    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
33965    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
33966    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
33967    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
33968    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
33969    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
33970    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
33971    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
33972    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
33973    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
33974    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
33975    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
33976    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
33977    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
33978    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
33979    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
33980    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
33981    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
33982    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
33983    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
33984    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
33985    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
33986    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
33987    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
33988    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
33989    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
33990    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
33991    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
33992    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
33993    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
33994    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
33995    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
33996    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
33997    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
33998    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
33999    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
34000 
34001    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34002    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34003 
34004    ---------------------------------------------------------------------------------------------------------------
34005    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34006    ---------------------------------------------------------------------------------------------------------------
34007    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34008 
34009    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34010    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34011 
34012    IF xla_accounting_cache_pkg.GetValueChar
34013          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34014          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34015    AND l_bflow_method_code = 'PRIOR_ENTRY'
34016 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34017    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34018          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34019        )
34020    THEN
34021          xla_ae_lines_pkg.BflowUpgEntry
34022            (p_business_method_code    => l_bflow_method_code
34023            ,p_business_class_code     => l_bflow_class_code
34024            ,p_balance_type            => l_balance_type_code);
34025    ELSE
34026       NULL;
34027 XLA_AE_LINES_PKG.business_flow_validation(
34028                                 p_business_method_code     => l_bflow_method_code
34029                                ,p_business_class_code      => l_bflow_class_code
34030                                ,p_inherit_description_flag => l_inherit_desc_flag);
34031    END IF;
34032 
34033    --
34034    -- call analytical criteria
34035    --
34036    -- Inherited Analytical Criteria for business flow method of Prior Entry.
34037    --
34038    -- call description
34039    --
34040    -- No description or it is inherited.
34041    --
34042    -- call ADRs
34043    -- Bug 4922099
34044    --
34045    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34046         (NVL(l_actual_upg_option, 'N') = 'O') OR
34047         (NVL(l_enc_upg_option, 'N') = 'O')
34048       )
34049    THEN
34050    NULL;
34051    --
34052    --
34053    
34054    --
34055    --
34056    END IF;
34057    --
34058    -- Bug 4922099
34059    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34060           (NVL(l_enc_upg_option, 'N') = 'O')
34061         ) AND
34062         (l_bflow_method_code = 'PRIOR_ENTRY')
34063       )
34064    THEN
34065       IF
34066       --
34067       1 = 1
34068       --
34069       THEN
34070       xla_accounting_err_pkg.build_message
34071                                     (p_appli_s_name            => 'XLA'
34072                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34073                                     ,p_token_1                 => 'LINE_NUMBER'
34074                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34075                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34076                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34077                                                                              l_component_type
34078                                                                             ,l_component_code
34079                                                                             ,l_component_type_code
34080                                                                             ,l_component_appl_id
34081                                                                             ,l_amb_context_code
34082                                                                             ,l_entity_code
34083                                                                             ,l_event_class_code
34084                                                                            )
34085                                     ,p_token_3                 => 'OWNER'
34086                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34087                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34088                                                                           ,p_lookup_code    => l_component_type_code
34089                                                                          )
34090                                     ,p_token_4                 => 'PRODUCT_NAME'
34091                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34092                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34093                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34094                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34095                                     ,p_ae_header_id            =>  NULL
34096                                        );
34097 
34098         IF (C_LEVEL_ERROR>= g_log_level) THEN
34099                  trace
34100                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34101                       ,p_level    => C_LEVEL_ERROR
34102                       ,p_module   => l_log_module);
34103         END IF;
34104       END IF;
34105    END IF;
34106    --
34107    --
34108    ------------------------------------------------------------------------------------------------
34109    -- 4219869 Business Flow
34110    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34111    -- Prior Entry.  Currently, the following code is always generated.
34112    ------------------------------------------------------------------------------------------------
34113    -- No ValidateCurrentLine for business flow method of Prior Entry
34114 
34115    ------------------------------------------------------------------------------------
34116    -- 4219869 Business Flow
34117    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34118    ------------------------------------------------------------------------------------
34119    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34120 
34121    ----------------------------------------------------------------------------------
34122    -- 4219869 Business Flow
34123    -- Update journal entry status -- Need to generate this within IF <condition>
34124    ----------------------------------------------------------------------------------
34125    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34126          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34127          ,p_balance_type_code => l_balance_type_code
34128          );
34129 
34130    -------------------------------------------------------------------------------------------
34131    -- 4262811 - Generate the Accrual Reversal lines
34132    -------------------------------------------------------------------------------------------
34133    BEGIN
34134       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34135                               (g_array_event(p_event_id).array_value_num('header_index'));
34136       IF l_acc_rev_flag IS NULL THEN
34137          l_acc_rev_flag := 'N';
34138       END IF;
34139    EXCEPTION
34140       WHEN OTHERS THEN
34141          l_acc_rev_flag := 'N';
34142    END;
34143    --
34144    IF (l_acc_rev_flag = 'Y') THEN
34145 
34146        -- 4645092  ------------------------------------------------------------------------------
34147        -- To allow MPA report to determine if it should generate report process
34148        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34149        ------------------------------------------------------------------------------------------
34150 
34151        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34152        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34153 
34154        --
34155        -- Update the line information that should be overwritten
34156        --
34157        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34158                                          p_header_num   => 1);
34159        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34160 
34161        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34162 
34163        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34164           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34165        END IF;
34166 
34167       --
34168       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34169       --
34170       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34171           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34172       ELSE
34173           ---------------------------------------------------------------------------------------------------
34174           -- 4262811a Switch Sign
34175           ---------------------------------------------------------------------------------------------------
34176           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34177           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34178                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34179           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34180                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34181           -- 5132302
34182           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34183                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34184 
34185       END IF;
34186 
34187       -- 4955764
34188       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34189       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34190 
34191 
34192       XLA_AE_LINES_PKG.ValidateCurrentLine;
34193       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34194 
34195       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34196                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34197                ,p_balance_type_code => l_balance_type_code);
34198 
34199    END IF;
34200 
34201    -----------------------------------------------------------------------------------------
34202    -- 4262811 Multiperiod Accounting
34203    -----------------------------------------------------------------------------------------
34204      -- No MPA option is assigned.
34205 
34206 
34207 END IF;
34208 END IF;
34209 --
34210 
34211 --
34212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34213    trace
34214       (p_msg      => 'END of AcctLineType_64'
34215       ,p_level    => C_LEVEL_PROCEDURE
34216       ,p_module   => l_log_module);
34217 END IF;
34218 --
34219 EXCEPTION
34220   WHEN xla_exceptions_pkg.application_exception THEN
34221       RAISE;
34222   WHEN OTHERS THEN
34223        xla_exceptions_pkg.raise_message
34224            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_64');
34225 END AcctLineType_64;
34226 --
34227 
34228 ---------------------------------------
34229 --
34230 -- PRIVATE FUNCTION
34231 --         AcctLineType_65
34232 --
34233 ---------------------------------------
34234 PROCEDURE AcctLineType_65 (
34235   p_application_id        IN NUMBER
34236  ,p_event_id              IN NUMBER
34237  ,p_calculate_acctd_flag  IN VARCHAR2
34238  ,p_calculate_g_l_flag    IN VARCHAR2
34239  ,p_actual_flag           IN OUT VARCHAR2
34240  ,p_balance_type_code     OUT VARCHAR2
34241  ,p_gain_or_loss_ref      OUT VARCHAR2
34242  
34243 --Budget Account
34244  , p_source_9            IN NUMBER
34245 --Main Or Backing Code
34246  , p_source_13            IN VARCHAR2
34247 --Accounting Reversal Flag
34248  , p_source_15            IN VARCHAR2
34249 --Distribution Link Type
34250  , p_source_17            IN VARCHAR2
34251 --PO Distribution Identifier
34252  , p_source_19            IN NUMBER
34253 --Applied To Application Identifier
34254  , p_source_21            IN NUMBER
34255 --Applied To Distribution Link Type
34256  , p_source_22            IN VARCHAR2
34257 --Applied To Entity Code
34258  , p_source_23            IN VARCHAR2
34259 --Applied To Distribution Identifier 1
34260  , p_source_24            IN NUMBER
34261 --Applied To Header Identifier 1
34262  , p_source_25            IN NUMBER
34263 --Entered Amount
34264  , p_source_26            IN NUMBER
34265 --Currency Code
34266  , p_source_27            IN VARCHAR2
34267 --Accounted Amount
34268  , p_source_28            IN NUMBER
34269 --PO Encumbrance Upgrade Option
34270  , p_source_29            IN VARCHAR2
34271 --JFMIP Reference
34272  , p_source_31            IN VARCHAR2
34273 --PO Upgrade Encumbrance Type Identifier
34274  , p_source_32            IN NUMBER
34275 --Allocated to Main Document Distribution Type
34276  , p_source_33            IN VARCHAR2
34277 --Allocated to Main Document Distribution Identifier
34278  , p_source_34            IN NUMBER
34279 --PO Release Identifier
34280  , p_source_41            IN NUMBER
34281 )
34282 IS
34283 
34284 l_component_type              VARCHAR2(80);
34285 l_component_code              VARCHAR2(30);
34286 l_component_type_code         VARCHAR2(1);
34287 l_component_appl_id           INTEGER;
34288 l_amb_context_code            VARCHAR2(30);
34289 l_entity_code                 VARCHAR2(30);
34290 l_event_class_code            VARCHAR2(30);
34291 l_ae_header_id                NUMBER;
34292 l_event_type_code             VARCHAR2(30);
34293 l_line_definition_code        VARCHAR2(30);
34294 l_line_definition_owner_code  VARCHAR2(1);
34295 --
34296 -- adr variables
34297 l_segment                     VARCHAR2(30);
34298 l_ccid                        NUMBER;
34299 l_adr_transaction_coa_id      NUMBER;
34300 l_adr_accounting_coa_id       NUMBER;
34301 l_adr_flexfield_segment_code  VARCHAR2(30);
34302 l_adr_flex_value_set_id       NUMBER;
34303 l_adr_value_type_code         VARCHAR2(30);
34304 l_adr_value_combination_id    NUMBER;
34305 l_adr_value_segment_code      VARCHAR2(30);
34306 
34307 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34308 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34309 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34310 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34311 
34312 -- 4262811 Variables ------------------------------------------------------------------------------------------
34313 l_entered_amt_idx             NUMBER;
34314 l_accted_amt_idx              NUMBER;
34315 l_acc_rev_flag                VARCHAR2(1);
34316 l_accrual_line_num            NUMBER;
34317 l_tmp_amt                     NUMBER;
34318 l_acc_rev_natural_side_code   VARCHAR2(1);
34319 
34320 l_num_entries                 NUMBER;
34321 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34322 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34323 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34324 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34325 l_recog_line_1                NUMBER;
34326 l_recog_line_2                NUMBER;
34327 
34328 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34329 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34330 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34331 
34332 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34333 
34334 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34335 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34336 
34337 ---------------------------------------------------------------------------------------------------------------
34338 
34339 
34340 --
34341 -- bulk performance
34342 --
34343 l_balance_type_code           VARCHAR2(1);
34344 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34345 l_log_module                  VARCHAR2(240);
34346 
34347 --
34348 -- Upgrade strategy
34349 --
34350 l_actual_upg_option           VARCHAR2(1);
34351 l_enc_upg_option           VARCHAR2(1);
34352 
34353 --
34354 BEGIN
34355 --
34356 IF g_log_enabled THEN
34357       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
34358 END IF;
34359 --
34360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34361 
34362       trace
34363          (p_msg      => 'BEGIN of AcctLineType_65'
34364          ,p_level    => C_LEVEL_PROCEDURE
34365          ,p_module   => l_log_module);
34366 
34367 END IF;
34368 --
34369 l_component_type             := 'AMB_JLT';
34370 l_component_code             := 'FV_REL_REINST_REQ_DR';
34371 l_component_type_code        := 'S';
34372 l_component_appl_id          :=  201;
34373 l_amb_context_code           := 'DEFAULT';
34374 l_entity_code                := 'RELEASE';
34375 l_event_class_code           := 'RELEASE';
34376 l_event_type_code            := 'RELEASE_ALL';
34377 l_line_definition_owner_code := 'S';
34378 l_line_definition_code       := 'FV_RELEASE_ALL';
34379 --
34380 l_balance_type_code          := 'A';
34381 l_segment                     := NULL;
34382 l_ccid                        := NULL;
34383 l_adr_transaction_coa_id      := NULL;
34384 l_adr_accounting_coa_id       := NULL;
34385 l_adr_flexfield_segment_code  := NULL;
34386 l_adr_flex_value_set_id       := NULL;
34387 l_adr_value_type_code         := NULL;
34388 l_adr_value_combination_id    := NULL;
34389 l_adr_value_segment_code      := NULL;
34390 
34391 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
34392 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
34393 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
34394 l_budgetary_control_flag     := 'Y';
34395 
34396 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34397 l_bflow_applied_to_amt       := NULL; -- 5132302
34398 l_entered_amt_idx            := NULL;          -- 4262811
34399 l_accted_amt_idx             := NULL;          -- 4262811
34400 l_acc_rev_flag               := NULL;          -- 4262811
34401 l_accrual_line_num           := NULL;          -- 4262811
34402 l_tmp_amt                    := NULL;          -- 4262811
34403 --
34404  
34405 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34406     l_balance_type_code <> 'B' THEN
34407 IF (NVL(
34408 xla_ae_sources_pkg.GetSystemSourceChar(
34409    p_source_code           => 'XLA_EVENT_TYPE_CODE'
34410  , p_source_type_code      => 'Y'
34411  , p_source_application_id =>  602
34412 ),'
34413 ') =  'RELEASE_REJECTED' OR 
34414 NVL(
34415 xla_ae_sources_pkg.GetSystemSourceChar(
34416    p_source_code           => 'XLA_EVENT_TYPE_CODE'
34417  , p_source_type_code      => 'Y'
34418  , p_source_application_id =>  602
34419 ),'
34420 ') =  'RELEASE_INV_CANCELLED' OR 
34421 NVL(
34422 xla_ae_sources_pkg.GetSystemSourceChar(
34423    p_source_code           => 'XLA_EVENT_TYPE_CODE'
34424  , p_source_type_code      => 'Y'
34425  , p_source_application_id =>  602
34426 ),'
34427 ') =  'RELEASE_UNRESERVED') AND 
34428 NVL(p_source_13,'
34429 ') =  'B_REQ'
34430  THEN 
34431 
34432    --
34433    XLA_AE_LINES_PKG.SetNewLine;
34434 
34435    p_balance_type_code          := l_balance_type_code;
34436    -- set the flag so later we will know whether the gain loss line needs to be created
34437    
34438    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34439      p_actual_flag :='A';
34440    END IF;
34441 
34442    --
34443    -- bulk performance
34444    --
34445    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34446                                       p_header_num   => 0); -- 4262811
34447    --
34448    -- set accounting line options
34449    --
34450    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34451            p_natural_side_code          => 'D'
34452          , p_gain_or_loss_flag          => 'N'
34453          , p_gl_transfer_mode_code      => 'S'
34454          , p_acct_entry_type_code       => 'A'
34455          , p_switch_side_flag           => 'N'
34456          , p_merge_duplicate_code       => 'N'
34457          );
34458    --
34459    l_acc_rev_natural_side_code := 'C';  -- 4262811
34460    -- 
34461    --
34462    -- set accounting line type info
34463    --
34464    xla_ae_lines_pkg.SetAcctLineType
34465       (p_component_type             => l_component_type
34466       ,p_event_type_code            => l_event_type_code
34467       ,p_line_definition_owner_code => l_line_definition_owner_code
34468       ,p_line_definition_code       => l_line_definition_code
34469       ,p_accounting_line_code       => l_component_code
34470       ,p_accounting_line_type_code  => l_component_type_code
34471       ,p_accounting_line_appl_id    => l_component_appl_id
34472       ,p_amb_context_code           => l_amb_context_code
34473       ,p_entity_code                => l_entity_code
34474       ,p_event_class_code           => l_event_class_code);
34475    --
34476    -- set accounting class
34477    --
34478    xla_ae_lines_pkg.SetAcctClass(
34479            p_accounting_class_code  => 'PURCHASE_ORDER'
34480          , p_ae_header_id           => l_ae_header_id
34481          );
34482 
34483    --
34484    -- set rounding class
34485    --
34486    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34487                       'PURCHASE_ORDER';
34488 
34489    --
34490    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34491    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34492    --
34493    -- bulk performance
34494    --
34495    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34496 
34497    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34498       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34499 
34500    -- 4955764
34501    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34502       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34503 
34504    -- 4458381 Public Sector Enh
34505    
34506    --
34507    -- set accounting attributes for the line type
34508    --
34509    l_entered_amt_idx := 23;
34510    l_accted_amt_idx  := 25;
34511    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34512    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34513    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
34514    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
34515    l_rec_acct_attrs.array_num_value(2)  := 
34516 xla_ae_sources_pkg.GetSystemSourceNum(
34517    p_source_code           => 'XLA_EVENT_APPL_ID'
34518  , p_source_type_code      => 'Y'
34519  , p_source_application_id =>  602
34520 );
34521    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
34522    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
34523    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
34524    l_rec_acct_attrs.array_char_value(4)  := 
34525 xla_ae_sources_pkg.GetSystemSourceChar(
34526    p_source_code           => 'XLA_ENTITY_CODE'
34527  , p_source_type_code      => 'Y'
34528  , p_source_application_id =>  602
34529 );
34530    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
34531    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
34532    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
34533    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
34534    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
34535    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
34536    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
34537    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
34538    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
34539    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
34540    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
34541    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
34542    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
34543    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
34544    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
34545    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
34546    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
34547    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
34548    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
34549    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
34550    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
34551    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
34552    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
34553    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
34554    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
34555    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
34556    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
34557    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
34558    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
34559    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
34560    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
34561    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
34562    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
34563    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
34564    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
34565    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
34566    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
34567    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
34568    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
34569    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
34570    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
34571    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
34572    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
34573    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
34574    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
34575    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
34576    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
34577    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
34578    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
34579    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
34580    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
34581    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
34582    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
34583    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
34584 
34585    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34586    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34587 
34588    ---------------------------------------------------------------------------------------------------------------
34589    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34590    ---------------------------------------------------------------------------------------------------------------
34591    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34592 
34593    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34594    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34595 
34596    IF xla_accounting_cache_pkg.GetValueChar
34597          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34598          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34599    AND l_bflow_method_code = 'PRIOR_ENTRY'
34600 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34601    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34602          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34603        )
34604    THEN
34605          xla_ae_lines_pkg.BflowUpgEntry
34606            (p_business_method_code    => l_bflow_method_code
34607            ,p_business_class_code     => l_bflow_class_code
34608            ,p_balance_type            => l_balance_type_code);
34609    ELSE
34610       NULL;
34611 XLA_AE_LINES_PKG.business_flow_validation(
34612                                 p_business_method_code     => l_bflow_method_code
34613                                ,p_business_class_code      => l_bflow_class_code
34614                                ,p_inherit_description_flag => l_inherit_desc_flag);
34615    END IF;
34616 
34617    --
34618    -- call analytical criteria
34619    --
34620    -- Inherited Analytical Criteria for business flow method of Prior Entry.
34621    --
34622    -- call description
34623    --
34624    -- No description or it is inherited.
34625    --
34626    -- call ADRs
34627    -- Bug 4922099
34628    --
34629    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34630         (NVL(l_actual_upg_option, 'N') = 'O') OR
34631         (NVL(l_enc_upg_option, 'N') = 'O')
34632       )
34633    THEN
34634    NULL;
34635    --
34636    --
34637    
34638    --
34639    --
34640    END IF;
34641    --
34642    -- Bug 4922099
34643    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34644           (NVL(l_enc_upg_option, 'N') = 'O')
34645         ) AND
34646         (l_bflow_method_code = 'PRIOR_ENTRY')
34647       )
34648    THEN
34649       IF
34650       --
34651       1 = 1
34652       --
34653       THEN
34654       xla_accounting_err_pkg.build_message
34655                                     (p_appli_s_name            => 'XLA'
34656                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34657                                     ,p_token_1                 => 'LINE_NUMBER'
34658                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34659                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34660                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34661                                                                              l_component_type
34662                                                                             ,l_component_code
34663                                                                             ,l_component_type_code
34664                                                                             ,l_component_appl_id
34665                                                                             ,l_amb_context_code
34666                                                                             ,l_entity_code
34667                                                                             ,l_event_class_code
34668                                                                            )
34669                                     ,p_token_3                 => 'OWNER'
34670                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34671                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34672                                                                           ,p_lookup_code    => l_component_type_code
34673                                                                          )
34674                                     ,p_token_4                 => 'PRODUCT_NAME'
34675                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34676                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34677                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34678                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34679                                     ,p_ae_header_id            =>  NULL
34680                                        );
34681 
34682         IF (C_LEVEL_ERROR>= g_log_level) THEN
34683                  trace
34684                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34685                       ,p_level    => C_LEVEL_ERROR
34686                       ,p_module   => l_log_module);
34687         END IF;
34688       END IF;
34689    END IF;
34690    --
34691    --
34692    ------------------------------------------------------------------------------------------------
34693    -- 4219869 Business Flow
34694    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34695    -- Prior Entry.  Currently, the following code is always generated.
34696    ------------------------------------------------------------------------------------------------
34697    -- No ValidateCurrentLine for business flow method of Prior Entry
34698 
34699    ------------------------------------------------------------------------------------
34700    -- 4219869 Business Flow
34701    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34702    ------------------------------------------------------------------------------------
34703    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34704 
34705    ----------------------------------------------------------------------------------
34706    -- 4219869 Business Flow
34707    -- Update journal entry status -- Need to generate this within IF <condition>
34708    ----------------------------------------------------------------------------------
34709    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34710          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34711          ,p_balance_type_code => l_balance_type_code
34712          );
34713 
34714    -------------------------------------------------------------------------------------------
34715    -- 4262811 - Generate the Accrual Reversal lines
34716    -------------------------------------------------------------------------------------------
34717    BEGIN
34718       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34719                               (g_array_event(p_event_id).array_value_num('header_index'));
34720       IF l_acc_rev_flag IS NULL THEN
34721          l_acc_rev_flag := 'N';
34722       END IF;
34723    EXCEPTION
34724       WHEN OTHERS THEN
34725          l_acc_rev_flag := 'N';
34726    END;
34727    --
34728    IF (l_acc_rev_flag = 'Y') THEN
34729 
34730        -- 4645092  ------------------------------------------------------------------------------
34731        -- To allow MPA report to determine if it should generate report process
34732        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34733        ------------------------------------------------------------------------------------------
34734 
34735        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34736        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34737 
34738        --
34739        -- Update the line information that should be overwritten
34740        --
34741        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34742                                          p_header_num   => 1);
34743        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34744 
34745        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34746 
34747        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34748           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34749        END IF;
34750 
34751       --
34752       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34753       --
34754       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34755           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34756       ELSE
34757           ---------------------------------------------------------------------------------------------------
34758           -- 4262811a Switch Sign
34759           ---------------------------------------------------------------------------------------------------
34760           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34761           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34762                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34763           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34764                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34765           -- 5132302
34766           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34767                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34768 
34769       END IF;
34770 
34771       -- 4955764
34772       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34773       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34774 
34775 
34776       XLA_AE_LINES_PKG.ValidateCurrentLine;
34777       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34778 
34779       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34780                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34781                ,p_balance_type_code => l_balance_type_code);
34782 
34783    END IF;
34784 
34785    -----------------------------------------------------------------------------------------
34786    -- 4262811 Multiperiod Accounting
34787    -----------------------------------------------------------------------------------------
34788      -- No MPA option is assigned.
34789 
34790 
34791 END IF;
34792 END IF;
34793 --
34794 
34795 --
34796 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34797    trace
34798       (p_msg      => 'END of AcctLineType_65'
34799       ,p_level    => C_LEVEL_PROCEDURE
34800       ,p_module   => l_log_module);
34801 END IF;
34802 --
34803 EXCEPTION
34804   WHEN xla_exceptions_pkg.application_exception THEN
34805       RAISE;
34806   WHEN OTHERS THEN
34807        xla_exceptions_pkg.raise_message
34808            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_65');
34809 END AcctLineType_65;
34810 --
34811 
34812 ---------------------------------------
34813 --
34814 -- PRIVATE FUNCTION
34815 --         AcctLineType_66
34816 --
34817 ---------------------------------------
34818 PROCEDURE AcctLineType_66 (
34819   p_application_id        IN NUMBER
34820  ,p_event_id              IN NUMBER
34821  ,p_calculate_acctd_flag  IN VARCHAR2
34822  ,p_calculate_g_l_flag    IN VARCHAR2
34823  ,p_actual_flag           IN OUT VARCHAR2
34824  ,p_balance_type_code     OUT VARCHAR2
34825  ,p_gain_or_loss_ref      OUT VARCHAR2
34826  
34827 --Journal entry Line Description
34828  , p_source_3            IN VARCHAR2
34829 --Federal Fund Category
34830  , p_source_7            IN VARCHAR2
34831 --Federal Fund Expired Status
34832  , p_source_8            IN VARCHAR2
34833 --Budget Account
34834  , p_source_9            IN NUMBER
34835 --Main Or Backing Code
34836  , p_source_13            IN VARCHAR2
34837 --Accounting Reversal Flag
34838  , p_source_15            IN VARCHAR2
34839 --Distribution Link Type
34840  , p_source_17            IN VARCHAR2
34841 --PO Distribution Identifier
34842  , p_source_19            IN NUMBER
34843 --Applied To Application Identifier
34844  , p_source_21            IN NUMBER
34845 --Applied To Distribution Link Type
34846  , p_source_22            IN VARCHAR2
34847 --Applied To Entity Code
34848  , p_source_23            IN VARCHAR2
34849 --Applied To Distribution Identifier 1
34850  , p_source_24            IN NUMBER
34851 --Applied To Header Identifier 1
34852  , p_source_25            IN NUMBER
34853 --Entered Amount
34854  , p_source_26            IN NUMBER
34855 --Currency Code
34856  , p_source_27            IN VARCHAR2
34857 --Accounted Amount
34858  , p_source_28            IN NUMBER
34859 --PO Encumbrance Upgrade Option
34860  , p_source_29            IN VARCHAR2
34861 --JFMIP Reference
34862  , p_source_31            IN VARCHAR2
34863 --PO Upgrade Encumbrance Type Identifier
34864  , p_source_32            IN NUMBER
34865 --Allocated to Main Document Distribution Type
34866  , p_source_33            IN VARCHAR2
34867 --Allocated to Main Document Distribution Identifier
34868  , p_source_34            IN NUMBER
34869 --Currency Conversion Date
34870  , p_source_35            IN DATE
34871 --Currency Conversion Rate
34872  , p_source_36            IN NUMBER
34873 --Currency Conversion Type
34874  , p_source_37            IN VARCHAR2
34875 --PO Release Identifier
34876  , p_source_41            IN NUMBER
34877 )
34878 IS
34879 
34880 l_component_type              VARCHAR2(80);
34881 l_component_code              VARCHAR2(30);
34882 l_component_type_code         VARCHAR2(1);
34883 l_component_appl_id           INTEGER;
34884 l_amb_context_code            VARCHAR2(30);
34885 l_entity_code                 VARCHAR2(30);
34886 l_event_class_code            VARCHAR2(30);
34887 l_ae_header_id                NUMBER;
34888 l_event_type_code             VARCHAR2(30);
34889 l_line_definition_code        VARCHAR2(30);
34890 l_line_definition_owner_code  VARCHAR2(1);
34891 --
34892 -- adr variables
34893 l_segment                     VARCHAR2(30);
34894 l_ccid                        NUMBER;
34895 l_adr_transaction_coa_id      NUMBER;
34896 l_adr_accounting_coa_id       NUMBER;
34897 l_adr_flexfield_segment_code  VARCHAR2(30);
34898 l_adr_flex_value_set_id       NUMBER;
34899 l_adr_value_type_code         VARCHAR2(30);
34900 l_adr_value_combination_id    NUMBER;
34901 l_adr_value_segment_code      VARCHAR2(30);
34902 
34903 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34904 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34905 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34906 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34907 
34908 -- 4262811 Variables ------------------------------------------------------------------------------------------
34909 l_entered_amt_idx             NUMBER;
34910 l_accted_amt_idx              NUMBER;
34911 l_acc_rev_flag                VARCHAR2(1);
34912 l_accrual_line_num            NUMBER;
34913 l_tmp_amt                     NUMBER;
34914 l_acc_rev_natural_side_code   VARCHAR2(1);
34915 
34916 l_num_entries                 NUMBER;
34917 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34918 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34919 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34920 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34921 l_recog_line_1                NUMBER;
34922 l_recog_line_2                NUMBER;
34923 
34924 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34925 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34926 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34927 
34928 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34929 
34930 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34931 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34932 
34933 ---------------------------------------------------------------------------------------------------------------
34934 
34935 
34936 --
34937 -- bulk performance
34938 --
34939 l_balance_type_code           VARCHAR2(1);
34940 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34941 l_log_module                  VARCHAR2(240);
34942 
34943 --
34944 -- Upgrade strategy
34945 --
34946 l_actual_upg_option           VARCHAR2(1);
34947 l_enc_upg_option           VARCHAR2(1);
34948 
34949 --
34950 BEGIN
34951 --
34952 IF g_log_enabled THEN
34953       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
34954 END IF;
34955 --
34956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34957 
34958       trace
34959          (p_msg      => 'BEGIN of AcctLineType_66'
34960          ,p_level    => C_LEVEL_PROCEDURE
34961          ,p_module   => l_log_module);
34962 
34963 END IF;
34964 --
34965 l_component_type             := 'AMB_JLT';
34966 l_component_code             := 'FV_REL_RELIEVE_PO_PA_CR';
34967 l_component_type_code        := 'S';
34968 l_component_appl_id          :=  201;
34969 l_amb_context_code           := 'DEFAULT';
34970 l_entity_code                := 'RELEASE';
34971 l_event_class_code           := 'RELEASE';
34972 l_event_type_code            := 'RELEASE_ALL';
34973 l_line_definition_owner_code := 'S';
34974 l_line_definition_code       := 'FV_RELEASE_ALL';
34975 --
34976 l_balance_type_code          := 'A';
34977 l_segment                     := NULL;
34978 l_ccid                        := NULL;
34979 l_adr_transaction_coa_id      := NULL;
34980 l_adr_accounting_coa_id       := NULL;
34981 l_adr_flexfield_segment_code  := NULL;
34982 l_adr_flex_value_set_id       := NULL;
34983 l_adr_value_type_code         := NULL;
34984 l_adr_value_combination_id    := NULL;
34985 l_adr_value_segment_code      := NULL;
34986 
34987 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34988 l_bflow_class_code           := '';    -- 4219869 Business Flow
34989 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34990 l_budgetary_control_flag     := 'Y';
34991 
34992 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34993 l_bflow_applied_to_amt       := NULL; -- 5132302
34994 l_entered_amt_idx            := NULL;          -- 4262811
34995 l_accted_amt_idx             := NULL;          -- 4262811
34996 l_acc_rev_flag               := NULL;          -- 4262811
34997 l_accrual_line_num           := NULL;          -- 4262811
34998 l_tmp_amt                    := NULL;          -- 4262811
34999 --
35000  
35001 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35002     l_balance_type_code <> 'B' THEN
35003 IF NVL(
35004 xla_ae_sources_pkg.GetSystemSourceChar(
35005    p_source_code           => 'XLA_EVENT_TYPE_CODE'
35006  , p_source_type_code      => 'Y'
35007  , p_source_application_id =>  602
35008 ),'
35009 ') =  'RELEASE_RESERVED' AND 
35010 (NVL(p_source_13,'
35011 ') =  'B_PO' OR 
35012 NVL(p_source_13,'
35013 ') =  'B_PA')
35014  THEN 
35015 
35016    --
35017    XLA_AE_LINES_PKG.SetNewLine;
35018 
35019    p_balance_type_code          := l_balance_type_code;
35020    -- set the flag so later we will know whether the gain loss line needs to be created
35021    
35022    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35023      p_actual_flag :='A';
35024    END IF;
35025 
35026    --
35027    -- bulk performance
35028    --
35029    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35030                                       p_header_num   => 0); -- 4262811
35031    --
35032    -- set accounting line options
35033    --
35034    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35035            p_natural_side_code          => 'C'
35036          , p_gain_or_loss_flag          => 'N'
35037          , p_gl_transfer_mode_code      => 'S'
35038          , p_acct_entry_type_code       => 'A'
35039          , p_switch_side_flag           => 'N'
35040          , p_merge_duplicate_code       => 'N'
35041          );
35042    --
35043    l_acc_rev_natural_side_code := 'D';  -- 4262811
35044    -- 
35045    --
35046    -- set accounting line type info
35047    --
35048    xla_ae_lines_pkg.SetAcctLineType
35049       (p_component_type             => l_component_type
35050       ,p_event_type_code            => l_event_type_code
35051       ,p_line_definition_owner_code => l_line_definition_owner_code
35052       ,p_line_definition_code       => l_line_definition_code
35053       ,p_accounting_line_code       => l_component_code
35054       ,p_accounting_line_type_code  => l_component_type_code
35055       ,p_accounting_line_appl_id    => l_component_appl_id
35056       ,p_amb_context_code           => l_amb_context_code
35057       ,p_entity_code                => l_entity_code
35058       ,p_event_class_code           => l_event_class_code);
35059    --
35060    -- set accounting class
35061    --
35062    xla_ae_lines_pkg.SetAcctClass(
35063            p_accounting_class_code  => 'PURCHASE_ORDER'
35064          , p_ae_header_id           => l_ae_header_id
35065          );
35066 
35067    --
35068    -- set rounding class
35069    --
35070    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35071                       'PURCHASE_ORDER';
35072 
35073    --
35074    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35075    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35076    --
35077    -- bulk performance
35078    --
35079    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35080 
35081    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35082       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35083 
35084    -- 4955764
35085    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35086       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35087 
35088    -- 4458381 Public Sector Enh
35089    
35090    --
35091    -- set accounting attributes for the line type
35092    --
35093    l_entered_amt_idx := 23;
35094    l_accted_amt_idx  := 28;
35095    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35096    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35097    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
35098    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
35099    l_rec_acct_attrs.array_num_value(2)  := 
35100 xla_ae_sources_pkg.GetSystemSourceNum(
35101    p_source_code           => 'XLA_EVENT_APPL_ID'
35102  , p_source_type_code      => 'Y'
35103  , p_source_application_id =>  602
35104 );
35105    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
35106    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
35107    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
35108    l_rec_acct_attrs.array_char_value(4)  := 
35109 xla_ae_sources_pkg.GetSystemSourceChar(
35110    p_source_code           => 'XLA_ENTITY_CODE'
35111  , p_source_type_code      => 'Y'
35112  , p_source_application_id =>  602
35113 );
35114    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
35115    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
35116    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
35117    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
35118    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
35119    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
35120    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35121    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
35122    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
35123    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
35124    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
35125    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
35126    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35127    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
35128    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
35129    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
35130    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
35131    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
35132    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
35133    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
35134    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
35135    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
35136    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
35137    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
35138    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
35139    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
35140    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
35141    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
35142    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
35143    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
35144    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
35145    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
35146    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
35147    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
35148    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
35149    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
35150    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
35151    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
35152    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
35153    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
35154    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
35155    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
35156    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
35157    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
35158    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
35159    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
35160    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
35161    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
35162    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
35163    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
35164    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
35165    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
35166    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
35167    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
35168    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
35169    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_41);
35170    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
35171    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
35172    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
35173    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
35174 
35175    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35176    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35177 
35178    ---------------------------------------------------------------------------------------------------------------
35179    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35180    ---------------------------------------------------------------------------------------------------------------
35181    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35182 
35183    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35184    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35185 
35186    IF xla_accounting_cache_pkg.GetValueChar
35187          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35188          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35189    AND l_bflow_method_code = 'PRIOR_ENTRY'
35190 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35191    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35192          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35193        )
35194    THEN
35195          xla_ae_lines_pkg.BflowUpgEntry
35196            (p_business_method_code    => l_bflow_method_code
35197            ,p_business_class_code     => l_bflow_class_code
35198            ,p_balance_type            => l_balance_type_code);
35199    ELSE
35200       NULL;
35201 -- No business flow processing for business flow method of NONE.
35202    END IF;
35203 
35204    --
35205    -- call analytical criteria
35206    --
35207    
35208    --
35209    -- call description
35210    --
35211    
35212 xla_ae_lines_pkg.SetLineDescription(
35213    p_ae_header_id => l_ae_header_id
35214   ,p_description  => Description_2 (
35215      p_application_id         => p_application_id
35216    , p_ae_header_id           => l_ae_header_id 
35217 , p_source_3 => p_source_3
35218    )
35219 );
35220 
35221 
35222    --
35223    -- call ADRs
35224    -- Bug 4922099
35225    --
35226    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35227         (NVL(l_actual_upg_option, 'N') = 'O') OR
35228         (NVL(l_enc_upg_option, 'N') = 'O')
35229       )
35230    THEN
35231    NULL;
35232    --
35233    --
35234    
35235   l_ccid := AcctDerRule_9(
35236            p_application_id           => p_application_id
35237          , p_ae_header_id             => l_ae_header_id 
35238 , p_source_9 => p_source_9
35239          , x_transaction_coa_id       => l_adr_transaction_coa_id
35240          , x_accounting_coa_id        => l_adr_accounting_coa_id
35241          , x_value_type_code          => l_adr_value_type_code
35242          , p_side                     => 'NA'
35243    );
35244 
35245    xla_ae_lines_pkg.set_ccid(
35246     p_code_combination_id          => l_ccid
35247   , p_value_type_code              => l_adr_value_type_code
35248   , p_transaction_coa_id           => l_adr_transaction_coa_id
35249   , p_accounting_coa_id            => l_adr_accounting_coa_id
35250   , p_adr_code                     => 'FV_ACCOUNT_RULE'
35251   , p_adr_type_code                => 'S'
35252   , p_component_type               => l_component_type
35253   , p_component_code               => l_component_code
35254   , p_component_type_code          => l_component_type_code
35255   , p_component_appl_id            => l_component_appl_id
35256   , p_amb_context_code             => l_amb_context_code
35257   , p_side                         => 'NA'
35258   );
35259 
35260 
35261    l_segment := AcctDerRule_5(
35262            p_application_id           => p_application_id
35263          , p_ae_header_id             => l_ae_header_id 
35264 , p_source_7 => p_source_7
35265 , p_source_8 => p_source_8
35266          , x_transaction_coa_id       => l_adr_transaction_coa_id
35267          , x_accounting_coa_id        => l_adr_accounting_coa_id
35268          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
35269          , x_flex_value_set_id        => l_adr_flex_value_set_id
35270          , x_value_type_code          => l_adr_value_type_code
35271          , x_value_combination_id     => l_adr_value_combination_id
35272          , x_value_segment_code       => l_adr_value_segment_code
35273          , p_side                     => 'NA'
35274          , p_override_seg_flag        => 'Y'
35275    );
35276 
35277    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
35278 
35279       xla_ae_lines_pkg.set_segment(
35280           p_to_segment_code         => 'GL_ACCOUNT'
35281         , p_segment_value           => l_segment
35282         , p_from_segment_code       => l_adr_value_segment_code
35283         , p_from_combination_id     => l_adr_value_combination_id
35284         , p_value_type_code         => l_adr_value_type_code
35285         , p_transaction_coa_id      => l_adr_transaction_coa_id
35286         , p_accounting_coa_id       => l_adr_accounting_coa_id
35287         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
35288         , p_flex_value_set_id       => l_adr_flex_value_set_id
35289         , p_adr_code                => 'FV_46X002'
35290         , p_adr_type_code           => 'S'
35291         , p_component_type          => l_component_type
35292         , p_component_code          => l_component_code
35293         , p_component_type_code     => l_component_type_code
35294         , p_component_appl_id       => l_component_appl_id
35295         , p_amb_context_code        => l_amb_context_code
35296         , p_entity_code             => 'RELEASE'
35297         , p_event_class_code        => 'RELEASE'
35298         , p_side                    => 'NA'
35299         );
35300 
35301   END IF;
35302 
35303    --
35304    --
35305    END IF;
35306    --
35307    -- Bug 4922099
35308    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35309           (NVL(l_enc_upg_option, 'N') = 'O')
35310         ) AND
35311         (l_bflow_method_code = 'PRIOR_ENTRY')
35312       )
35313    THEN
35314       IF
35315       --
35316       1 = 2
35317       --
35318       THEN
35319       xla_accounting_err_pkg.build_message
35320                                     (p_appli_s_name            => 'XLA'
35321                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35322                                     ,p_token_1                 => 'LINE_NUMBER'
35323                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35324                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35325                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35326                                                                              l_component_type
35327                                                                             ,l_component_code
35328                                                                             ,l_component_type_code
35329                                                                             ,l_component_appl_id
35330                                                                             ,l_amb_context_code
35331                                                                             ,l_entity_code
35332                                                                             ,l_event_class_code
35333                                                                            )
35334                                     ,p_token_3                 => 'OWNER'
35335                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35336                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35337                                                                           ,p_lookup_code    => l_component_type_code
35338                                                                          )
35339                                     ,p_token_4                 => 'PRODUCT_NAME'
35340                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35341                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35342                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35343                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35344                                     ,p_ae_header_id            =>  NULL
35345                                        );
35346 
35347         IF (C_LEVEL_ERROR>= g_log_level) THEN
35348                  trace
35349                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35350                       ,p_level    => C_LEVEL_ERROR
35351                       ,p_module   => l_log_module);
35352         END IF;
35353       END IF;
35354    END IF;
35355    --
35356    --
35357    ------------------------------------------------------------------------------------------------
35358    -- 4219869 Business Flow
35359    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35360    -- Prior Entry.  Currently, the following code is always generated.
35361    ------------------------------------------------------------------------------------------------
35362    XLA_AE_LINES_PKG.ValidateCurrentLine;
35363 
35364    ------------------------------------------------------------------------------------
35365    -- 4219869 Business Flow
35366    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35367    ------------------------------------------------------------------------------------
35368    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35369 
35370    ----------------------------------------------------------------------------------
35371    -- 4219869 Business Flow
35372    -- Update journal entry status -- Need to generate this within IF <condition>
35373    ----------------------------------------------------------------------------------
35374    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35375          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35376          ,p_balance_type_code => l_balance_type_code
35377          );
35378 
35379    -------------------------------------------------------------------------------------------
35380    -- 4262811 - Generate the Accrual Reversal lines
35381    -------------------------------------------------------------------------------------------
35382    BEGIN
35383       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35384                               (g_array_event(p_event_id).array_value_num('header_index'));
35385       IF l_acc_rev_flag IS NULL THEN
35386          l_acc_rev_flag := 'N';
35387       END IF;
35388    EXCEPTION
35389       WHEN OTHERS THEN
35390          l_acc_rev_flag := 'N';
35391    END;
35392    --
35393    IF (l_acc_rev_flag = 'Y') THEN
35394 
35395        -- 4645092  ------------------------------------------------------------------------------
35396        -- To allow MPA report to determine if it should generate report process
35397        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35398        ------------------------------------------------------------------------------------------
35399 
35400        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35401        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35402 
35403        --
35404        -- Update the line information that should be overwritten
35405        --
35406        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35407                                          p_header_num   => 1);
35408        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35409 
35410        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35411 
35412        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35413           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35414        END IF;
35415 
35416       --
35417       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35418       --
35419       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35420           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35421       ELSE
35422           ---------------------------------------------------------------------------------------------------
35423           -- 4262811a Switch Sign
35424           ---------------------------------------------------------------------------------------------------
35425           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35426           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35427                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35428           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35429                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35430           -- 5132302
35431           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35432                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35433 
35434       END IF;
35435 
35436       -- 4955764
35437       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35438       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35439 
35440 
35441       XLA_AE_LINES_PKG.ValidateCurrentLine;
35442       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35443 
35444       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35445                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35446                ,p_balance_type_code => l_balance_type_code);
35447 
35448    END IF;
35449 
35450    -----------------------------------------------------------------------------------------
35451    -- 4262811 Multiperiod Accounting
35452    -----------------------------------------------------------------------------------------
35453      -- No MPA option is assigned.
35454 
35455 
35456 END IF;
35457 END IF;
35458 --
35459 
35460 --
35461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35462    trace
35463       (p_msg      => 'END of AcctLineType_66'
35464       ,p_level    => C_LEVEL_PROCEDURE
35465       ,p_module   => l_log_module);
35466 END IF;
35467 --
35468 EXCEPTION
35469   WHEN xla_exceptions_pkg.application_exception THEN
35470       RAISE;
35471   WHEN OTHERS THEN
35472        xla_exceptions_pkg.raise_message
35473            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_66');
35474 END AcctLineType_66;
35475 --
35476 
35477 ---------------------------------------
35478 --
35479 -- PRIVATE FUNCTION
35480 --         AcctLineType_67
35481 --
35482 ---------------------------------------
35483 PROCEDURE AcctLineType_67 (
35484   p_application_id        IN NUMBER
35485  ,p_event_id              IN NUMBER
35486  ,p_calculate_acctd_flag  IN VARCHAR2
35487  ,p_calculate_g_l_flag    IN VARCHAR2
35488  ,p_actual_flag           IN OUT VARCHAR2
35489  ,p_balance_type_code     OUT VARCHAR2
35490  ,p_gain_or_loss_ref      OUT VARCHAR2
35491  
35492 --Journal entry Line Description
35493  , p_source_3            IN VARCHAR2
35494 --Budget Account
35495  , p_source_9            IN NUMBER
35496 --Main Or Backing Code
35497  , p_source_13            IN VARCHAR2
35498 --Accounting Reversal Flag
35499  , p_source_15            IN VARCHAR2
35500 --Distribution Link Type
35501  , p_source_17            IN VARCHAR2
35502 --PO Distribution Identifier
35503  , p_source_19            IN NUMBER
35504 --Applied To Application Identifier
35505  , p_source_21            IN NUMBER
35506 --Applied To Distribution Link Type
35507  , p_source_22            IN VARCHAR2
35508 --Applied To Entity Code
35509  , p_source_23            IN VARCHAR2
35510 --Applied To Distribution Identifier 1
35511  , p_source_24            IN NUMBER
35512 --Applied To Header Identifier 1
35513  , p_source_25            IN NUMBER
35514 --Entered Amount
35515  , p_source_26            IN NUMBER
35516 --Currency Code
35517  , p_source_27            IN VARCHAR2
35518 --Accounted Amount
35519  , p_source_28            IN NUMBER
35520 --PO Encumbrance Upgrade Option
35521  , p_source_29            IN VARCHAR2
35522 --JFMIP Reference
35523  , p_source_31            IN VARCHAR2
35524 --PO Upgrade Encumbrance Type Identifier
35525  , p_source_32            IN NUMBER
35526 --Allocated to Main Document Distribution Type
35527  , p_source_33            IN VARCHAR2
35528 --Allocated to Main Document Distribution Identifier
35529  , p_source_34            IN NUMBER
35530 --Currency Conversion Date
35531  , p_source_35            IN DATE
35532 --Currency Conversion Rate
35533  , p_source_36            IN NUMBER
35534 --Currency Conversion Type
35535  , p_source_37            IN VARCHAR2
35536 --PO Release Identifier
35537  , p_source_41            IN NUMBER
35538 )
35539 IS
35540 
35541 l_component_type              VARCHAR2(80);
35542 l_component_code              VARCHAR2(30);
35543 l_component_type_code         VARCHAR2(1);
35544 l_component_appl_id           INTEGER;
35545 l_amb_context_code            VARCHAR2(30);
35546 l_entity_code                 VARCHAR2(30);
35547 l_event_class_code            VARCHAR2(30);
35548 l_ae_header_id                NUMBER;
35549 l_event_type_code             VARCHAR2(30);
35550 l_line_definition_code        VARCHAR2(30);
35551 l_line_definition_owner_code  VARCHAR2(1);
35552 --
35553 -- adr variables
35554 l_segment                     VARCHAR2(30);
35555 l_ccid                        NUMBER;
35556 l_adr_transaction_coa_id      NUMBER;
35557 l_adr_accounting_coa_id       NUMBER;
35558 l_adr_flexfield_segment_code  VARCHAR2(30);
35559 l_adr_flex_value_set_id       NUMBER;
35560 l_adr_value_type_code         VARCHAR2(30);
35561 l_adr_value_combination_id    NUMBER;
35562 l_adr_value_segment_code      VARCHAR2(30);
35563 
35564 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35565 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35566 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35567 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35568 
35569 -- 4262811 Variables ------------------------------------------------------------------------------------------
35570 l_entered_amt_idx             NUMBER;
35571 l_accted_amt_idx              NUMBER;
35572 l_acc_rev_flag                VARCHAR2(1);
35573 l_accrual_line_num            NUMBER;
35574 l_tmp_amt                     NUMBER;
35575 l_acc_rev_natural_side_code   VARCHAR2(1);
35576 
35577 l_num_entries                 NUMBER;
35578 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35579 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35580 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35581 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35582 l_recog_line_1                NUMBER;
35583 l_recog_line_2                NUMBER;
35584 
35585 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35586 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35587 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35588 
35589 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35590 
35591 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35592 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35593 
35594 ---------------------------------------------------------------------------------------------------------------
35595 
35596 
35597 --
35598 -- bulk performance
35599 --
35600 l_balance_type_code           VARCHAR2(1);
35601 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35602 l_log_module                  VARCHAR2(240);
35603 
35604 --
35605 -- Upgrade strategy
35606 --
35607 l_actual_upg_option           VARCHAR2(1);
35608 l_enc_upg_option           VARCHAR2(1);
35609 
35610 --
35611 BEGIN
35612 --
35613 IF g_log_enabled THEN
35614       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
35615 END IF;
35616 --
35617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35618 
35619       trace
35620          (p_msg      => 'BEGIN of AcctLineType_67'
35621          ,p_level    => C_LEVEL_PROCEDURE
35622          ,p_module   => l_log_module);
35623 
35624 END IF;
35625 --
35626 l_component_type             := 'AMB_JLT';
35627 l_component_code             := 'FV_REL_RELIEVE_PO_PA_DR';
35628 l_component_type_code        := 'S';
35629 l_component_appl_id          :=  201;
35630 l_amb_context_code           := 'DEFAULT';
35631 l_entity_code                := 'RELEASE';
35632 l_event_class_code           := 'RELEASE';
35633 l_event_type_code            := 'RELEASE_ALL';
35634 l_line_definition_owner_code := 'S';
35635 l_line_definition_code       := 'FV_RELEASE_ALL';
35636 --
35637 l_balance_type_code          := 'A';
35638 l_segment                     := NULL;
35639 l_ccid                        := NULL;
35640 l_adr_transaction_coa_id      := NULL;
35641 l_adr_accounting_coa_id       := NULL;
35642 l_adr_flexfield_segment_code  := NULL;
35643 l_adr_flex_value_set_id       := NULL;
35644 l_adr_value_type_code         := NULL;
35645 l_adr_value_combination_id    := NULL;
35646 l_adr_value_segment_code      := NULL;
35647 
35648 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35649 l_bflow_class_code           := '';    -- 4219869 Business Flow
35650 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35651 l_budgetary_control_flag     := 'Y';
35652 
35653 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35654 l_bflow_applied_to_amt       := NULL; -- 5132302
35655 l_entered_amt_idx            := NULL;          -- 4262811
35656 l_accted_amt_idx             := NULL;          -- 4262811
35657 l_acc_rev_flag               := NULL;          -- 4262811
35658 l_accrual_line_num           := NULL;          -- 4262811
35659 l_tmp_amt                    := NULL;          -- 4262811
35660 --
35661  
35662 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35663     l_balance_type_code <> 'B' THEN
35664 IF NVL(
35665 xla_ae_sources_pkg.GetSystemSourceChar(
35666    p_source_code           => 'XLA_EVENT_TYPE_CODE'
35667  , p_source_type_code      => 'Y'
35668  , p_source_application_id =>  602
35669 ),'
35670 ') =  'RELEASE_RESERVED' AND 
35671 (NVL(p_source_13,'
35672 ') =  'B_PO' OR 
35673 NVL(p_source_13,'
35674 ') =  'B_PA')
35675  THEN 
35676 
35677    --
35678    XLA_AE_LINES_PKG.SetNewLine;
35679 
35680    p_balance_type_code          := l_balance_type_code;
35681    -- set the flag so later we will know whether the gain loss line needs to be created
35682    
35683    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35684      p_actual_flag :='A';
35685    END IF;
35686 
35687    --
35688    -- bulk performance
35689    --
35690    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35691                                       p_header_num   => 0); -- 4262811
35692    --
35693    -- set accounting line options
35694    --
35695    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35696            p_natural_side_code          => 'D'
35697          , p_gain_or_loss_flag          => 'N'
35698          , p_gl_transfer_mode_code      => 'S'
35699          , p_acct_entry_type_code       => 'A'
35700          , p_switch_side_flag           => 'N'
35701          , p_merge_duplicate_code       => 'N'
35702          );
35703    --
35704    l_acc_rev_natural_side_code := 'C';  -- 4262811
35705    -- 
35706    --
35707    -- set accounting line type info
35708    --
35709    xla_ae_lines_pkg.SetAcctLineType
35710       (p_component_type             => l_component_type
35711       ,p_event_type_code            => l_event_type_code
35712       ,p_line_definition_owner_code => l_line_definition_owner_code
35713       ,p_line_definition_code       => l_line_definition_code
35714       ,p_accounting_line_code       => l_component_code
35715       ,p_accounting_line_type_code  => l_component_type_code
35716       ,p_accounting_line_appl_id    => l_component_appl_id
35717       ,p_amb_context_code           => l_amb_context_code
35718       ,p_entity_code                => l_entity_code
35719       ,p_event_class_code           => l_event_class_code);
35720    --
35721    -- set accounting class
35722    --
35723    xla_ae_lines_pkg.SetAcctClass(
35724            p_accounting_class_code  => 'PURCHASE_ORDER'
35725          , p_ae_header_id           => l_ae_header_id
35726          );
35727 
35728    --
35729    -- set rounding class
35730    --
35731    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35732                       'PURCHASE_ORDER';
35733 
35734    --
35735    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35736    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35737    --
35738    -- bulk performance
35739    --
35740    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35741 
35742    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35743       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35744 
35745    -- 4955764
35746    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35747       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35748 
35749    -- 4458381 Public Sector Enh
35750    
35751    --
35752    -- set accounting attributes for the line type
35753    --
35754    l_entered_amt_idx := 23;
35755    l_accted_amt_idx  := 28;
35756    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35757    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35758    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
35759    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
35760    l_rec_acct_attrs.array_num_value(2)  := 
35761 xla_ae_sources_pkg.GetSystemSourceNum(
35762    p_source_code           => 'XLA_EVENT_APPL_ID'
35763  , p_source_type_code      => 'Y'
35764  , p_source_application_id =>  602
35765 );
35766    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
35767    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
35768    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
35769    l_rec_acct_attrs.array_char_value(4)  := 
35770 xla_ae_sources_pkg.GetSystemSourceChar(
35771    p_source_code           => 'XLA_ENTITY_CODE'
35772  , p_source_type_code      => 'Y'
35773  , p_source_application_id =>  602
35774 );
35775    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
35776    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
35777    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
35778    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
35779    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
35780    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
35781    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35782    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
35783    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
35784    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
35785    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
35786    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
35787    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35788    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
35789    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
35790    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
35791    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
35792    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
35793    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
35794    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
35795    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
35796    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
35797    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
35798    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
35799    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
35800    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
35801    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
35802    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
35803    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
35804    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
35805    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
35806    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
35807    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
35808    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
35809    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
35810    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
35811    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
35812    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
35813    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
35814    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
35815    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
35816    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
35817    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
35818    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
35819    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
35820    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
35821    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
35822    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
35823    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
35824    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
35825    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
35826    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
35827    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
35828    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
35829    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
35830    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_41);
35831    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
35832    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
35833    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
35834    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
35835 
35836    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35837    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35838 
35839    ---------------------------------------------------------------------------------------------------------------
35840    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35841    ---------------------------------------------------------------------------------------------------------------
35842    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35843 
35844    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35845    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35846 
35847    IF xla_accounting_cache_pkg.GetValueChar
35848          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35849          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35850    AND l_bflow_method_code = 'PRIOR_ENTRY'
35851 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35852    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35853          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35854        )
35855    THEN
35856          xla_ae_lines_pkg.BflowUpgEntry
35857            (p_business_method_code    => l_bflow_method_code
35858            ,p_business_class_code     => l_bflow_class_code
35859            ,p_balance_type            => l_balance_type_code);
35860    ELSE
35861       NULL;
35862 -- No business flow processing for business flow method of NONE.
35863    END IF;
35864 
35865    --
35866    -- call analytical criteria
35867    --
35868    
35869    --
35870    -- call description
35871    --
35872    
35873 xla_ae_lines_pkg.SetLineDescription(
35874    p_ae_header_id => l_ae_header_id
35875   ,p_description  => Description_2 (
35876      p_application_id         => p_application_id
35877    , p_ae_header_id           => l_ae_header_id 
35878 , p_source_3 => p_source_3
35879    )
35880 );
35881 
35882 
35883    --
35884    -- call ADRs
35885    -- Bug 4922099
35886    --
35887    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35888         (NVL(l_actual_upg_option, 'N') = 'O') OR
35889         (NVL(l_enc_upg_option, 'N') = 'O')
35890       )
35891    THEN
35892    NULL;
35893    --
35894    --
35895    
35896   l_ccid := AcctDerRule_9(
35897            p_application_id           => p_application_id
35898          , p_ae_header_id             => l_ae_header_id 
35899 , p_source_9 => p_source_9
35900          , x_transaction_coa_id       => l_adr_transaction_coa_id
35901          , x_accounting_coa_id        => l_adr_accounting_coa_id
35902          , x_value_type_code          => l_adr_value_type_code
35903          , p_side                     => 'NA'
35904    );
35905 
35906    xla_ae_lines_pkg.set_ccid(
35907     p_code_combination_id          => l_ccid
35908   , p_value_type_code              => l_adr_value_type_code
35909   , p_transaction_coa_id           => l_adr_transaction_coa_id
35910   , p_accounting_coa_id            => l_adr_accounting_coa_id
35911   , p_adr_code                     => 'FV_ACCOUNT_RULE'
35912   , p_adr_type_code                => 'S'
35913   , p_component_type               => l_component_type
35914   , p_component_code               => l_component_code
35915   , p_component_type_code          => l_component_type_code
35916   , p_component_appl_id            => l_component_appl_id
35917   , p_amb_context_code             => l_amb_context_code
35918   , p_side                         => 'NA'
35919   );
35920 
35921 
35922    l_segment := AcctDerRule_8(
35923            p_application_id           => p_application_id
35924          , p_ae_header_id             => l_ae_header_id 
35925          , x_transaction_coa_id       => l_adr_transaction_coa_id
35926          , x_accounting_coa_id        => l_adr_accounting_coa_id
35927          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
35928          , x_flex_value_set_id        => l_adr_flex_value_set_id
35929          , x_value_type_code          => l_adr_value_type_code
35930          , x_value_combination_id     => l_adr_value_combination_id
35931          , x_value_segment_code       => l_adr_value_segment_code
35932          , p_side                     => 'NA'
35933          , p_override_seg_flag        => 'Y'
35934    );
35935 
35936    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
35937 
35938       xla_ae_lines_pkg.set_segment(
35939           p_to_segment_code         => 'GL_ACCOUNT'
35940         , p_segment_value           => l_segment
35941         , p_from_segment_code       => l_adr_value_segment_code
35942         , p_from_combination_id     => l_adr_value_combination_id
35943         , p_value_type_code         => l_adr_value_type_code
35944         , p_transaction_coa_id      => l_adr_transaction_coa_id
35945         , p_accounting_coa_id       => l_adr_accounting_coa_id
35946         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
35947         , p_flex_value_set_id       => l_adr_flex_value_set_id
35948         , p_adr_code                => 'FV_48X101_PURCHASING'
35949         , p_adr_type_code           => 'S'
35950         , p_component_type          => l_component_type
35951         , p_component_code          => l_component_code
35952         , p_component_type_code     => l_component_type_code
35953         , p_component_appl_id       => l_component_appl_id
35954         , p_amb_context_code        => l_amb_context_code
35955         , p_entity_code             => 'RELEASE'
35956         , p_event_class_code        => 'RELEASE'
35957         , p_side                    => 'NA'
35958         );
35959 
35960   END IF;
35961 
35962    --
35963    --
35964    END IF;
35965    --
35966    -- Bug 4922099
35967    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35968           (NVL(l_enc_upg_option, 'N') = 'O')
35969         ) AND
35970         (l_bflow_method_code = 'PRIOR_ENTRY')
35971       )
35972    THEN
35973       IF
35974       --
35975       1 = 2
35976       --
35977       THEN
35978       xla_accounting_err_pkg.build_message
35979                                     (p_appli_s_name            => 'XLA'
35980                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35981                                     ,p_token_1                 => 'LINE_NUMBER'
35982                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35983                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35984                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35985                                                                              l_component_type
35986                                                                             ,l_component_code
35987                                                                             ,l_component_type_code
35988                                                                             ,l_component_appl_id
35989                                                                             ,l_amb_context_code
35990                                                                             ,l_entity_code
35991                                                                             ,l_event_class_code
35992                                                                            )
35993                                     ,p_token_3                 => 'OWNER'
35994                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35995                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35996                                                                           ,p_lookup_code    => l_component_type_code
35997                                                                          )
35998                                     ,p_token_4                 => 'PRODUCT_NAME'
35999                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36000                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36001                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36002                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36003                                     ,p_ae_header_id            =>  NULL
36004                                        );
36005 
36006         IF (C_LEVEL_ERROR>= g_log_level) THEN
36007                  trace
36008                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36009                       ,p_level    => C_LEVEL_ERROR
36010                       ,p_module   => l_log_module);
36011         END IF;
36012       END IF;
36013    END IF;
36014    --
36015    --
36016    ------------------------------------------------------------------------------------------------
36017    -- 4219869 Business Flow
36018    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36019    -- Prior Entry.  Currently, the following code is always generated.
36020    ------------------------------------------------------------------------------------------------
36021    XLA_AE_LINES_PKG.ValidateCurrentLine;
36022 
36023    ------------------------------------------------------------------------------------
36024    -- 4219869 Business Flow
36025    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36026    ------------------------------------------------------------------------------------
36027    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36028 
36029    ----------------------------------------------------------------------------------
36030    -- 4219869 Business Flow
36031    -- Update journal entry status -- Need to generate this within IF <condition>
36032    ----------------------------------------------------------------------------------
36033    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36034          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36035          ,p_balance_type_code => l_balance_type_code
36036          );
36037 
36038    -------------------------------------------------------------------------------------------
36039    -- 4262811 - Generate the Accrual Reversal lines
36040    -------------------------------------------------------------------------------------------
36041    BEGIN
36042       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36043                               (g_array_event(p_event_id).array_value_num('header_index'));
36044       IF l_acc_rev_flag IS NULL THEN
36045          l_acc_rev_flag := 'N';
36046       END IF;
36047    EXCEPTION
36048       WHEN OTHERS THEN
36049          l_acc_rev_flag := 'N';
36050    END;
36051    --
36052    IF (l_acc_rev_flag = 'Y') THEN
36053 
36054        -- 4645092  ------------------------------------------------------------------------------
36055        -- To allow MPA report to determine if it should generate report process
36056        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36057        ------------------------------------------------------------------------------------------
36058 
36059        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36060        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36061 
36062        --
36063        -- Update the line information that should be overwritten
36064        --
36065        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36066                                          p_header_num   => 1);
36067        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36068 
36069        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36070 
36071        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36072           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36073        END IF;
36074 
36075       --
36076       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36077       --
36078       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36079           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36080       ELSE
36081           ---------------------------------------------------------------------------------------------------
36082           -- 4262811a Switch Sign
36083           ---------------------------------------------------------------------------------------------------
36084           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36085           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36086                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36087           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36088                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36089           -- 5132302
36090           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36091                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36092 
36093       END IF;
36094 
36095       -- 4955764
36096       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36097       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36098 
36099 
36100       XLA_AE_LINES_PKG.ValidateCurrentLine;
36101       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36102 
36103       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36104                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36105                ,p_balance_type_code => l_balance_type_code);
36106 
36107    END IF;
36108 
36109    -----------------------------------------------------------------------------------------
36110    -- 4262811 Multiperiod Accounting
36111    -----------------------------------------------------------------------------------------
36112      -- No MPA option is assigned.
36113 
36114 
36115 END IF;
36116 END IF;
36117 --
36118 
36119 --
36120 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36121    trace
36122       (p_msg      => 'END of AcctLineType_67'
36123       ,p_level    => C_LEVEL_PROCEDURE
36124       ,p_module   => l_log_module);
36125 END IF;
36126 --
36127 EXCEPTION
36128   WHEN xla_exceptions_pkg.application_exception THEN
36129       RAISE;
36130   WHEN OTHERS THEN
36131        xla_exceptions_pkg.raise_message
36132            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_67');
36133 END AcctLineType_67;
36134 --
36135 
36136 ---------------------------------------
36137 --
36138 -- PRIVATE FUNCTION
36139 --         AcctLineType_68
36140 --
36141 ---------------------------------------
36142 PROCEDURE AcctLineType_68 (
36143   p_application_id        IN NUMBER
36144  ,p_event_id              IN NUMBER
36145  ,p_calculate_acctd_flag  IN VARCHAR2
36146  ,p_calculate_g_l_flag    IN VARCHAR2
36147  ,p_actual_flag           IN OUT VARCHAR2
36148  ,p_balance_type_code     OUT VARCHAR2
36149  ,p_gain_or_loss_ref      OUT VARCHAR2
36150  
36151 --Budget Account
36152  , p_source_9            IN NUMBER
36153 --Main Or Backing Code
36154  , p_source_13            IN VARCHAR2
36155 --Accounting Reversal Flag
36156  , p_source_15            IN VARCHAR2
36157 --Distribution Link Type
36158  , p_source_17            IN VARCHAR2
36159 --PO Distribution Identifier
36160  , p_source_19            IN NUMBER
36161 --Applied To Application Identifier
36162  , p_source_21            IN NUMBER
36163 --Applied To Distribution Link Type
36164  , p_source_22            IN VARCHAR2
36165 --Applied To Entity Code
36166  , p_source_23            IN VARCHAR2
36167 --Applied To Distribution Identifier 1
36168  , p_source_24            IN NUMBER
36169 --Applied To Header Identifier 1
36170  , p_source_25            IN NUMBER
36171 --Entered Amount
36172  , p_source_26            IN NUMBER
36173 --Currency Code
36174  , p_source_27            IN VARCHAR2
36175 --Accounted Amount
36176  , p_source_28            IN NUMBER
36177 --PO Encumbrance Upgrade Option
36178  , p_source_29            IN VARCHAR2
36179 --JFMIP Reference
36180  , p_source_31            IN VARCHAR2
36181 --PO Upgrade Encumbrance Type Identifier
36182  , p_source_32            IN NUMBER
36183 --Allocated to Main Document Distribution Type
36184  , p_source_33            IN VARCHAR2
36185 --Allocated to Main Document Distribution Identifier
36186  , p_source_34            IN NUMBER
36187 --PO Release Identifier
36188  , p_source_41            IN NUMBER
36189 )
36190 IS
36191 
36192 l_component_type              VARCHAR2(80);
36193 l_component_code              VARCHAR2(30);
36194 l_component_type_code         VARCHAR2(1);
36195 l_component_appl_id           INTEGER;
36196 l_amb_context_code            VARCHAR2(30);
36197 l_entity_code                 VARCHAR2(30);
36198 l_event_class_code            VARCHAR2(30);
36199 l_ae_header_id                NUMBER;
36200 l_event_type_code             VARCHAR2(30);
36201 l_line_definition_code        VARCHAR2(30);
36202 l_line_definition_owner_code  VARCHAR2(1);
36203 --
36204 -- adr variables
36205 l_segment                     VARCHAR2(30);
36206 l_ccid                        NUMBER;
36207 l_adr_transaction_coa_id      NUMBER;
36208 l_adr_accounting_coa_id       NUMBER;
36209 l_adr_flexfield_segment_code  VARCHAR2(30);
36210 l_adr_flex_value_set_id       NUMBER;
36211 l_adr_value_type_code         VARCHAR2(30);
36212 l_adr_value_combination_id    NUMBER;
36213 l_adr_value_segment_code      VARCHAR2(30);
36214 
36215 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36216 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36217 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36218 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36219 
36220 -- 4262811 Variables ------------------------------------------------------------------------------------------
36221 l_entered_amt_idx             NUMBER;
36222 l_accted_amt_idx              NUMBER;
36223 l_acc_rev_flag                VARCHAR2(1);
36224 l_accrual_line_num            NUMBER;
36225 l_tmp_amt                     NUMBER;
36226 l_acc_rev_natural_side_code   VARCHAR2(1);
36227 
36228 l_num_entries                 NUMBER;
36229 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36230 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36231 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36232 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36233 l_recog_line_1                NUMBER;
36234 l_recog_line_2                NUMBER;
36235 
36236 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36237 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36238 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36239 
36240 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36241 
36242 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36243 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36244 
36245 ---------------------------------------------------------------------------------------------------------------
36246 
36247 
36248 --
36249 -- bulk performance
36250 --
36251 l_balance_type_code           VARCHAR2(1);
36252 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36253 l_log_module                  VARCHAR2(240);
36254 
36255 --
36256 -- Upgrade strategy
36257 --
36258 l_actual_upg_option           VARCHAR2(1);
36259 l_enc_upg_option           VARCHAR2(1);
36260 
36261 --
36262 BEGIN
36263 --
36264 IF g_log_enabled THEN
36265       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
36266 END IF;
36267 --
36268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36269 
36270       trace
36271          (p_msg      => 'BEGIN of AcctLineType_68'
36272          ,p_level    => C_LEVEL_PROCEDURE
36273          ,p_module   => l_log_module);
36274 
36275 END IF;
36276 --
36277 l_component_type             := 'AMB_JLT';
36278 l_component_code             := 'FV_REL_RELIEVE_REQ_CR';
36279 l_component_type_code        := 'S';
36280 l_component_appl_id          :=  201;
36281 l_amb_context_code           := 'DEFAULT';
36282 l_entity_code                := 'RELEASE';
36283 l_event_class_code           := 'RELEASE';
36284 l_event_type_code            := 'RELEASE_ALL';
36285 l_line_definition_owner_code := 'S';
36286 l_line_definition_code       := 'FV_RELEASE_ALL';
36287 --
36288 l_balance_type_code          := 'A';
36289 l_segment                     := NULL;
36290 l_ccid                        := NULL;
36291 l_adr_transaction_coa_id      := NULL;
36292 l_adr_accounting_coa_id       := NULL;
36293 l_adr_flexfield_segment_code  := NULL;
36294 l_adr_flex_value_set_id       := NULL;
36295 l_adr_value_type_code         := NULL;
36296 l_adr_value_combination_id    := NULL;
36297 l_adr_value_segment_code      := NULL;
36298 
36299 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
36300 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
36301 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
36302 l_budgetary_control_flag     := 'Y';
36303 
36304 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36305 l_bflow_applied_to_amt       := NULL; -- 5132302
36306 l_entered_amt_idx            := NULL;          -- 4262811
36307 l_accted_amt_idx             := NULL;          -- 4262811
36308 l_acc_rev_flag               := NULL;          -- 4262811
36309 l_accrual_line_num           := NULL;          -- 4262811
36310 l_tmp_amt                    := NULL;          -- 4262811
36311 --
36312  
36313 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36314     l_balance_type_code <> 'B' THEN
36315 IF NVL(
36316 xla_ae_sources_pkg.GetSystemSourceChar(
36317    p_source_code           => 'XLA_EVENT_TYPE_CODE'
36318  , p_source_type_code      => 'Y'
36319  , p_source_application_id =>  602
36320 ),'
36321 ') =  'RELEASE_RESERVED' AND 
36322 NVL(p_source_13,'
36323 ') =  'B_REQ'
36324  THEN 
36325 
36326    --
36327    XLA_AE_LINES_PKG.SetNewLine;
36328 
36329    p_balance_type_code          := l_balance_type_code;
36330    -- set the flag so later we will know whether the gain loss line needs to be created
36331    
36332    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36333      p_actual_flag :='A';
36334    END IF;
36335 
36336    --
36337    -- bulk performance
36338    --
36339    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36340                                       p_header_num   => 0); -- 4262811
36341    --
36342    -- set accounting line options
36343    --
36344    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36345            p_natural_side_code          => 'C'
36346          , p_gain_or_loss_flag          => 'N'
36347          , p_gl_transfer_mode_code      => 'S'
36348          , p_acct_entry_type_code       => 'A'
36349          , p_switch_side_flag           => 'N'
36350          , p_merge_duplicate_code       => 'N'
36351          );
36352    --
36353    l_acc_rev_natural_side_code := 'D';  -- 4262811
36354    -- 
36355    --
36356    -- set accounting line type info
36357    --
36358    xla_ae_lines_pkg.SetAcctLineType
36359       (p_component_type             => l_component_type
36360       ,p_event_type_code            => l_event_type_code
36361       ,p_line_definition_owner_code => l_line_definition_owner_code
36362       ,p_line_definition_code       => l_line_definition_code
36363       ,p_accounting_line_code       => l_component_code
36364       ,p_accounting_line_type_code  => l_component_type_code
36365       ,p_accounting_line_appl_id    => l_component_appl_id
36366       ,p_amb_context_code           => l_amb_context_code
36367       ,p_entity_code                => l_entity_code
36368       ,p_event_class_code           => l_event_class_code);
36369    --
36370    -- set accounting class
36371    --
36372    xla_ae_lines_pkg.SetAcctClass(
36373            p_accounting_class_code  => 'PURCHASE_ORDER'
36374          , p_ae_header_id           => l_ae_header_id
36375          );
36376 
36377    --
36378    -- set rounding class
36379    --
36380    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36381                       'PURCHASE_ORDER';
36382 
36383    --
36384    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36385    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36386    --
36387    -- bulk performance
36388    --
36389    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36390 
36391    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36392       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36393 
36394    -- 4955764
36395    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36396       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36397 
36398    -- 4458381 Public Sector Enh
36399    
36400    --
36401    -- set accounting attributes for the line type
36402    --
36403    l_entered_amt_idx := 23;
36404    l_accted_amt_idx  := 25;
36405    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36406    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36407    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
36408    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
36409    l_rec_acct_attrs.array_num_value(2)  := 
36410 xla_ae_sources_pkg.GetSystemSourceNum(
36411    p_source_code           => 'XLA_EVENT_APPL_ID'
36412  , p_source_type_code      => 'Y'
36413  , p_source_application_id =>  602
36414 );
36415    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
36416    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
36417    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
36418    l_rec_acct_attrs.array_char_value(4)  := 
36419 xla_ae_sources_pkg.GetSystemSourceChar(
36420    p_source_code           => 'XLA_ENTITY_CODE'
36421  , p_source_type_code      => 'Y'
36422  , p_source_application_id =>  602
36423 );
36424    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
36425    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
36426    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
36427    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
36428    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
36429    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
36430    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36431    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
36432    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
36433    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
36434    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
36435    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
36436    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36437    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
36438    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
36439    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
36440    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
36441    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
36442    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
36443    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
36444    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
36445    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
36446    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
36447    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
36448    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
36449    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
36450    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
36451    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
36452    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
36453    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
36454    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
36455    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
36456    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
36457    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
36458    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
36459    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
36460    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
36461    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
36462    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
36463    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
36464    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
36465    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
36466    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
36467    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
36468    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
36469    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
36470    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
36471    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
36472    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
36473    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
36474    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
36475    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
36476    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
36477    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
36478 
36479    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36480    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36481 
36482    ---------------------------------------------------------------------------------------------------------------
36483    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36484    ---------------------------------------------------------------------------------------------------------------
36485    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36486 
36487    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36488    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36489 
36490    IF xla_accounting_cache_pkg.GetValueChar
36491          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36492          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36493    AND l_bflow_method_code = 'PRIOR_ENTRY'
36494 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36495    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36496          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36497        )
36498    THEN
36499          xla_ae_lines_pkg.BflowUpgEntry
36500            (p_business_method_code    => l_bflow_method_code
36501            ,p_business_class_code     => l_bflow_class_code
36502            ,p_balance_type            => l_balance_type_code);
36503    ELSE
36504       NULL;
36505 XLA_AE_LINES_PKG.business_flow_validation(
36506                                 p_business_method_code     => l_bflow_method_code
36507                                ,p_business_class_code      => l_bflow_class_code
36508                                ,p_inherit_description_flag => l_inherit_desc_flag);
36509    END IF;
36510 
36511    --
36512    -- call analytical criteria
36513    --
36514    -- Inherited Analytical Criteria for business flow method of Prior Entry.
36515    --
36516    -- call description
36517    --
36518    -- No description or it is inherited.
36519    --
36520    -- call ADRs
36521    -- Bug 4922099
36522    --
36523    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36524         (NVL(l_actual_upg_option, 'N') = 'O') OR
36525         (NVL(l_enc_upg_option, 'N') = 'O')
36526       )
36527    THEN
36528    NULL;
36529    --
36530    --
36531    
36532    --
36533    --
36534    END IF;
36535    --
36536    -- Bug 4922099
36537    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36538           (NVL(l_enc_upg_option, 'N') = 'O')
36539         ) AND
36540         (l_bflow_method_code = 'PRIOR_ENTRY')
36541       )
36542    THEN
36543       IF
36544       --
36545       1 = 1
36546       --
36547       THEN
36548       xla_accounting_err_pkg.build_message
36549                                     (p_appli_s_name            => 'XLA'
36550                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36551                                     ,p_token_1                 => 'LINE_NUMBER'
36552                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36553                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36554                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36555                                                                              l_component_type
36556                                                                             ,l_component_code
36557                                                                             ,l_component_type_code
36558                                                                             ,l_component_appl_id
36559                                                                             ,l_amb_context_code
36560                                                                             ,l_entity_code
36561                                                                             ,l_event_class_code
36562                                                                            )
36563                                     ,p_token_3                 => 'OWNER'
36564                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36565                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36566                                                                           ,p_lookup_code    => l_component_type_code
36567                                                                          )
36568                                     ,p_token_4                 => 'PRODUCT_NAME'
36569                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36570                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36571                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36572                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36573                                     ,p_ae_header_id            =>  NULL
36574                                        );
36575 
36576         IF (C_LEVEL_ERROR>= g_log_level) THEN
36577                  trace
36578                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36579                       ,p_level    => C_LEVEL_ERROR
36580                       ,p_module   => l_log_module);
36581         END IF;
36582       END IF;
36583    END IF;
36584    --
36585    --
36586    ------------------------------------------------------------------------------------------------
36587    -- 4219869 Business Flow
36588    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36589    -- Prior Entry.  Currently, the following code is always generated.
36590    ------------------------------------------------------------------------------------------------
36591    -- No ValidateCurrentLine for business flow method of Prior Entry
36592 
36593    ------------------------------------------------------------------------------------
36594    -- 4219869 Business Flow
36595    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36596    ------------------------------------------------------------------------------------
36597    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36598 
36599    ----------------------------------------------------------------------------------
36600    -- 4219869 Business Flow
36601    -- Update journal entry status -- Need to generate this within IF <condition>
36602    ----------------------------------------------------------------------------------
36603    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36604          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36605          ,p_balance_type_code => l_balance_type_code
36606          );
36607 
36608    -------------------------------------------------------------------------------------------
36609    -- 4262811 - Generate the Accrual Reversal lines
36610    -------------------------------------------------------------------------------------------
36611    BEGIN
36612       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36613                               (g_array_event(p_event_id).array_value_num('header_index'));
36614       IF l_acc_rev_flag IS NULL THEN
36615          l_acc_rev_flag := 'N';
36616       END IF;
36617    EXCEPTION
36618       WHEN OTHERS THEN
36619          l_acc_rev_flag := 'N';
36620    END;
36621    --
36622    IF (l_acc_rev_flag = 'Y') THEN
36623 
36624        -- 4645092  ------------------------------------------------------------------------------
36625        -- To allow MPA report to determine if it should generate report process
36626        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36627        ------------------------------------------------------------------------------------------
36628 
36629        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36630        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36631 
36632        --
36633        -- Update the line information that should be overwritten
36634        --
36635        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36636                                          p_header_num   => 1);
36637        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36638 
36639        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36640 
36641        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36642           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36643        END IF;
36644 
36645       --
36646       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36647       --
36648       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36649           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36650       ELSE
36651           ---------------------------------------------------------------------------------------------------
36652           -- 4262811a Switch Sign
36653           ---------------------------------------------------------------------------------------------------
36654           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36655           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36656                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36657           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36658                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36659           -- 5132302
36660           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36661                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36662 
36663       END IF;
36664 
36665       -- 4955764
36666       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36667       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36668 
36669 
36670       XLA_AE_LINES_PKG.ValidateCurrentLine;
36671       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36672 
36673       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36674                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36675                ,p_balance_type_code => l_balance_type_code);
36676 
36677    END IF;
36678 
36679    -----------------------------------------------------------------------------------------
36680    -- 4262811 Multiperiod Accounting
36681    -----------------------------------------------------------------------------------------
36682      -- No MPA option is assigned.
36683 
36684 
36685 END IF;
36686 END IF;
36687 --
36688 
36689 --
36690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36691    trace
36692       (p_msg      => 'END of AcctLineType_68'
36693       ,p_level    => C_LEVEL_PROCEDURE
36694       ,p_module   => l_log_module);
36695 END IF;
36696 --
36697 EXCEPTION
36698   WHEN xla_exceptions_pkg.application_exception THEN
36699       RAISE;
36700   WHEN OTHERS THEN
36701        xla_exceptions_pkg.raise_message
36702            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_68');
36703 END AcctLineType_68;
36704 --
36705 
36706 ---------------------------------------
36707 --
36708 -- PRIVATE FUNCTION
36709 --         AcctLineType_69
36710 --
36711 ---------------------------------------
36712 PROCEDURE AcctLineType_69 (
36713   p_application_id        IN NUMBER
36714  ,p_event_id              IN NUMBER
36715  ,p_calculate_acctd_flag  IN VARCHAR2
36716  ,p_calculate_g_l_flag    IN VARCHAR2
36717  ,p_actual_flag           IN OUT VARCHAR2
36718  ,p_balance_type_code     OUT VARCHAR2
36719  ,p_gain_or_loss_ref      OUT VARCHAR2
36720  
36721 --Budget Account
36722  , p_source_9            IN NUMBER
36723 --Main Or Backing Code
36724  , p_source_13            IN VARCHAR2
36725 --Accounting Reversal Flag
36726  , p_source_15            IN VARCHAR2
36727 --Distribution Link Type
36728  , p_source_17            IN VARCHAR2
36729 --PO Distribution Identifier
36730  , p_source_19            IN NUMBER
36731 --Applied To Application Identifier
36732  , p_source_21            IN NUMBER
36733 --Applied To Distribution Link Type
36734  , p_source_22            IN VARCHAR2
36735 --Applied To Entity Code
36736  , p_source_23            IN VARCHAR2
36737 --Applied To Distribution Identifier 1
36738  , p_source_24            IN NUMBER
36739 --Applied To Header Identifier 1
36740  , p_source_25            IN NUMBER
36741 --Entered Amount
36742  , p_source_26            IN NUMBER
36743 --Currency Code
36744  , p_source_27            IN VARCHAR2
36745 --Accounted Amount
36746  , p_source_28            IN NUMBER
36747 --PO Encumbrance Upgrade Option
36748  , p_source_29            IN VARCHAR2
36749 --JFMIP Reference
36750  , p_source_31            IN VARCHAR2
36751 --PO Upgrade Encumbrance Type Identifier
36752  , p_source_32            IN NUMBER
36753 --Allocated to Main Document Distribution Type
36754  , p_source_33            IN VARCHAR2
36755 --Allocated to Main Document Distribution Identifier
36756  , p_source_34            IN NUMBER
36757 --PO Release Identifier
36758  , p_source_41            IN NUMBER
36759 )
36760 IS
36761 
36762 l_component_type              VARCHAR2(80);
36763 l_component_code              VARCHAR2(30);
36764 l_component_type_code         VARCHAR2(1);
36765 l_component_appl_id           INTEGER;
36766 l_amb_context_code            VARCHAR2(30);
36767 l_entity_code                 VARCHAR2(30);
36768 l_event_class_code            VARCHAR2(30);
36769 l_ae_header_id                NUMBER;
36770 l_event_type_code             VARCHAR2(30);
36771 l_line_definition_code        VARCHAR2(30);
36772 l_line_definition_owner_code  VARCHAR2(1);
36773 --
36774 -- adr variables
36775 l_segment                     VARCHAR2(30);
36776 l_ccid                        NUMBER;
36777 l_adr_transaction_coa_id      NUMBER;
36778 l_adr_accounting_coa_id       NUMBER;
36779 l_adr_flexfield_segment_code  VARCHAR2(30);
36780 l_adr_flex_value_set_id       NUMBER;
36781 l_adr_value_type_code         VARCHAR2(30);
36782 l_adr_value_combination_id    NUMBER;
36783 l_adr_value_segment_code      VARCHAR2(30);
36784 
36785 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36786 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36787 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36788 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36789 
36790 -- 4262811 Variables ------------------------------------------------------------------------------------------
36791 l_entered_amt_idx             NUMBER;
36792 l_accted_amt_idx              NUMBER;
36793 l_acc_rev_flag                VARCHAR2(1);
36794 l_accrual_line_num            NUMBER;
36795 l_tmp_amt                     NUMBER;
36796 l_acc_rev_natural_side_code   VARCHAR2(1);
36797 
36798 l_num_entries                 NUMBER;
36799 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36800 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36801 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36802 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36803 l_recog_line_1                NUMBER;
36804 l_recog_line_2                NUMBER;
36805 
36806 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36807 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36808 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36809 
36810 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36811 
36812 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36813 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36814 
36815 ---------------------------------------------------------------------------------------------------------------
36816 
36817 
36818 --
36819 -- bulk performance
36820 --
36821 l_balance_type_code           VARCHAR2(1);
36822 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36823 l_log_module                  VARCHAR2(240);
36824 
36825 --
36826 -- Upgrade strategy
36827 --
36828 l_actual_upg_option           VARCHAR2(1);
36829 l_enc_upg_option           VARCHAR2(1);
36830 
36831 --
36832 BEGIN
36833 --
36834 IF g_log_enabled THEN
36835       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
36836 END IF;
36837 --
36838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36839 
36840       trace
36841          (p_msg      => 'BEGIN of AcctLineType_69'
36842          ,p_level    => C_LEVEL_PROCEDURE
36843          ,p_module   => l_log_module);
36844 
36845 END IF;
36846 --
36847 l_component_type             := 'AMB_JLT';
36848 l_component_code             := 'FV_REL_RELIEVE_REQ_DR';
36849 l_component_type_code        := 'S';
36850 l_component_appl_id          :=  201;
36851 l_amb_context_code           := 'DEFAULT';
36852 l_entity_code                := 'RELEASE';
36853 l_event_class_code           := 'RELEASE';
36854 l_event_type_code            := 'RELEASE_ALL';
36855 l_line_definition_owner_code := 'S';
36856 l_line_definition_code       := 'FV_RELEASE_ALL';
36857 --
36858 l_balance_type_code          := 'A';
36859 l_segment                     := NULL;
36860 l_ccid                        := NULL;
36861 l_adr_transaction_coa_id      := NULL;
36862 l_adr_accounting_coa_id       := NULL;
36863 l_adr_flexfield_segment_code  := NULL;
36864 l_adr_flex_value_set_id       := NULL;
36865 l_adr_value_type_code         := NULL;
36866 l_adr_value_combination_id    := NULL;
36867 l_adr_value_segment_code      := NULL;
36868 
36869 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
36870 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
36871 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
36872 l_budgetary_control_flag     := 'Y';
36873 
36874 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36875 l_bflow_applied_to_amt       := NULL; -- 5132302
36876 l_entered_amt_idx            := NULL;          -- 4262811
36877 l_accted_amt_idx             := NULL;          -- 4262811
36878 l_acc_rev_flag               := NULL;          -- 4262811
36879 l_accrual_line_num           := NULL;          -- 4262811
36880 l_tmp_amt                    := NULL;          -- 4262811
36881 --
36882  
36883 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36884     l_balance_type_code <> 'B' THEN
36885 IF NVL(
36886 xla_ae_sources_pkg.GetSystemSourceChar(
36887    p_source_code           => 'XLA_EVENT_TYPE_CODE'
36888  , p_source_type_code      => 'Y'
36889  , p_source_application_id =>  602
36890 ),'
36891 ') =  'RELEASE_RESERVED' AND 
36892 NVL(p_source_13,'
36893 ') =  'B_REQ'
36894  THEN 
36895 
36896    --
36897    XLA_AE_LINES_PKG.SetNewLine;
36898 
36899    p_balance_type_code          := l_balance_type_code;
36900    -- set the flag so later we will know whether the gain loss line needs to be created
36901    
36902    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36903      p_actual_flag :='A';
36904    END IF;
36905 
36906    --
36907    -- bulk performance
36908    --
36909    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36910                                       p_header_num   => 0); -- 4262811
36911    --
36912    -- set accounting line options
36913    --
36914    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36915            p_natural_side_code          => 'D'
36916          , p_gain_or_loss_flag          => 'N'
36917          , p_gl_transfer_mode_code      => 'S'
36918          , p_acct_entry_type_code       => 'A'
36919          , p_switch_side_flag           => 'N'
36920          , p_merge_duplicate_code       => 'N'
36921          );
36922    --
36923    l_acc_rev_natural_side_code := 'C';  -- 4262811
36924    -- 
36925    --
36926    -- set accounting line type info
36927    --
36928    xla_ae_lines_pkg.SetAcctLineType
36929       (p_component_type             => l_component_type
36930       ,p_event_type_code            => l_event_type_code
36931       ,p_line_definition_owner_code => l_line_definition_owner_code
36932       ,p_line_definition_code       => l_line_definition_code
36933       ,p_accounting_line_code       => l_component_code
36934       ,p_accounting_line_type_code  => l_component_type_code
36935       ,p_accounting_line_appl_id    => l_component_appl_id
36936       ,p_amb_context_code           => l_amb_context_code
36937       ,p_entity_code                => l_entity_code
36938       ,p_event_class_code           => l_event_class_code);
36939    --
36940    -- set accounting class
36941    --
36942    xla_ae_lines_pkg.SetAcctClass(
36943            p_accounting_class_code  => 'PURCHASE_ORDER'
36944          , p_ae_header_id           => l_ae_header_id
36945          );
36946 
36947    --
36948    -- set rounding class
36949    --
36950    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36951                       'PURCHASE_ORDER';
36952 
36953    --
36954    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36955    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36956    --
36957    -- bulk performance
36958    --
36959    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36960 
36961    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36962       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36963 
36964    -- 4955764
36965    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36966       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36967 
36968    -- 4458381 Public Sector Enh
36969    
36970    --
36971    -- set accounting attributes for the line type
36972    --
36973    l_entered_amt_idx := 23;
36974    l_accted_amt_idx  := 25;
36975    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36976    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36977    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
36978    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
36979    l_rec_acct_attrs.array_num_value(2)  := 
36980 xla_ae_sources_pkg.GetSystemSourceNum(
36981    p_source_code           => 'XLA_EVENT_APPL_ID'
36982  , p_source_type_code      => 'Y'
36983  , p_source_application_id =>  602
36984 );
36985    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
36986    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
36987    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
36988    l_rec_acct_attrs.array_char_value(4)  := 
36989 xla_ae_sources_pkg.GetSystemSourceChar(
36990    p_source_code           => 'XLA_ENTITY_CODE'
36991  , p_source_type_code      => 'Y'
36992  , p_source_application_id =>  602
36993 );
36994    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
36995    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
36996    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
36997    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
36998    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
36999    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
37000    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37001    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
37002    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
37003    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
37004    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
37005    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
37006    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37007    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
37008    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
37009    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
37010    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
37011    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
37012    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
37013    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
37014    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
37015    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
37016    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
37017    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
37018    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
37019    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
37020    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
37021    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
37022    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
37023    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
37024    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
37025    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
37026    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
37027    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
37028    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
37029    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
37030    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
37031    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
37032    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
37033    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
37034    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
37035    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
37036    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
37037    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
37038    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
37039    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
37040    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
37041    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
37042    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
37043    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
37044    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
37045    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
37046    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
37047    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
37048 
37049    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37050    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37051 
37052    ---------------------------------------------------------------------------------------------------------------
37053    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37054    ---------------------------------------------------------------------------------------------------------------
37055    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37056 
37057    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37058    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37059 
37060    IF xla_accounting_cache_pkg.GetValueChar
37061          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37062          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37063    AND l_bflow_method_code = 'PRIOR_ENTRY'
37064 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37065    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37066          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37067        )
37068    THEN
37069          xla_ae_lines_pkg.BflowUpgEntry
37070            (p_business_method_code    => l_bflow_method_code
37071            ,p_business_class_code     => l_bflow_class_code
37072            ,p_balance_type            => l_balance_type_code);
37073    ELSE
37074       NULL;
37075 XLA_AE_LINES_PKG.business_flow_validation(
37076                                 p_business_method_code     => l_bflow_method_code
37077                                ,p_business_class_code      => l_bflow_class_code
37078                                ,p_inherit_description_flag => l_inherit_desc_flag);
37079    END IF;
37080 
37081    --
37082    -- call analytical criteria
37083    --
37084    -- Inherited Analytical Criteria for business flow method of Prior Entry.
37085    --
37086    -- call description
37087    --
37088    -- No description or it is inherited.
37089    --
37090    -- call ADRs
37091    -- Bug 4922099
37092    --
37093    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37094         (NVL(l_actual_upg_option, 'N') = 'O') OR
37095         (NVL(l_enc_upg_option, 'N') = 'O')
37096       )
37097    THEN
37098    NULL;
37099    --
37100    --
37101    
37102    --
37103    --
37104    END IF;
37105    --
37106    -- Bug 4922099
37107    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37108           (NVL(l_enc_upg_option, 'N') = 'O')
37109         ) AND
37110         (l_bflow_method_code = 'PRIOR_ENTRY')
37111       )
37112    THEN
37113       IF
37114       --
37115       1 = 1
37116       --
37117       THEN
37118       xla_accounting_err_pkg.build_message
37119                                     (p_appli_s_name            => 'XLA'
37120                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37121                                     ,p_token_1                 => 'LINE_NUMBER'
37122                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37123                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37124                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37125                                                                              l_component_type
37126                                                                             ,l_component_code
37127                                                                             ,l_component_type_code
37128                                                                             ,l_component_appl_id
37129                                                                             ,l_amb_context_code
37130                                                                             ,l_entity_code
37131                                                                             ,l_event_class_code
37132                                                                            )
37133                                     ,p_token_3                 => 'OWNER'
37134                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37135                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37136                                                                           ,p_lookup_code    => l_component_type_code
37137                                                                          )
37138                                     ,p_token_4                 => 'PRODUCT_NAME'
37139                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37140                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37141                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37142                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37143                                     ,p_ae_header_id            =>  NULL
37144                                        );
37145 
37146         IF (C_LEVEL_ERROR>= g_log_level) THEN
37147                  trace
37148                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37149                       ,p_level    => C_LEVEL_ERROR
37150                       ,p_module   => l_log_module);
37151         END IF;
37152       END IF;
37153    END IF;
37154    --
37155    --
37156    ------------------------------------------------------------------------------------------------
37157    -- 4219869 Business Flow
37158    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37159    -- Prior Entry.  Currently, the following code is always generated.
37160    ------------------------------------------------------------------------------------------------
37161    -- No ValidateCurrentLine for business flow method of Prior Entry
37162 
37163    ------------------------------------------------------------------------------------
37164    -- 4219869 Business Flow
37165    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37166    ------------------------------------------------------------------------------------
37167    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37168 
37169    ----------------------------------------------------------------------------------
37170    -- 4219869 Business Flow
37171    -- Update journal entry status -- Need to generate this within IF <condition>
37172    ----------------------------------------------------------------------------------
37173    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37174          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37175          ,p_balance_type_code => l_balance_type_code
37176          );
37177 
37178    -------------------------------------------------------------------------------------------
37179    -- 4262811 - Generate the Accrual Reversal lines
37180    -------------------------------------------------------------------------------------------
37181    BEGIN
37182       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37183                               (g_array_event(p_event_id).array_value_num('header_index'));
37184       IF l_acc_rev_flag IS NULL THEN
37185          l_acc_rev_flag := 'N';
37186       END IF;
37187    EXCEPTION
37188       WHEN OTHERS THEN
37189          l_acc_rev_flag := 'N';
37190    END;
37191    --
37192    IF (l_acc_rev_flag = 'Y') THEN
37193 
37194        -- 4645092  ------------------------------------------------------------------------------
37195        -- To allow MPA report to determine if it should generate report process
37196        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37197        ------------------------------------------------------------------------------------------
37198 
37199        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37200        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37201 
37202        --
37203        -- Update the line information that should be overwritten
37204        --
37205        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37206                                          p_header_num   => 1);
37207        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37208 
37209        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37210 
37211        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37212           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37213        END IF;
37214 
37215       --
37216       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37217       --
37218       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37219           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37220       ELSE
37221           ---------------------------------------------------------------------------------------------------
37222           -- 4262811a Switch Sign
37223           ---------------------------------------------------------------------------------------------------
37224           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37225           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37226                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37227           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37228                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37229           -- 5132302
37230           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37231                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37232 
37233       END IF;
37234 
37235       -- 4955764
37236       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37237       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37238 
37239 
37240       XLA_AE_LINES_PKG.ValidateCurrentLine;
37241       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37242 
37243       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37244                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37245                ,p_balance_type_code => l_balance_type_code);
37246 
37247    END IF;
37248 
37249    -----------------------------------------------------------------------------------------
37250    -- 4262811 Multiperiod Accounting
37251    -----------------------------------------------------------------------------------------
37252      -- No MPA option is assigned.
37253 
37254 
37255 END IF;
37256 END IF;
37257 --
37258 
37259 --
37260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37261    trace
37262       (p_msg      => 'END of AcctLineType_69'
37263       ,p_level    => C_LEVEL_PROCEDURE
37264       ,p_module   => l_log_module);
37265 END IF;
37266 --
37267 EXCEPTION
37268   WHEN xla_exceptions_pkg.application_exception THEN
37269       RAISE;
37270   WHEN OTHERS THEN
37271        xla_exceptions_pkg.raise_message
37272            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_69');
37273 END AcctLineType_69;
37274 --
37275 
37276 ---------------------------------------
37277 --
37278 -- PRIVATE FUNCTION
37279 --         AcctLineType_70
37280 --
37281 ---------------------------------------
37282 PROCEDURE AcctLineType_70 (
37283   p_application_id        IN NUMBER
37284  ,p_event_id              IN NUMBER
37285  ,p_calculate_acctd_flag  IN VARCHAR2
37286  ,p_calculate_g_l_flag    IN VARCHAR2
37287  ,p_actual_flag           IN OUT VARCHAR2
37288  ,p_balance_type_code     OUT VARCHAR2
37289  ,p_gain_or_loss_ref      OUT VARCHAR2
37290  
37291 --Budget Account
37292  , p_source_9            IN NUMBER
37293 --Main Or Backing Code
37294  , p_source_13            IN VARCHAR2
37295 --Accounting Reversal Flag
37296  , p_source_15            IN VARCHAR2
37297 --Distribution Link Type
37298  , p_source_17            IN VARCHAR2
37299 --PO Distribution Identifier
37300  , p_source_19            IN NUMBER
37301 --Applied To Application Identifier
37302  , p_source_21            IN NUMBER
37303 --Applied To Distribution Link Type
37304  , p_source_22            IN VARCHAR2
37305 --Applied To Entity Code
37306  , p_source_23            IN VARCHAR2
37307 --Applied To Distribution Identifier 1
37308  , p_source_24            IN NUMBER
37309 --Applied To Header Identifier 1
37310  , p_source_25            IN NUMBER
37311 --Entered Amount
37312  , p_source_26            IN NUMBER
37313 --Currency Code
37314  , p_source_27            IN VARCHAR2
37315 --Accounted Amount
37316  , p_source_28            IN NUMBER
37317 --PO Encumbrance Upgrade Option
37318  , p_source_29            IN VARCHAR2
37319 --JFMIP Reference
37320  , p_source_31            IN VARCHAR2
37321 --PO Upgrade Encumbrance Type Identifier
37322  , p_source_32            IN NUMBER
37323 --PO Release Identifier
37324  , p_source_41            IN NUMBER
37325 )
37326 IS
37327 
37328 l_component_type              VARCHAR2(80);
37329 l_component_code              VARCHAR2(30);
37330 l_component_type_code         VARCHAR2(1);
37331 l_component_appl_id           INTEGER;
37332 l_amb_context_code            VARCHAR2(30);
37333 l_entity_code                 VARCHAR2(30);
37334 l_event_class_code            VARCHAR2(30);
37335 l_ae_header_id                NUMBER;
37336 l_event_type_code             VARCHAR2(30);
37337 l_line_definition_code        VARCHAR2(30);
37338 l_line_definition_owner_code  VARCHAR2(1);
37339 --
37340 -- adr variables
37341 l_segment                     VARCHAR2(30);
37342 l_ccid                        NUMBER;
37343 l_adr_transaction_coa_id      NUMBER;
37344 l_adr_accounting_coa_id       NUMBER;
37345 l_adr_flexfield_segment_code  VARCHAR2(30);
37346 l_adr_flex_value_set_id       NUMBER;
37347 l_adr_value_type_code         VARCHAR2(30);
37348 l_adr_value_combination_id    NUMBER;
37349 l_adr_value_segment_code      VARCHAR2(30);
37350 
37351 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37352 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37353 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37354 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37355 
37356 -- 4262811 Variables ------------------------------------------------------------------------------------------
37357 l_entered_amt_idx             NUMBER;
37358 l_accted_amt_idx              NUMBER;
37359 l_acc_rev_flag                VARCHAR2(1);
37360 l_accrual_line_num            NUMBER;
37361 l_tmp_amt                     NUMBER;
37362 l_acc_rev_natural_side_code   VARCHAR2(1);
37363 
37364 l_num_entries                 NUMBER;
37365 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37366 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37367 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37368 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37369 l_recog_line_1                NUMBER;
37370 l_recog_line_2                NUMBER;
37371 
37372 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37373 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37374 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37375 
37376 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37377 
37378 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37379 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37380 
37381 ---------------------------------------------------------------------------------------------------------------
37382 
37383 
37384 --
37385 -- bulk performance
37386 --
37387 l_balance_type_code           VARCHAR2(1);
37388 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37389 l_log_module                  VARCHAR2(240);
37390 
37391 --
37392 -- Upgrade strategy
37393 --
37394 l_actual_upg_option           VARCHAR2(1);
37395 l_enc_upg_option           VARCHAR2(1);
37396 
37397 --
37398 BEGIN
37399 --
37400 IF g_log_enabled THEN
37401       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
37402 END IF;
37403 --
37404 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37405 
37406       trace
37407          (p_msg      => 'BEGIN of AcctLineType_70'
37408          ,p_level    => C_LEVEL_PROCEDURE
37409          ,p_module   => l_log_module);
37410 
37411 END IF;
37412 --
37413 l_component_type             := 'AMB_JLT';
37414 l_component_code             := 'FV_REL_REOPEN_FINAL_CLOSED_CR';
37415 l_component_type_code        := 'S';
37416 l_component_appl_id          :=  201;
37417 l_amb_context_code           := 'DEFAULT';
37418 l_entity_code                := 'RELEASE';
37419 l_event_class_code           := 'RELEASE';
37420 l_event_type_code            := 'RELEASE_ALL';
37421 l_line_definition_owner_code := 'S';
37422 l_line_definition_code       := 'FV_RELEASE_ALL';
37423 --
37424 l_balance_type_code          := 'A';
37425 l_segment                     := NULL;
37426 l_ccid                        := NULL;
37427 l_adr_transaction_coa_id      := NULL;
37428 l_adr_accounting_coa_id       := NULL;
37429 l_adr_flexfield_segment_code  := NULL;
37430 l_adr_flex_value_set_id       := NULL;
37431 l_adr_value_type_code         := NULL;
37432 l_adr_value_combination_id    := NULL;
37433 l_adr_value_segment_code      := NULL;
37434 
37435 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
37436 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
37437 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
37438 l_budgetary_control_flag     := 'Y';
37439 
37440 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37441 l_bflow_applied_to_amt       := NULL; -- 5132302
37442 l_entered_amt_idx            := NULL;          -- 4262811
37443 l_accted_amt_idx             := NULL;          -- 4262811
37444 l_acc_rev_flag               := NULL;          -- 4262811
37445 l_accrual_line_num           := NULL;          -- 4262811
37446 l_tmp_amt                    := NULL;          -- 4262811
37447 --
37448  
37449 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37450     l_balance_type_code <> 'B' THEN
37451 IF NVL(
37452 xla_ae_sources_pkg.GetSystemSourceChar(
37453    p_source_code           => 'XLA_EVENT_TYPE_CODE'
37454  , p_source_type_code      => 'Y'
37455  , p_source_application_id =>  602
37456 ),'
37457 ') =  'RELEASE_REOPEN_FINAL_CLOSED' AND 
37458 NVL(p_source_13,'
37459 ') =  'M'
37460  THEN 
37461 
37462    --
37463    XLA_AE_LINES_PKG.SetNewLine;
37464 
37465    p_balance_type_code          := l_balance_type_code;
37466    -- set the flag so later we will know whether the gain loss line needs to be created
37467    
37468    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37469      p_actual_flag :='A';
37470    END IF;
37471 
37472    --
37473    -- bulk performance
37474    --
37475    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37476                                       p_header_num   => 0); -- 4262811
37477    --
37478    -- set accounting line options
37479    --
37480    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37481            p_natural_side_code          => 'C'
37482          , p_gain_or_loss_flag          => 'N'
37483          , p_gl_transfer_mode_code      => 'S'
37484          , p_acct_entry_type_code       => 'A'
37485          , p_switch_side_flag           => 'N'
37486          , p_merge_duplicate_code       => 'N'
37487          );
37488    --
37489    l_acc_rev_natural_side_code := 'D';  -- 4262811
37490    -- 
37491    --
37492    -- set accounting line type info
37493    --
37494    xla_ae_lines_pkg.SetAcctLineType
37495       (p_component_type             => l_component_type
37496       ,p_event_type_code            => l_event_type_code
37497       ,p_line_definition_owner_code => l_line_definition_owner_code
37498       ,p_line_definition_code       => l_line_definition_code
37499       ,p_accounting_line_code       => l_component_code
37500       ,p_accounting_line_type_code  => l_component_type_code
37501       ,p_accounting_line_appl_id    => l_component_appl_id
37502       ,p_amb_context_code           => l_amb_context_code
37503       ,p_entity_code                => l_entity_code
37504       ,p_event_class_code           => l_event_class_code);
37505    --
37506    -- set accounting class
37507    --
37508    xla_ae_lines_pkg.SetAcctClass(
37509            p_accounting_class_code  => 'PURCHASE_ORDER'
37510          , p_ae_header_id           => l_ae_header_id
37511          );
37512 
37513    --
37514    -- set rounding class
37515    --
37516    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37517                       'PURCHASE_ORDER';
37518 
37519    --
37520    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37521    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37522    --
37523    -- bulk performance
37524    --
37525    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37526 
37527    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37528       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37529 
37530    -- 4955764
37531    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37532       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37533 
37534    -- 4458381 Public Sector Enh
37535    
37536    --
37537    -- set accounting attributes for the line type
37538    --
37539    l_entered_amt_idx := 23;
37540    l_accted_amt_idx  := 25;
37541    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37542    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37543    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
37544    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
37545    l_rec_acct_attrs.array_num_value(2)  := 
37546 xla_ae_sources_pkg.GetSystemSourceNum(
37547    p_source_code           => 'XLA_EVENT_APPL_ID'
37548  , p_source_type_code      => 'Y'
37549  , p_source_application_id =>  602
37550 );
37551    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
37552    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
37553    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
37554    l_rec_acct_attrs.array_char_value(4)  := 
37555 xla_ae_sources_pkg.GetSystemSourceChar(
37556    p_source_code           => 'XLA_ENTITY_CODE'
37557  , p_source_type_code      => 'Y'
37558  , p_source_application_id =>  602
37559 );
37560    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
37561    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
37562    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
37563    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
37564    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
37565    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
37566    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37567    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
37568    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
37569    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
37570    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
37571    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
37572    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37573    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
37574    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
37575    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
37576    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
37577    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
37578    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
37579    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
37580    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
37581    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
37582    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
37583    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
37584    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
37585    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
37586    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
37587    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
37588    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
37589    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
37590    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
37591    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
37592    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
37593    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
37594    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
37595    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
37596    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
37597    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
37598    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
37599    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
37600    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
37601    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
37602    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
37603    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
37604    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
37605    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
37606    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
37607    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
37608    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
37609    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
37610    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
37611    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
37612    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
37613    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
37614 
37615    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37616    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37617 
37618    ---------------------------------------------------------------------------------------------------------------
37619    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37620    ---------------------------------------------------------------------------------------------------------------
37621    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37622 
37623    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37624    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37625 
37626    IF xla_accounting_cache_pkg.GetValueChar
37627          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37628          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37629    AND l_bflow_method_code = 'PRIOR_ENTRY'
37630 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37631    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37632          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37633        )
37634    THEN
37635          xla_ae_lines_pkg.BflowUpgEntry
37636            (p_business_method_code    => l_bflow_method_code
37637            ,p_business_class_code     => l_bflow_class_code
37638            ,p_balance_type            => l_balance_type_code);
37639    ELSE
37640       NULL;
37641 XLA_AE_LINES_PKG.business_flow_validation(
37642                                 p_business_method_code     => l_bflow_method_code
37643                                ,p_business_class_code      => l_bflow_class_code
37644                                ,p_inherit_description_flag => l_inherit_desc_flag);
37645    END IF;
37646 
37647    --
37648    -- call analytical criteria
37649    --
37650    -- Inherited Analytical Criteria for business flow method of Prior Entry.
37651    --
37652    -- call description
37653    --
37654    -- No description or it is inherited.
37655    --
37656    -- call ADRs
37657    -- Bug 4922099
37658    --
37659    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37660         (NVL(l_actual_upg_option, 'N') = 'O') OR
37661         (NVL(l_enc_upg_option, 'N') = 'O')
37662       )
37663    THEN
37664    NULL;
37665    --
37666    --
37667    
37668    --
37669    --
37670    END IF;
37671    --
37672    -- Bug 4922099
37673    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37674           (NVL(l_enc_upg_option, 'N') = 'O')
37675         ) AND
37676         (l_bflow_method_code = 'PRIOR_ENTRY')
37677       )
37678    THEN
37679       IF
37680       --
37681       1 = 1
37682       --
37683       THEN
37684       xla_accounting_err_pkg.build_message
37685                                     (p_appli_s_name            => 'XLA'
37686                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37687                                     ,p_token_1                 => 'LINE_NUMBER'
37688                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37689                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37690                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37691                                                                              l_component_type
37692                                                                             ,l_component_code
37693                                                                             ,l_component_type_code
37694                                                                             ,l_component_appl_id
37695                                                                             ,l_amb_context_code
37696                                                                             ,l_entity_code
37697                                                                             ,l_event_class_code
37698                                                                            )
37699                                     ,p_token_3                 => 'OWNER'
37700                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37701                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37702                                                                           ,p_lookup_code    => l_component_type_code
37703                                                                          )
37704                                     ,p_token_4                 => 'PRODUCT_NAME'
37705                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37706                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37707                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37708                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37709                                     ,p_ae_header_id            =>  NULL
37710                                        );
37711 
37712         IF (C_LEVEL_ERROR>= g_log_level) THEN
37713                  trace
37714                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37715                       ,p_level    => C_LEVEL_ERROR
37716                       ,p_module   => l_log_module);
37717         END IF;
37718       END IF;
37719    END IF;
37720    --
37721    --
37722    ------------------------------------------------------------------------------------------------
37723    -- 4219869 Business Flow
37724    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37725    -- Prior Entry.  Currently, the following code is always generated.
37726    ------------------------------------------------------------------------------------------------
37727    -- No ValidateCurrentLine for business flow method of Prior Entry
37728 
37729    ------------------------------------------------------------------------------------
37730    -- 4219869 Business Flow
37731    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37732    ------------------------------------------------------------------------------------
37733    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37734 
37735    ----------------------------------------------------------------------------------
37736    -- 4219869 Business Flow
37737    -- Update journal entry status -- Need to generate this within IF <condition>
37738    ----------------------------------------------------------------------------------
37739    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37740          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37741          ,p_balance_type_code => l_balance_type_code
37742          );
37743 
37744    -------------------------------------------------------------------------------------------
37745    -- 4262811 - Generate the Accrual Reversal lines
37746    -------------------------------------------------------------------------------------------
37747    BEGIN
37748       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37749                               (g_array_event(p_event_id).array_value_num('header_index'));
37750       IF l_acc_rev_flag IS NULL THEN
37751          l_acc_rev_flag := 'N';
37752       END IF;
37753    EXCEPTION
37754       WHEN OTHERS THEN
37755          l_acc_rev_flag := 'N';
37756    END;
37757    --
37758    IF (l_acc_rev_flag = 'Y') THEN
37759 
37760        -- 4645092  ------------------------------------------------------------------------------
37761        -- To allow MPA report to determine if it should generate report process
37762        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37763        ------------------------------------------------------------------------------------------
37764 
37765        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37766        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37767 
37768        --
37769        -- Update the line information that should be overwritten
37770        --
37771        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37772                                          p_header_num   => 1);
37773        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37774 
37775        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37776 
37777        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37778           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37779        END IF;
37780 
37781       --
37782       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37783       --
37784       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37785           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37786       ELSE
37787           ---------------------------------------------------------------------------------------------------
37788           -- 4262811a Switch Sign
37789           ---------------------------------------------------------------------------------------------------
37790           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37791           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37792                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37793           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37794                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37795           -- 5132302
37796           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37797                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37798 
37799       END IF;
37800 
37801       -- 4955764
37802       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37803       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37804 
37805 
37806       XLA_AE_LINES_PKG.ValidateCurrentLine;
37807       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37808 
37809       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37810                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37811                ,p_balance_type_code => l_balance_type_code);
37812 
37813    END IF;
37814 
37815    -----------------------------------------------------------------------------------------
37816    -- 4262811 Multiperiod Accounting
37817    -----------------------------------------------------------------------------------------
37818      -- No MPA option is assigned.
37819 
37820 
37821 END IF;
37822 END IF;
37823 --
37824 
37825 --
37826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37827    trace
37828       (p_msg      => 'END of AcctLineType_70'
37829       ,p_level    => C_LEVEL_PROCEDURE
37830       ,p_module   => l_log_module);
37831 END IF;
37832 --
37833 EXCEPTION
37834   WHEN xla_exceptions_pkg.application_exception THEN
37835       RAISE;
37836   WHEN OTHERS THEN
37837        xla_exceptions_pkg.raise_message
37838            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_70');
37839 END AcctLineType_70;
37840 --
37841 
37842 ---------------------------------------
37843 --
37844 -- PRIVATE FUNCTION
37845 --         AcctLineType_71
37846 --
37847 ---------------------------------------
37848 PROCEDURE AcctLineType_71 (
37849   p_application_id        IN NUMBER
37850  ,p_event_id              IN NUMBER
37851  ,p_calculate_acctd_flag  IN VARCHAR2
37852  ,p_calculate_g_l_flag    IN VARCHAR2
37853  ,p_actual_flag           IN OUT VARCHAR2
37854  ,p_balance_type_code     OUT VARCHAR2
37855  ,p_gain_or_loss_ref      OUT VARCHAR2
37856  
37857 --Budget Account
37858  , p_source_9            IN NUMBER
37859 --Main Or Backing Code
37860  , p_source_13            IN VARCHAR2
37861 --Accounting Reversal Flag
37862  , p_source_15            IN VARCHAR2
37863 --Distribution Link Type
37864  , p_source_17            IN VARCHAR2
37865 --PO Distribution Identifier
37866  , p_source_19            IN NUMBER
37867 --Applied To Application Identifier
37868  , p_source_21            IN NUMBER
37869 --Applied To Distribution Link Type
37870  , p_source_22            IN VARCHAR2
37871 --Applied To Entity Code
37872  , p_source_23            IN VARCHAR2
37873 --Applied To Distribution Identifier 1
37874  , p_source_24            IN NUMBER
37875 --Applied To Header Identifier 1
37876  , p_source_25            IN NUMBER
37877 --Entered Amount
37878  , p_source_26            IN NUMBER
37879 --Currency Code
37880  , p_source_27            IN VARCHAR2
37881 --Accounted Amount
37882  , p_source_28            IN NUMBER
37883 --PO Encumbrance Upgrade Option
37884  , p_source_29            IN VARCHAR2
37885 --JFMIP Reference
37886  , p_source_31            IN VARCHAR2
37887 --PO Upgrade Encumbrance Type Identifier
37888  , p_source_32            IN NUMBER
37889 --PO Release Identifier
37890  , p_source_41            IN NUMBER
37891 )
37892 IS
37893 
37894 l_component_type              VARCHAR2(80);
37895 l_component_code              VARCHAR2(30);
37896 l_component_type_code         VARCHAR2(1);
37897 l_component_appl_id           INTEGER;
37898 l_amb_context_code            VARCHAR2(30);
37899 l_entity_code                 VARCHAR2(30);
37900 l_event_class_code            VARCHAR2(30);
37901 l_ae_header_id                NUMBER;
37902 l_event_type_code             VARCHAR2(30);
37903 l_line_definition_code        VARCHAR2(30);
37904 l_line_definition_owner_code  VARCHAR2(1);
37905 --
37906 -- adr variables
37907 l_segment                     VARCHAR2(30);
37908 l_ccid                        NUMBER;
37909 l_adr_transaction_coa_id      NUMBER;
37910 l_adr_accounting_coa_id       NUMBER;
37911 l_adr_flexfield_segment_code  VARCHAR2(30);
37912 l_adr_flex_value_set_id       NUMBER;
37913 l_adr_value_type_code         VARCHAR2(30);
37914 l_adr_value_combination_id    NUMBER;
37915 l_adr_value_segment_code      VARCHAR2(30);
37916 
37917 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37918 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37919 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37920 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37921 
37922 -- 4262811 Variables ------------------------------------------------------------------------------------------
37923 l_entered_amt_idx             NUMBER;
37924 l_accted_amt_idx              NUMBER;
37925 l_acc_rev_flag                VARCHAR2(1);
37926 l_accrual_line_num            NUMBER;
37927 l_tmp_amt                     NUMBER;
37928 l_acc_rev_natural_side_code   VARCHAR2(1);
37929 
37930 l_num_entries                 NUMBER;
37931 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37932 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37933 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37934 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37935 l_recog_line_1                NUMBER;
37936 l_recog_line_2                NUMBER;
37937 
37938 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37939 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37940 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37941 
37942 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37943 
37944 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37945 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37946 
37947 ---------------------------------------------------------------------------------------------------------------
37948 
37949 
37950 --
37951 -- bulk performance
37952 --
37953 l_balance_type_code           VARCHAR2(1);
37954 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37955 l_log_module                  VARCHAR2(240);
37956 
37957 --
37958 -- Upgrade strategy
37959 --
37960 l_actual_upg_option           VARCHAR2(1);
37961 l_enc_upg_option           VARCHAR2(1);
37962 
37963 --
37964 BEGIN
37965 --
37966 IF g_log_enabled THEN
37967       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
37968 END IF;
37969 --
37970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37971 
37972       trace
37973          (p_msg      => 'BEGIN of AcctLineType_71'
37974          ,p_level    => C_LEVEL_PROCEDURE
37975          ,p_module   => l_log_module);
37976 
37977 END IF;
37978 --
37979 l_component_type             := 'AMB_JLT';
37980 l_component_code             := 'FV_REL_REOPEN_FINAL_CLOSED_DR';
37981 l_component_type_code        := 'S';
37982 l_component_appl_id          :=  201;
37983 l_amb_context_code           := 'DEFAULT';
37984 l_entity_code                := 'RELEASE';
37985 l_event_class_code           := 'RELEASE';
37986 l_event_type_code            := 'RELEASE_ALL';
37987 l_line_definition_owner_code := 'S';
37988 l_line_definition_code       := 'FV_RELEASE_ALL';
37989 --
37990 l_balance_type_code          := 'A';
37991 l_segment                     := NULL;
37992 l_ccid                        := NULL;
37993 l_adr_transaction_coa_id      := NULL;
37994 l_adr_accounting_coa_id       := NULL;
37995 l_adr_flexfield_segment_code  := NULL;
37996 l_adr_flex_value_set_id       := NULL;
37997 l_adr_value_type_code         := NULL;
37998 l_adr_value_combination_id    := NULL;
37999 l_adr_value_segment_code      := NULL;
38000 
38001 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
38002 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
38003 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
38004 l_budgetary_control_flag     := 'Y';
38005 
38006 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38007 l_bflow_applied_to_amt       := NULL; -- 5132302
38008 l_entered_amt_idx            := NULL;          -- 4262811
38009 l_accted_amt_idx             := NULL;          -- 4262811
38010 l_acc_rev_flag               := NULL;          -- 4262811
38011 l_accrual_line_num           := NULL;          -- 4262811
38012 l_tmp_amt                    := NULL;          -- 4262811
38013 --
38014  
38015 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38016     l_balance_type_code <> 'B' THEN
38017 IF NVL(
38018 xla_ae_sources_pkg.GetSystemSourceChar(
38019    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38020  , p_source_type_code      => 'Y'
38021  , p_source_application_id =>  602
38022 ),'
38023 ') =  'RELEASE_REOPEN_FINAL_CLOSED' AND 
38024 NVL(p_source_13,'
38025 ') =  'M'
38026  THEN 
38027 
38028    --
38029    XLA_AE_LINES_PKG.SetNewLine;
38030 
38031    p_balance_type_code          := l_balance_type_code;
38032    -- set the flag so later we will know whether the gain loss line needs to be created
38033    
38034    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38035      p_actual_flag :='A';
38036    END IF;
38037 
38038    --
38039    -- bulk performance
38040    --
38041    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38042                                       p_header_num   => 0); -- 4262811
38043    --
38044    -- set accounting line options
38045    --
38046    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38047            p_natural_side_code          => 'D'
38048          , p_gain_or_loss_flag          => 'N'
38049          , p_gl_transfer_mode_code      => 'S'
38050          , p_acct_entry_type_code       => 'A'
38051          , p_switch_side_flag           => 'N'
38052          , p_merge_duplicate_code       => 'N'
38053          );
38054    --
38055    l_acc_rev_natural_side_code := 'C';  -- 4262811
38056    -- 
38057    --
38058    -- set accounting line type info
38059    --
38060    xla_ae_lines_pkg.SetAcctLineType
38061       (p_component_type             => l_component_type
38062       ,p_event_type_code            => l_event_type_code
38063       ,p_line_definition_owner_code => l_line_definition_owner_code
38064       ,p_line_definition_code       => l_line_definition_code
38065       ,p_accounting_line_code       => l_component_code
38066       ,p_accounting_line_type_code  => l_component_type_code
38067       ,p_accounting_line_appl_id    => l_component_appl_id
38068       ,p_amb_context_code           => l_amb_context_code
38069       ,p_entity_code                => l_entity_code
38070       ,p_event_class_code           => l_event_class_code);
38071    --
38072    -- set accounting class
38073    --
38074    xla_ae_lines_pkg.SetAcctClass(
38075            p_accounting_class_code  => 'PURCHASE_ORDER'
38076          , p_ae_header_id           => l_ae_header_id
38077          );
38078 
38079    --
38080    -- set rounding class
38081    --
38082    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38083                       'PURCHASE_ORDER';
38084 
38085    --
38086    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38087    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38088    --
38089    -- bulk performance
38090    --
38091    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38092 
38093    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38094       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38095 
38096    -- 4955764
38097    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38098       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38099 
38100    -- 4458381 Public Sector Enh
38101    
38102    --
38103    -- set accounting attributes for the line type
38104    --
38105    l_entered_amt_idx := 23;
38106    l_accted_amt_idx  := 25;
38107    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38108    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
38109    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
38110    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
38111    l_rec_acct_attrs.array_num_value(2)  := 
38112 xla_ae_sources_pkg.GetSystemSourceNum(
38113    p_source_code           => 'XLA_EVENT_APPL_ID'
38114  , p_source_type_code      => 'Y'
38115  , p_source_application_id =>  602
38116 );
38117    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
38118    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
38119    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
38120    l_rec_acct_attrs.array_char_value(4)  := 
38121 xla_ae_sources_pkg.GetSystemSourceChar(
38122    p_source_code           => 'XLA_ENTITY_CODE'
38123  , p_source_type_code      => 'Y'
38124  , p_source_application_id =>  602
38125 );
38126    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
38127    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
38128    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
38129    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
38130    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
38131    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
38132    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
38133    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
38134    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
38135    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
38136    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
38137    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
38138    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
38139    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
38140    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
38141    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
38142    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
38143    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
38144    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
38145    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
38146    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
38147    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
38148    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
38149    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
38150    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
38151    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
38152    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
38153    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
38154    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
38155    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
38156    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
38157    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
38158    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
38159    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
38160    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
38161    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
38162    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
38163    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
38164    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
38165    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
38166    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
38167    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
38168    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
38169    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
38170    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
38171    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
38172    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
38173    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
38174    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
38175    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
38176    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
38177    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
38178    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
38179    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
38180 
38181    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38182    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38183 
38184    ---------------------------------------------------------------------------------------------------------------
38185    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38186    ---------------------------------------------------------------------------------------------------------------
38187    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38188 
38189    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38190    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38191 
38192    IF xla_accounting_cache_pkg.GetValueChar
38193          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38194          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38195    AND l_bflow_method_code = 'PRIOR_ENTRY'
38196 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38197    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38198          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38199        )
38200    THEN
38201          xla_ae_lines_pkg.BflowUpgEntry
38202            (p_business_method_code    => l_bflow_method_code
38203            ,p_business_class_code     => l_bflow_class_code
38204            ,p_balance_type            => l_balance_type_code);
38205    ELSE
38206       NULL;
38207 XLA_AE_LINES_PKG.business_flow_validation(
38208                                 p_business_method_code     => l_bflow_method_code
38209                                ,p_business_class_code      => l_bflow_class_code
38210                                ,p_inherit_description_flag => l_inherit_desc_flag);
38211    END IF;
38212 
38213    --
38214    -- call analytical criteria
38215    --
38216    -- Inherited Analytical Criteria for business flow method of Prior Entry.
38217    --
38218    -- call description
38219    --
38220    -- No description or it is inherited.
38221    --
38222    -- call ADRs
38223    -- Bug 4922099
38224    --
38225    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38226         (NVL(l_actual_upg_option, 'N') = 'O') OR
38227         (NVL(l_enc_upg_option, 'N') = 'O')
38228       )
38229    THEN
38230    NULL;
38231    --
38232    --
38233    
38234    --
38235    --
38236    END IF;
38237    --
38238    -- Bug 4922099
38239    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38240           (NVL(l_enc_upg_option, 'N') = 'O')
38241         ) AND
38242         (l_bflow_method_code = 'PRIOR_ENTRY')
38243       )
38244    THEN
38245       IF
38246       --
38247       1 = 1
38248       --
38249       THEN
38250       xla_accounting_err_pkg.build_message
38251                                     (p_appli_s_name            => 'XLA'
38252                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38253                                     ,p_token_1                 => 'LINE_NUMBER'
38254                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38255                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38256                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38257                                                                              l_component_type
38258                                                                             ,l_component_code
38259                                                                             ,l_component_type_code
38260                                                                             ,l_component_appl_id
38261                                                                             ,l_amb_context_code
38262                                                                             ,l_entity_code
38263                                                                             ,l_event_class_code
38264                                                                            )
38265                                     ,p_token_3                 => 'OWNER'
38266                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38267                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38268                                                                           ,p_lookup_code    => l_component_type_code
38269                                                                          )
38270                                     ,p_token_4                 => 'PRODUCT_NAME'
38271                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38272                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38273                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38274                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38275                                     ,p_ae_header_id            =>  NULL
38276                                        );
38277 
38278         IF (C_LEVEL_ERROR>= g_log_level) THEN
38279                  trace
38280                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38281                       ,p_level    => C_LEVEL_ERROR
38282                       ,p_module   => l_log_module);
38283         END IF;
38284       END IF;
38285    END IF;
38286    --
38287    --
38288    ------------------------------------------------------------------------------------------------
38289    -- 4219869 Business Flow
38290    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38291    -- Prior Entry.  Currently, the following code is always generated.
38292    ------------------------------------------------------------------------------------------------
38293    -- No ValidateCurrentLine for business flow method of Prior Entry
38294 
38295    ------------------------------------------------------------------------------------
38296    -- 4219869 Business Flow
38297    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38298    ------------------------------------------------------------------------------------
38299    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38300 
38301    ----------------------------------------------------------------------------------
38302    -- 4219869 Business Flow
38303    -- Update journal entry status -- Need to generate this within IF <condition>
38304    ----------------------------------------------------------------------------------
38305    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38306          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38307          ,p_balance_type_code => l_balance_type_code
38308          );
38309 
38310    -------------------------------------------------------------------------------------------
38311    -- 4262811 - Generate the Accrual Reversal lines
38312    -------------------------------------------------------------------------------------------
38313    BEGIN
38314       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38315                               (g_array_event(p_event_id).array_value_num('header_index'));
38316       IF l_acc_rev_flag IS NULL THEN
38317          l_acc_rev_flag := 'N';
38318       END IF;
38319    EXCEPTION
38320       WHEN OTHERS THEN
38321          l_acc_rev_flag := 'N';
38322    END;
38323    --
38324    IF (l_acc_rev_flag = 'Y') THEN
38325 
38326        -- 4645092  ------------------------------------------------------------------------------
38327        -- To allow MPA report to determine if it should generate report process
38328        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38329        ------------------------------------------------------------------------------------------
38330 
38331        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38332        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38333 
38334        --
38335        -- Update the line information that should be overwritten
38336        --
38337        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38338                                          p_header_num   => 1);
38339        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38340 
38341        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38342 
38343        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38344           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38345        END IF;
38346 
38347       --
38348       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38349       --
38350       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38351           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38352       ELSE
38353           ---------------------------------------------------------------------------------------------------
38354           -- 4262811a Switch Sign
38355           ---------------------------------------------------------------------------------------------------
38356           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38357           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38358                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38359           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38360                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38361           -- 5132302
38362           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38363                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38364 
38365       END IF;
38366 
38367       -- 4955764
38368       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38369       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38370 
38371 
38372       XLA_AE_LINES_PKG.ValidateCurrentLine;
38373       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38374 
38375       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38376                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38377                ,p_balance_type_code => l_balance_type_code);
38378 
38379    END IF;
38380 
38381    -----------------------------------------------------------------------------------------
38382    -- 4262811 Multiperiod Accounting
38383    -----------------------------------------------------------------------------------------
38384      -- No MPA option is assigned.
38385 
38386 
38387 END IF;
38388 END IF;
38389 --
38390 
38391 --
38392 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38393    trace
38394       (p_msg      => 'END of AcctLineType_71'
38395       ,p_level    => C_LEVEL_PROCEDURE
38396       ,p_module   => l_log_module);
38397 END IF;
38398 --
38399 EXCEPTION
38400   WHEN xla_exceptions_pkg.application_exception THEN
38401       RAISE;
38402   WHEN OTHERS THEN
38403        xla_exceptions_pkg.raise_message
38404            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_71');
38405 END AcctLineType_71;
38406 --
38407 
38408 ---------------------------------------
38409 --
38410 -- PRIVATE FUNCTION
38411 --         AcctLineType_72
38412 --
38413 ---------------------------------------
38414 PROCEDURE AcctLineType_72 (
38415   p_application_id        IN NUMBER
38416  ,p_event_id              IN NUMBER
38417  ,p_calculate_acctd_flag  IN VARCHAR2
38418  ,p_calculate_g_l_flag    IN VARCHAR2
38419  ,p_actual_flag           IN OUT VARCHAR2
38420  ,p_balance_type_code     OUT VARCHAR2
38421  ,p_gain_or_loss_ref      OUT VARCHAR2
38422  
38423 --Journal entry Line Description
38424  , p_source_3            IN VARCHAR2
38425 --Budget Account
38426  , p_source_9            IN NUMBER
38427 --Main Or Backing Code
38428  , p_source_13            IN VARCHAR2
38429 --Accounting Reversal Flag
38430  , p_source_15            IN VARCHAR2
38431 --Distribution Link Type
38432  , p_source_17            IN VARCHAR2
38433 --PO Distribution Identifier
38434  , p_source_19            IN NUMBER
38435 --Applied To Application Identifier
38436  , p_source_21            IN NUMBER
38437 --Applied To Distribution Link Type
38438  , p_source_22            IN VARCHAR2
38439 --Applied To Entity Code
38440  , p_source_23            IN VARCHAR2
38441 --Applied To Distribution Identifier 1
38442  , p_source_24            IN NUMBER
38443 --Applied To Header Identifier 1
38444  , p_source_25            IN NUMBER
38445 --Entered Amount
38446  , p_source_26            IN NUMBER
38447 --Currency Code
38448  , p_source_27            IN VARCHAR2
38449 --Accounted Amount
38450  , p_source_28            IN NUMBER
38451 --PO Encumbrance Upgrade Option
38452  , p_source_29            IN VARCHAR2
38453 --JFMIP Reference
38454  , p_source_31            IN VARCHAR2
38455 --PO Upgrade Encumbrance Type Identifier
38456  , p_source_32            IN NUMBER
38457 --Currency Conversion Date
38458  , p_source_35            IN DATE
38459 --Currency Conversion Rate
38460  , p_source_36            IN NUMBER
38461 --Currency Conversion Type
38462  , p_source_37            IN VARCHAR2
38463 --PO Release Identifier
38464  , p_source_41            IN NUMBER
38465 )
38466 IS
38467 
38468 l_component_type              VARCHAR2(80);
38469 l_component_code              VARCHAR2(30);
38470 l_component_type_code         VARCHAR2(1);
38471 l_component_appl_id           INTEGER;
38472 l_amb_context_code            VARCHAR2(30);
38473 l_entity_code                 VARCHAR2(30);
38474 l_event_class_code            VARCHAR2(30);
38475 l_ae_header_id                NUMBER;
38476 l_event_type_code             VARCHAR2(30);
38477 l_line_definition_code        VARCHAR2(30);
38478 l_line_definition_owner_code  VARCHAR2(1);
38479 --
38480 -- adr variables
38481 l_segment                     VARCHAR2(30);
38482 l_ccid                        NUMBER;
38483 l_adr_transaction_coa_id      NUMBER;
38484 l_adr_accounting_coa_id       NUMBER;
38485 l_adr_flexfield_segment_code  VARCHAR2(30);
38486 l_adr_flex_value_set_id       NUMBER;
38487 l_adr_value_type_code         VARCHAR2(30);
38488 l_adr_value_combination_id    NUMBER;
38489 l_adr_value_segment_code      VARCHAR2(30);
38490 
38491 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38492 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38493 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38494 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38495 
38496 -- 4262811 Variables ------------------------------------------------------------------------------------------
38497 l_entered_amt_idx             NUMBER;
38498 l_accted_amt_idx              NUMBER;
38499 l_acc_rev_flag                VARCHAR2(1);
38500 l_accrual_line_num            NUMBER;
38501 l_tmp_amt                     NUMBER;
38502 l_acc_rev_natural_side_code   VARCHAR2(1);
38503 
38504 l_num_entries                 NUMBER;
38505 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38506 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38507 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38508 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38509 l_recog_line_1                NUMBER;
38510 l_recog_line_2                NUMBER;
38511 
38512 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38513 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38514 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38515 
38516 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38517 
38518 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38519 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38520 
38521 ---------------------------------------------------------------------------------------------------------------
38522 
38523 
38524 --
38525 -- bulk performance
38526 --
38527 l_balance_type_code           VARCHAR2(1);
38528 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38529 l_log_module                  VARCHAR2(240);
38530 
38531 --
38532 -- Upgrade strategy
38533 --
38534 l_actual_upg_option           VARCHAR2(1);
38535 l_enc_upg_option           VARCHAR2(1);
38536 
38537 --
38538 BEGIN
38539 --
38540 IF g_log_enabled THEN
38541       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
38542 END IF;
38543 --
38544 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38545 
38546       trace
38547          (p_msg      => 'BEGIN of AcctLineType_72'
38548          ,p_level    => C_LEVEL_PROCEDURE
38549          ,p_module   => l_log_module);
38550 
38551 END IF;
38552 --
38553 l_component_type             := 'AMB_JLT';
38554 l_component_code             := 'FV_REL_RESERVE_CR';
38555 l_component_type_code        := 'S';
38556 l_component_appl_id          :=  201;
38557 l_amb_context_code           := 'DEFAULT';
38558 l_entity_code                := 'RELEASE';
38559 l_event_class_code           := 'RELEASE';
38560 l_event_type_code            := 'RELEASE_ALL';
38561 l_line_definition_owner_code := 'S';
38562 l_line_definition_code       := 'FV_RELEASE_ALL';
38563 --
38564 l_balance_type_code          := 'A';
38565 l_segment                     := NULL;
38566 l_ccid                        := NULL;
38567 l_adr_transaction_coa_id      := NULL;
38568 l_adr_accounting_coa_id       := NULL;
38569 l_adr_flexfield_segment_code  := NULL;
38570 l_adr_flex_value_set_id       := NULL;
38571 l_adr_value_type_code         := NULL;
38572 l_adr_value_combination_id    := NULL;
38573 l_adr_value_segment_code      := NULL;
38574 
38575 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38576 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
38577 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38578 l_budgetary_control_flag     := 'Y';
38579 
38580 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38581 l_bflow_applied_to_amt       := NULL; -- 5132302
38582 l_entered_amt_idx            := NULL;          -- 4262811
38583 l_accted_amt_idx             := NULL;          -- 4262811
38584 l_acc_rev_flag               := NULL;          -- 4262811
38585 l_accrual_line_num           := NULL;          -- 4262811
38586 l_tmp_amt                    := NULL;          -- 4262811
38587 --
38588  
38589 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38590     l_balance_type_code <> 'B' THEN
38591 IF NVL(
38592 xla_ae_sources_pkg.GetSystemSourceChar(
38593    p_source_code           => 'XLA_EVENT_TYPE_CODE'
38594  , p_source_type_code      => 'Y'
38595  , p_source_application_id =>  602
38596 ),'
38597 ') =  'RELEASE_RESERVED' AND 
38598 NVL(p_source_13,'
38599 ') =  'M'
38600  THEN 
38601 
38602    --
38603    XLA_AE_LINES_PKG.SetNewLine;
38604 
38605    p_balance_type_code          := l_balance_type_code;
38606    -- set the flag so later we will know whether the gain loss line needs to be created
38607    
38608    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38609      p_actual_flag :='A';
38610    END IF;
38611 
38612    --
38613    -- bulk performance
38614    --
38615    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38616                                       p_header_num   => 0); -- 4262811
38617    --
38618    -- set accounting line options
38619    --
38620    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38621            p_natural_side_code          => 'C'
38622          , p_gain_or_loss_flag          => 'N'
38623          , p_gl_transfer_mode_code      => 'S'
38624          , p_acct_entry_type_code       => 'A'
38625          , p_switch_side_flag           => 'N'
38626          , p_merge_duplicate_code       => 'N'
38627          );
38628    --
38629    l_acc_rev_natural_side_code := 'D';  -- 4262811
38630    -- 
38631    --
38632    -- set accounting line type info
38633    --
38634    xla_ae_lines_pkg.SetAcctLineType
38635       (p_component_type             => l_component_type
38636       ,p_event_type_code            => l_event_type_code
38637       ,p_line_definition_owner_code => l_line_definition_owner_code
38638       ,p_line_definition_code       => l_line_definition_code
38639       ,p_accounting_line_code       => l_component_code
38640       ,p_accounting_line_type_code  => l_component_type_code
38641       ,p_accounting_line_appl_id    => l_component_appl_id
38642       ,p_amb_context_code           => l_amb_context_code
38643       ,p_entity_code                => l_entity_code
38644       ,p_event_class_code           => l_event_class_code);
38645    --
38646    -- set accounting class
38647    --
38648    xla_ae_lines_pkg.SetAcctClass(
38649            p_accounting_class_code  => 'PURCHASE_ORDER'
38650          , p_ae_header_id           => l_ae_header_id
38651          );
38652 
38653    --
38654    -- set rounding class
38655    --
38656    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38657                       'PURCHASE_ORDER';
38658 
38659    --
38660    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38661    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38662    --
38663    -- bulk performance
38664    --
38665    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38666 
38667    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38668       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38669 
38670    -- 4955764
38671    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38672       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38673 
38674    -- 4458381 Public Sector Enh
38675    
38676    --
38677    -- set accounting attributes for the line type
38678    --
38679    l_entered_amt_idx := 23;
38680    l_accted_amt_idx  := 28;
38681    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38682    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
38683    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
38684    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
38685    l_rec_acct_attrs.array_num_value(2)  := 
38686 xla_ae_sources_pkg.GetSystemSourceNum(
38687    p_source_code           => 'XLA_EVENT_APPL_ID'
38688  , p_source_type_code      => 'Y'
38689  , p_source_application_id =>  602
38690 );
38691    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
38692    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
38693    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
38694    l_rec_acct_attrs.array_char_value(4)  := 
38695 xla_ae_sources_pkg.GetSystemSourceChar(
38696    p_source_code           => 'XLA_ENTITY_CODE'
38697  , p_source_type_code      => 'Y'
38698  , p_source_application_id =>  602
38699 );
38700    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
38701    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
38702    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
38703    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
38704    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
38705    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
38706    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
38707    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
38708    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
38709    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
38710    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
38711    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
38712    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
38713    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
38714    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
38715    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
38716    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
38717    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
38718    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
38719    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
38720    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
38721    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
38722    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
38723    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
38724    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
38725    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
38726    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
38727    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
38728    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
38729    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
38730    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
38731    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
38732    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
38733    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
38734    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
38735    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
38736    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
38737    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
38738    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
38739    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
38740    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
38741    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
38742    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
38743    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
38744    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
38745    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
38746    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
38747    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
38748    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
38749    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
38750    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
38751    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
38752    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
38753    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
38754    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
38755    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_41);
38756    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
38757    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
38758    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
38759    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
38760 
38761    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38762    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38763 
38764    ---------------------------------------------------------------------------------------------------------------
38765    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38766    ---------------------------------------------------------------------------------------------------------------
38767    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38768 
38769    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38770    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38771 
38772    IF xla_accounting_cache_pkg.GetValueChar
38773          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38774          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38775    AND l_bflow_method_code = 'PRIOR_ENTRY'
38776 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38777    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38778          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38779        )
38780    THEN
38781          xla_ae_lines_pkg.BflowUpgEntry
38782            (p_business_method_code    => l_bflow_method_code
38783            ,p_business_class_code     => l_bflow_class_code
38784            ,p_balance_type            => l_balance_type_code);
38785    ELSE
38786       NULL;
38787 -- No business flow processing for business flow method of NONE.
38788    END IF;
38789 
38790    --
38791    -- call analytical criteria
38792    --
38793    
38794    --
38795    -- call description
38796    --
38797    
38798 xla_ae_lines_pkg.SetLineDescription(
38799    p_ae_header_id => l_ae_header_id
38800   ,p_description  => Description_2 (
38801      p_application_id         => p_application_id
38802    , p_ae_header_id           => l_ae_header_id 
38803 , p_source_3 => p_source_3
38804    )
38805 );
38806 
38807 
38808    --
38809    -- call ADRs
38810    -- Bug 4922099
38811    --
38812    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38813         (NVL(l_actual_upg_option, 'N') = 'O') OR
38814         (NVL(l_enc_upg_option, 'N') = 'O')
38815       )
38816    THEN
38817    NULL;
38818    --
38819    --
38820    
38821   l_ccid := AcctDerRule_9(
38822            p_application_id           => p_application_id
38823          , p_ae_header_id             => l_ae_header_id 
38824 , p_source_9 => p_source_9
38825          , x_transaction_coa_id       => l_adr_transaction_coa_id
38826          , x_accounting_coa_id        => l_adr_accounting_coa_id
38827          , x_value_type_code          => l_adr_value_type_code
38828          , p_side                     => 'NA'
38829    );
38830 
38831    xla_ae_lines_pkg.set_ccid(
38832     p_code_combination_id          => l_ccid
38833   , p_value_type_code              => l_adr_value_type_code
38834   , p_transaction_coa_id           => l_adr_transaction_coa_id
38835   , p_accounting_coa_id            => l_adr_accounting_coa_id
38836   , p_adr_code                     => 'FV_ACCOUNT_RULE'
38837   , p_adr_type_code                => 'S'
38838   , p_component_type               => l_component_type
38839   , p_component_code               => l_component_code
38840   , p_component_type_code          => l_component_type_code
38841   , p_component_appl_id            => l_component_appl_id
38842   , p_amb_context_code             => l_amb_context_code
38843   , p_side                         => 'NA'
38844   );
38845 
38846 
38847    l_segment := AcctDerRule_8(
38848            p_application_id           => p_application_id
38849          , p_ae_header_id             => l_ae_header_id 
38850          , x_transaction_coa_id       => l_adr_transaction_coa_id
38851          , x_accounting_coa_id        => l_adr_accounting_coa_id
38852          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
38853          , x_flex_value_set_id        => l_adr_flex_value_set_id
38854          , x_value_type_code          => l_adr_value_type_code
38855          , x_value_combination_id     => l_adr_value_combination_id
38856          , x_value_segment_code       => l_adr_value_segment_code
38857          , p_side                     => 'NA'
38858          , p_override_seg_flag        => 'Y'
38859    );
38860 
38861    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
38862 
38863       xla_ae_lines_pkg.set_segment(
38864           p_to_segment_code         => 'GL_ACCOUNT'
38865         , p_segment_value           => l_segment
38866         , p_from_segment_code       => l_adr_value_segment_code
38867         , p_from_combination_id     => l_adr_value_combination_id
38868         , p_value_type_code         => l_adr_value_type_code
38869         , p_transaction_coa_id      => l_adr_transaction_coa_id
38870         , p_accounting_coa_id       => l_adr_accounting_coa_id
38871         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
38872         , p_flex_value_set_id       => l_adr_flex_value_set_id
38873         , p_adr_code                => 'FV_48X101_PURCHASING'
38874         , p_adr_type_code           => 'S'
38875         , p_component_type          => l_component_type
38876         , p_component_code          => l_component_code
38877         , p_component_type_code     => l_component_type_code
38878         , p_component_appl_id       => l_component_appl_id
38879         , p_amb_context_code        => l_amb_context_code
38880         , p_entity_code             => 'RELEASE'
38881         , p_event_class_code        => 'RELEASE'
38882         , p_side                    => 'NA'
38883         );
38884 
38885   END IF;
38886 
38887    --
38888    --
38889    END IF;
38890    --
38891    -- Bug 4922099
38892    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38893           (NVL(l_enc_upg_option, 'N') = 'O')
38894         ) AND
38895         (l_bflow_method_code = 'PRIOR_ENTRY')
38896       )
38897    THEN
38898       IF
38899       --
38900       1 = 2
38901       --
38902       THEN
38903       xla_accounting_err_pkg.build_message
38904                                     (p_appli_s_name            => 'XLA'
38905                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38906                                     ,p_token_1                 => 'LINE_NUMBER'
38907                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38908                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38909                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38910                                                                              l_component_type
38911                                                                             ,l_component_code
38912                                                                             ,l_component_type_code
38913                                                                             ,l_component_appl_id
38914                                                                             ,l_amb_context_code
38915                                                                             ,l_entity_code
38916                                                                             ,l_event_class_code
38917                                                                            )
38918                                     ,p_token_3                 => 'OWNER'
38919                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38920                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38921                                                                           ,p_lookup_code    => l_component_type_code
38922                                                                          )
38923                                     ,p_token_4                 => 'PRODUCT_NAME'
38924                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38925                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38926                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38927                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38928                                     ,p_ae_header_id            =>  NULL
38929                                        );
38930 
38931         IF (C_LEVEL_ERROR>= g_log_level) THEN
38932                  trace
38933                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38934                       ,p_level    => C_LEVEL_ERROR
38935                       ,p_module   => l_log_module);
38936         END IF;
38937       END IF;
38938    END IF;
38939    --
38940    --
38941    ------------------------------------------------------------------------------------------------
38942    -- 4219869 Business Flow
38943    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38944    -- Prior Entry.  Currently, the following code is always generated.
38945    ------------------------------------------------------------------------------------------------
38946    XLA_AE_LINES_PKG.ValidateCurrentLine;
38947 
38948    ------------------------------------------------------------------------------------
38949    -- 4219869 Business Flow
38950    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38951    ------------------------------------------------------------------------------------
38952    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38953 
38954    ----------------------------------------------------------------------------------
38955    -- 4219869 Business Flow
38956    -- Update journal entry status -- Need to generate this within IF <condition>
38957    ----------------------------------------------------------------------------------
38958    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38959          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38960          ,p_balance_type_code => l_balance_type_code
38961          );
38962 
38963    -------------------------------------------------------------------------------------------
38964    -- 4262811 - Generate the Accrual Reversal lines
38965    -------------------------------------------------------------------------------------------
38966    BEGIN
38967       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38968                               (g_array_event(p_event_id).array_value_num('header_index'));
38969       IF l_acc_rev_flag IS NULL THEN
38970          l_acc_rev_flag := 'N';
38971       END IF;
38972    EXCEPTION
38973       WHEN OTHERS THEN
38974          l_acc_rev_flag := 'N';
38975    END;
38976    --
38977    IF (l_acc_rev_flag = 'Y') THEN
38978 
38979        -- 4645092  ------------------------------------------------------------------------------
38980        -- To allow MPA report to determine if it should generate report process
38981        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38982        ------------------------------------------------------------------------------------------
38983 
38984        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38985        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38986 
38987        --
38988        -- Update the line information that should be overwritten
38989        --
38990        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38991                                          p_header_num   => 1);
38992        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38993 
38994        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38995 
38996        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38997           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38998        END IF;
38999 
39000       --
39001       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39002       --
39003       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39004           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39005       ELSE
39006           ---------------------------------------------------------------------------------------------------
39007           -- 4262811a Switch Sign
39008           ---------------------------------------------------------------------------------------------------
39009           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39010           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39011                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39012           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39013                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39014           -- 5132302
39015           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39016                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39017 
39018       END IF;
39019 
39020       -- 4955764
39021       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39022       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39023 
39024 
39025       XLA_AE_LINES_PKG.ValidateCurrentLine;
39026       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39027 
39028       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39029                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39030                ,p_balance_type_code => l_balance_type_code);
39031 
39032    END IF;
39033 
39034    -----------------------------------------------------------------------------------------
39035    -- 4262811 Multiperiod Accounting
39036    -----------------------------------------------------------------------------------------
39037      -- No MPA option is assigned.
39038 
39039 
39040 END IF;
39041 END IF;
39042 --
39043 
39044 --
39045 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39046    trace
39047       (p_msg      => 'END of AcctLineType_72'
39048       ,p_level    => C_LEVEL_PROCEDURE
39049       ,p_module   => l_log_module);
39050 END IF;
39051 --
39052 EXCEPTION
39053   WHEN xla_exceptions_pkg.application_exception THEN
39054       RAISE;
39055   WHEN OTHERS THEN
39056        xla_exceptions_pkg.raise_message
39057            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_72');
39058 END AcctLineType_72;
39059 --
39060 
39061 ---------------------------------------
39062 --
39063 -- PRIVATE FUNCTION
39064 --         AcctLineType_73
39065 --
39066 ---------------------------------------
39067 PROCEDURE AcctLineType_73 (
39068   p_application_id        IN NUMBER
39069  ,p_event_id              IN NUMBER
39070  ,p_calculate_acctd_flag  IN VARCHAR2
39071  ,p_calculate_g_l_flag    IN VARCHAR2
39072  ,p_actual_flag           IN OUT VARCHAR2
39073  ,p_balance_type_code     OUT VARCHAR2
39074  ,p_gain_or_loss_ref      OUT VARCHAR2
39075  
39076 --Journal entry Line Description
39077  , p_source_3            IN VARCHAR2
39078 --Federal Fund Category
39079  , p_source_7            IN VARCHAR2
39080 --Federal Fund Expired Status
39081  , p_source_8            IN VARCHAR2
39082 --Budget Account
39083  , p_source_9            IN NUMBER
39084 --Main Or Backing Code
39085  , p_source_13            IN VARCHAR2
39086 --Accounting Reversal Flag
39087  , p_source_15            IN VARCHAR2
39088 --Distribution Link Type
39089  , p_source_17            IN VARCHAR2
39090 --PO Distribution Identifier
39091  , p_source_19            IN NUMBER
39092 --Applied To Application Identifier
39093  , p_source_21            IN NUMBER
39094 --Applied To Distribution Link Type
39095  , p_source_22            IN VARCHAR2
39096 --Applied To Entity Code
39097  , p_source_23            IN VARCHAR2
39098 --Applied To Distribution Identifier 1
39099  , p_source_24            IN NUMBER
39100 --Applied To Header Identifier 1
39101  , p_source_25            IN NUMBER
39102 --Entered Amount
39103  , p_source_26            IN NUMBER
39104 --Currency Code
39105  , p_source_27            IN VARCHAR2
39106 --Accounted Amount
39107  , p_source_28            IN NUMBER
39108 --PO Encumbrance Upgrade Option
39109  , p_source_29            IN VARCHAR2
39110 --JFMIP Reference
39111  , p_source_31            IN VARCHAR2
39112 --PO Upgrade Encumbrance Type Identifier
39113  , p_source_32            IN NUMBER
39114 --Currency Conversion Date
39115  , p_source_35            IN DATE
39116 --Currency Conversion Rate
39117  , p_source_36            IN NUMBER
39118 --Currency Conversion Type
39119  , p_source_37            IN VARCHAR2
39120 --PO Release Identifier
39121  , p_source_41            IN NUMBER
39122 )
39123 IS
39124 
39125 l_component_type              VARCHAR2(80);
39126 l_component_code              VARCHAR2(30);
39127 l_component_type_code         VARCHAR2(1);
39128 l_component_appl_id           INTEGER;
39129 l_amb_context_code            VARCHAR2(30);
39130 l_entity_code                 VARCHAR2(30);
39131 l_event_class_code            VARCHAR2(30);
39132 l_ae_header_id                NUMBER;
39133 l_event_type_code             VARCHAR2(30);
39134 l_line_definition_code        VARCHAR2(30);
39135 l_line_definition_owner_code  VARCHAR2(1);
39136 --
39137 -- adr variables
39138 l_segment                     VARCHAR2(30);
39139 l_ccid                        NUMBER;
39140 l_adr_transaction_coa_id      NUMBER;
39141 l_adr_accounting_coa_id       NUMBER;
39142 l_adr_flexfield_segment_code  VARCHAR2(30);
39143 l_adr_flex_value_set_id       NUMBER;
39144 l_adr_value_type_code         VARCHAR2(30);
39145 l_adr_value_combination_id    NUMBER;
39146 l_adr_value_segment_code      VARCHAR2(30);
39147 
39148 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39149 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39150 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39151 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39152 
39153 -- 4262811 Variables ------------------------------------------------------------------------------------------
39154 l_entered_amt_idx             NUMBER;
39155 l_accted_amt_idx              NUMBER;
39156 l_acc_rev_flag                VARCHAR2(1);
39157 l_accrual_line_num            NUMBER;
39158 l_tmp_amt                     NUMBER;
39159 l_acc_rev_natural_side_code   VARCHAR2(1);
39160 
39161 l_num_entries                 NUMBER;
39162 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39163 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39164 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39165 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39166 l_recog_line_1                NUMBER;
39167 l_recog_line_2                NUMBER;
39168 
39169 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39170 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39171 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39172 
39173 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39174 
39175 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39176 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39177 
39178 ---------------------------------------------------------------------------------------------------------------
39179 
39180 
39181 --
39182 -- bulk performance
39183 --
39184 l_balance_type_code           VARCHAR2(1);
39185 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39186 l_log_module                  VARCHAR2(240);
39187 
39188 --
39189 -- Upgrade strategy
39190 --
39191 l_actual_upg_option           VARCHAR2(1);
39192 l_enc_upg_option           VARCHAR2(1);
39193 
39194 --
39195 BEGIN
39196 --
39197 IF g_log_enabled THEN
39198       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
39199 END IF;
39200 --
39201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39202 
39203       trace
39204          (p_msg      => 'BEGIN of AcctLineType_73'
39205          ,p_level    => C_LEVEL_PROCEDURE
39206          ,p_module   => l_log_module);
39207 
39208 END IF;
39209 --
39210 l_component_type             := 'AMB_JLT';
39211 l_component_code             := 'FV_REL_RESERVE_DR';
39212 l_component_type_code        := 'S';
39213 l_component_appl_id          :=  201;
39214 l_amb_context_code           := 'DEFAULT';
39215 l_entity_code                := 'RELEASE';
39216 l_event_class_code           := 'RELEASE';
39217 l_event_type_code            := 'RELEASE_ALL';
39218 l_line_definition_owner_code := 'S';
39219 l_line_definition_code       := 'FV_RELEASE_ALL';
39220 --
39221 l_balance_type_code          := 'A';
39222 l_segment                     := NULL;
39223 l_ccid                        := NULL;
39224 l_adr_transaction_coa_id      := NULL;
39225 l_adr_accounting_coa_id       := NULL;
39226 l_adr_flexfield_segment_code  := NULL;
39227 l_adr_flex_value_set_id       := NULL;
39228 l_adr_value_type_code         := NULL;
39229 l_adr_value_combination_id    := NULL;
39230 l_adr_value_segment_code      := NULL;
39231 
39232 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39233 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
39234 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39235 l_budgetary_control_flag     := 'Y';
39236 
39237 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39238 l_bflow_applied_to_amt       := NULL; -- 5132302
39239 l_entered_amt_idx            := NULL;          -- 4262811
39240 l_accted_amt_idx             := NULL;          -- 4262811
39241 l_acc_rev_flag               := NULL;          -- 4262811
39242 l_accrual_line_num           := NULL;          -- 4262811
39243 l_tmp_amt                    := NULL;          -- 4262811
39244 --
39245  
39246 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39247     l_balance_type_code <> 'B' THEN
39248 IF NVL(
39249 xla_ae_sources_pkg.GetSystemSourceChar(
39250    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39251  , p_source_type_code      => 'Y'
39252  , p_source_application_id =>  602
39253 ),'
39254 ') =  'RELEASE_RESERVED' AND 
39255 NVL(p_source_13,'
39256 ') =  'M'
39257  THEN 
39258 
39259    --
39260    XLA_AE_LINES_PKG.SetNewLine;
39261 
39262    p_balance_type_code          := l_balance_type_code;
39263    -- set the flag so later we will know whether the gain loss line needs to be created
39264    
39265    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39266      p_actual_flag :='A';
39267    END IF;
39268 
39269    --
39270    -- bulk performance
39271    --
39272    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39273                                       p_header_num   => 0); -- 4262811
39274    --
39275    -- set accounting line options
39276    --
39277    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39278            p_natural_side_code          => 'D'
39279          , p_gain_or_loss_flag          => 'N'
39280          , p_gl_transfer_mode_code      => 'S'
39281          , p_acct_entry_type_code       => 'A'
39282          , p_switch_side_flag           => 'N'
39283          , p_merge_duplicate_code       => 'N'
39284          );
39285    --
39286    l_acc_rev_natural_side_code := 'C';  -- 4262811
39287    -- 
39288    --
39289    -- set accounting line type info
39290    --
39291    xla_ae_lines_pkg.SetAcctLineType
39292       (p_component_type             => l_component_type
39293       ,p_event_type_code            => l_event_type_code
39294       ,p_line_definition_owner_code => l_line_definition_owner_code
39295       ,p_line_definition_code       => l_line_definition_code
39296       ,p_accounting_line_code       => l_component_code
39297       ,p_accounting_line_type_code  => l_component_type_code
39298       ,p_accounting_line_appl_id    => l_component_appl_id
39299       ,p_amb_context_code           => l_amb_context_code
39300       ,p_entity_code                => l_entity_code
39301       ,p_event_class_code           => l_event_class_code);
39302    --
39303    -- set accounting class
39304    --
39305    xla_ae_lines_pkg.SetAcctClass(
39306            p_accounting_class_code  => 'PURCHASE_ORDER'
39307          , p_ae_header_id           => l_ae_header_id
39308          );
39309 
39310    --
39311    -- set rounding class
39312    --
39313    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39314                       'PURCHASE_ORDER';
39315 
39316    --
39317    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39318    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39319    --
39320    -- bulk performance
39321    --
39322    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39323 
39324    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39325       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39326 
39327    -- 4955764
39328    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39329       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39330 
39331    -- 4458381 Public Sector Enh
39332    
39333    --
39334    -- set accounting attributes for the line type
39335    --
39336    l_entered_amt_idx := 23;
39337    l_accted_amt_idx  := 28;
39338    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39339    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
39340    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
39341    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
39342    l_rec_acct_attrs.array_num_value(2)  := 
39343 xla_ae_sources_pkg.GetSystemSourceNum(
39344    p_source_code           => 'XLA_EVENT_APPL_ID'
39345  , p_source_type_code      => 'Y'
39346  , p_source_application_id =>  602
39347 );
39348    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
39349    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
39350    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
39351    l_rec_acct_attrs.array_char_value(4)  := 
39352 xla_ae_sources_pkg.GetSystemSourceChar(
39353    p_source_code           => 'XLA_ENTITY_CODE'
39354  , p_source_type_code      => 'Y'
39355  , p_source_application_id =>  602
39356 );
39357    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
39358    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
39359    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
39360    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
39361    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
39362    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
39363    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
39364    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
39365    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
39366    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
39367    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
39368    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
39369    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
39370    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
39371    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
39372    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
39373    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
39374    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
39375    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
39376    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
39377    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
39378    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
39379    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
39380    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
39381    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
39382    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
39383    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
39384    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
39385    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
39386    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
39387    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
39388    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
39389    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
39390    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
39391    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
39392    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
39393    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
39394    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
39395    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
39396    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
39397    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
39398    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
39399    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
39400    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
39401    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
39402    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
39403    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
39404    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
39405    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
39406    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
39407    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
39408    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
39409    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
39410    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
39411    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
39412    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_41);
39413    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
39414    l_rec_acct_attrs.array_num_value(33)  := p_source_32;
39415    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
39416    l_rec_acct_attrs.array_num_value(34)  := p_source_32;
39417 
39418    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39419    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39420 
39421    ---------------------------------------------------------------------------------------------------------------
39422    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39423    ---------------------------------------------------------------------------------------------------------------
39424    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39425 
39426    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39427    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39428 
39429    IF xla_accounting_cache_pkg.GetValueChar
39430          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39431          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39432    AND l_bflow_method_code = 'PRIOR_ENTRY'
39433 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39434    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39435          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39436        )
39437    THEN
39438          xla_ae_lines_pkg.BflowUpgEntry
39439            (p_business_method_code    => l_bflow_method_code
39440            ,p_business_class_code     => l_bflow_class_code
39441            ,p_balance_type            => l_balance_type_code);
39442    ELSE
39443       NULL;
39444 -- No business flow processing for business flow method of NONE.
39445    END IF;
39446 
39447    --
39448    -- call analytical criteria
39449    --
39450    
39451    --
39452    -- call description
39453    --
39454    
39455 xla_ae_lines_pkg.SetLineDescription(
39456    p_ae_header_id => l_ae_header_id
39457   ,p_description  => Description_2 (
39458      p_application_id         => p_application_id
39459    , p_ae_header_id           => l_ae_header_id 
39460 , p_source_3 => p_source_3
39461    )
39462 );
39463 
39464 
39465    --
39466    -- call ADRs
39467    -- Bug 4922099
39468    --
39469    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39470         (NVL(l_actual_upg_option, 'N') = 'O') OR
39471         (NVL(l_enc_upg_option, 'N') = 'O')
39472       )
39473    THEN
39474    NULL;
39475    --
39476    --
39477    
39478   l_ccid := AcctDerRule_9(
39479            p_application_id           => p_application_id
39480          , p_ae_header_id             => l_ae_header_id 
39481 , p_source_9 => p_source_9
39482          , x_transaction_coa_id       => l_adr_transaction_coa_id
39483          , x_accounting_coa_id        => l_adr_accounting_coa_id
39484          , x_value_type_code          => l_adr_value_type_code
39485          , p_side                     => 'NA'
39486    );
39487 
39488    xla_ae_lines_pkg.set_ccid(
39489     p_code_combination_id          => l_ccid
39490   , p_value_type_code              => l_adr_value_type_code
39491   , p_transaction_coa_id           => l_adr_transaction_coa_id
39492   , p_accounting_coa_id            => l_adr_accounting_coa_id
39493   , p_adr_code                     => 'FV_ACCOUNT_RULE'
39494   , p_adr_type_code                => 'S'
39495   , p_component_type               => l_component_type
39496   , p_component_code               => l_component_code
39497   , p_component_type_code          => l_component_type_code
39498   , p_component_appl_id            => l_component_appl_id
39499   , p_amb_context_code             => l_amb_context_code
39500   , p_side                         => 'NA'
39501   );
39502 
39503 
39504    l_segment := AcctDerRule_5(
39505            p_application_id           => p_application_id
39506          , p_ae_header_id             => l_ae_header_id 
39507 , p_source_7 => p_source_7
39508 , p_source_8 => p_source_8
39509          , x_transaction_coa_id       => l_adr_transaction_coa_id
39510          , x_accounting_coa_id        => l_adr_accounting_coa_id
39511          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
39512          , x_flex_value_set_id        => l_adr_flex_value_set_id
39513          , x_value_type_code          => l_adr_value_type_code
39514          , x_value_combination_id     => l_adr_value_combination_id
39515          , x_value_segment_code       => l_adr_value_segment_code
39516          , p_side                     => 'NA'
39517          , p_override_seg_flag        => 'Y'
39518    );
39519 
39520    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
39521 
39522       xla_ae_lines_pkg.set_segment(
39523           p_to_segment_code         => 'GL_ACCOUNT'
39524         , p_segment_value           => l_segment
39525         , p_from_segment_code       => l_adr_value_segment_code
39526         , p_from_combination_id     => l_adr_value_combination_id
39527         , p_value_type_code         => l_adr_value_type_code
39528         , p_transaction_coa_id      => l_adr_transaction_coa_id
39529         , p_accounting_coa_id       => l_adr_accounting_coa_id
39530         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
39531         , p_flex_value_set_id       => l_adr_flex_value_set_id
39532         , p_adr_code                => 'FV_46X002'
39533         , p_adr_type_code           => 'S'
39534         , p_component_type          => l_component_type
39535         , p_component_code          => l_component_code
39536         , p_component_type_code     => l_component_type_code
39537         , p_component_appl_id       => l_component_appl_id
39538         , p_amb_context_code        => l_amb_context_code
39539         , p_entity_code             => 'RELEASE'
39540         , p_event_class_code        => 'RELEASE'
39541         , p_side                    => 'NA'
39542         );
39543 
39544   END IF;
39545 
39546    --
39547    --
39548    END IF;
39549    --
39550    -- Bug 4922099
39551    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39552           (NVL(l_enc_upg_option, 'N') = 'O')
39553         ) AND
39554         (l_bflow_method_code = 'PRIOR_ENTRY')
39555       )
39556    THEN
39557       IF
39558       --
39559       1 = 2
39560       --
39561       THEN
39562       xla_accounting_err_pkg.build_message
39563                                     (p_appli_s_name            => 'XLA'
39564                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39565                                     ,p_token_1                 => 'LINE_NUMBER'
39566                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39567                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39568                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39569                                                                              l_component_type
39570                                                                             ,l_component_code
39571                                                                             ,l_component_type_code
39572                                                                             ,l_component_appl_id
39573                                                                             ,l_amb_context_code
39574                                                                             ,l_entity_code
39575                                                                             ,l_event_class_code
39576                                                                            )
39577                                     ,p_token_3                 => 'OWNER'
39578                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39579                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39580                                                                           ,p_lookup_code    => l_component_type_code
39581                                                                          )
39582                                     ,p_token_4                 => 'PRODUCT_NAME'
39583                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39584                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39585                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39586                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39587                                     ,p_ae_header_id            =>  NULL
39588                                        );
39589 
39590         IF (C_LEVEL_ERROR>= g_log_level) THEN
39591                  trace
39592                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39593                       ,p_level    => C_LEVEL_ERROR
39594                       ,p_module   => l_log_module);
39595         END IF;
39596       END IF;
39597    END IF;
39598    --
39599    --
39600    ------------------------------------------------------------------------------------------------
39601    -- 4219869 Business Flow
39602    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39603    -- Prior Entry.  Currently, the following code is always generated.
39604    ------------------------------------------------------------------------------------------------
39605    XLA_AE_LINES_PKG.ValidateCurrentLine;
39606 
39607    ------------------------------------------------------------------------------------
39608    -- 4219869 Business Flow
39609    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39610    ------------------------------------------------------------------------------------
39611    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39612 
39613    ----------------------------------------------------------------------------------
39614    -- 4219869 Business Flow
39615    -- Update journal entry status -- Need to generate this within IF <condition>
39616    ----------------------------------------------------------------------------------
39617    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39618          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39619          ,p_balance_type_code => l_balance_type_code
39620          );
39621 
39622    -------------------------------------------------------------------------------------------
39623    -- 4262811 - Generate the Accrual Reversal lines
39624    -------------------------------------------------------------------------------------------
39625    BEGIN
39626       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39627                               (g_array_event(p_event_id).array_value_num('header_index'));
39628       IF l_acc_rev_flag IS NULL THEN
39629          l_acc_rev_flag := 'N';
39630       END IF;
39631    EXCEPTION
39632       WHEN OTHERS THEN
39633          l_acc_rev_flag := 'N';
39634    END;
39635    --
39636    IF (l_acc_rev_flag = 'Y') THEN
39637 
39638        -- 4645092  ------------------------------------------------------------------------------
39639        -- To allow MPA report to determine if it should generate report process
39640        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39641        ------------------------------------------------------------------------------------------
39642 
39643        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39644        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39645 
39646        --
39647        -- Update the line information that should be overwritten
39648        --
39649        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39650                                          p_header_num   => 1);
39651        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39652 
39653        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39654 
39655        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39656           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39657        END IF;
39658 
39659       --
39660       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39661       --
39662       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39663           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39664       ELSE
39665           ---------------------------------------------------------------------------------------------------
39666           -- 4262811a Switch Sign
39667           ---------------------------------------------------------------------------------------------------
39668           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39669           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39670                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39671           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39672                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39673           -- 5132302
39674           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39675                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39676 
39677       END IF;
39678 
39679       -- 4955764
39680       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39681       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39682 
39683 
39684       XLA_AE_LINES_PKG.ValidateCurrentLine;
39685       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39686 
39687       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39688                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39689                ,p_balance_type_code => l_balance_type_code);
39690 
39691    END IF;
39692 
39693    -----------------------------------------------------------------------------------------
39694    -- 4262811 Multiperiod Accounting
39695    -----------------------------------------------------------------------------------------
39696      -- No MPA option is assigned.
39697 
39698 
39699 END IF;
39700 END IF;
39701 --
39702 
39703 --
39704 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39705    trace
39706       (p_msg      => 'END of AcctLineType_73'
39707       ,p_level    => C_LEVEL_PROCEDURE
39708       ,p_module   => l_log_module);
39709 END IF;
39710 --
39711 EXCEPTION
39712   WHEN xla_exceptions_pkg.application_exception THEN
39713       RAISE;
39714   WHEN OTHERS THEN
39715        xla_exceptions_pkg.raise_message
39716            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_73');
39717 END AcctLineType_73;
39718 --
39719 
39720 ---------------------------------------
39721 --
39722 -- PRIVATE FUNCTION
39723 --         AcctLineType_74
39724 --
39725 ---------------------------------------
39726 PROCEDURE AcctLineType_74 (
39727   p_application_id        IN NUMBER
39728  ,p_event_id              IN NUMBER
39729  ,p_calculate_acctd_flag  IN VARCHAR2
39730  ,p_calculate_g_l_flag    IN VARCHAR2
39731  ,p_actual_flag           IN OUT VARCHAR2
39732  ,p_balance_type_code     OUT VARCHAR2
39733  ,p_gain_or_loss_ref      OUT VARCHAR2
39734  
39735 --Federal Fund Category
39736  , p_source_7            IN VARCHAR2
39737 --Federal Fund Expired Status
39738  , p_source_8            IN VARCHAR2
39739 --Budget Account
39740  , p_source_9            IN NUMBER
39741 --Main Or Backing Code
39742  , p_source_13            IN VARCHAR2
39743 --Accounting Reversal Flag
39744  , p_source_15            IN VARCHAR2
39745 --Distribution Link Type
39746  , p_source_17            IN VARCHAR2
39747 --PO Distribution Identifier
39748  , p_source_19            IN NUMBER
39749 --Applied To Application Identifier
39750  , p_source_21            IN NUMBER
39751 --Applied To Distribution Link Type
39752  , p_source_22            IN VARCHAR2
39753 --Applied To Entity Code
39754  , p_source_23            IN VARCHAR2
39755 --Applied To Distribution Identifier 1
39756  , p_source_24            IN NUMBER
39757 --Applied To Header Identifier 1
39758  , p_source_25            IN NUMBER
39759 --Entered Amount
39760  , p_source_26            IN NUMBER
39761 --Currency Code
39762  , p_source_27            IN VARCHAR2
39763 --Accounted Amount
39764  , p_source_28            IN NUMBER
39765 --PO Encumbrance Upgrade Option
39766  , p_source_29            IN VARCHAR2
39767 --JFMIP Reference
39768  , p_source_31            IN VARCHAR2
39769 --PO Upgrade Encumbrance Type Identifier
39770  , p_source_32            IN NUMBER
39771 --PO Release Identifier
39772  , p_source_41            IN NUMBER
39773 )
39774 IS
39775 
39776 l_component_type              VARCHAR2(80);
39777 l_component_code              VARCHAR2(30);
39778 l_component_type_code         VARCHAR2(1);
39779 l_component_appl_id           INTEGER;
39780 l_amb_context_code            VARCHAR2(30);
39781 l_entity_code                 VARCHAR2(30);
39782 l_event_class_code            VARCHAR2(30);
39783 l_ae_header_id                NUMBER;
39784 l_event_type_code             VARCHAR2(30);
39785 l_line_definition_code        VARCHAR2(30);
39786 l_line_definition_owner_code  VARCHAR2(1);
39787 --
39788 -- adr variables
39789 l_segment                     VARCHAR2(30);
39790 l_ccid                        NUMBER;
39791 l_adr_transaction_coa_id      NUMBER;
39792 l_adr_accounting_coa_id       NUMBER;
39793 l_adr_flexfield_segment_code  VARCHAR2(30);
39794 l_adr_flex_value_set_id       NUMBER;
39795 l_adr_value_type_code         VARCHAR2(30);
39796 l_adr_value_combination_id    NUMBER;
39797 l_adr_value_segment_code      VARCHAR2(30);
39798 
39799 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39800 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39801 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39802 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39803 
39804 -- 4262811 Variables ------------------------------------------------------------------------------------------
39805 l_entered_amt_idx             NUMBER;
39806 l_accted_amt_idx              NUMBER;
39807 l_acc_rev_flag                VARCHAR2(1);
39808 l_accrual_line_num            NUMBER;
39809 l_tmp_amt                     NUMBER;
39810 l_acc_rev_natural_side_code   VARCHAR2(1);
39811 
39812 l_num_entries                 NUMBER;
39813 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39814 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39815 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39816 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39817 l_recog_line_1                NUMBER;
39818 l_recog_line_2                NUMBER;
39819 
39820 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39821 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39822 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39823 
39824 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39825 
39826 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39827 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39828 
39829 ---------------------------------------------------------------------------------------------------------------
39830 
39831 
39832 --
39833 -- bulk performance
39834 --
39835 l_balance_type_code           VARCHAR2(1);
39836 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39837 l_log_module                  VARCHAR2(240);
39838 
39839 --
39840 -- Upgrade strategy
39841 --
39842 l_actual_upg_option           VARCHAR2(1);
39843 l_enc_upg_option           VARCHAR2(1);
39844 
39845 --
39846 BEGIN
39847 --
39848 IF g_log_enabled THEN
39849       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
39850 END IF;
39851 --
39852 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39853 
39854       trace
39855          (p_msg      => 'BEGIN of AcctLineType_74'
39856          ,p_level    => C_LEVEL_PROCEDURE
39857          ,p_module   => l_log_module);
39858 
39859 END IF;
39860 --
39861 l_component_type             := 'AMB_JLT';
39862 l_component_code             := 'FV_REL_REVERSE_CR';
39863 l_component_type_code        := 'S';
39864 l_component_appl_id          :=  201;
39865 l_amb_context_code           := 'DEFAULT';
39866 l_entity_code                := 'RELEASE';
39867 l_event_class_code           := 'RELEASE';
39868 l_event_type_code            := 'RELEASE_ALL';
39869 l_line_definition_owner_code := 'S';
39870 l_line_definition_code       := 'FV_RELEASE_ALL';
39871 --
39872 l_balance_type_code          := 'A';
39873 l_segment                     := NULL;
39874 l_ccid                        := NULL;
39875 l_adr_transaction_coa_id      := NULL;
39876 l_adr_accounting_coa_id       := NULL;
39877 l_adr_flexfield_segment_code  := NULL;
39878 l_adr_flex_value_set_id       := NULL;
39879 l_adr_value_type_code         := NULL;
39880 l_adr_value_combination_id    := NULL;
39881 l_adr_value_segment_code      := NULL;
39882 
39883 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
39884 l_bflow_class_code           := 'FV_PO_DR';    -- 4219869 Business Flow
39885 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
39886 l_budgetary_control_flag     := 'Y';
39887 
39888 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39889 l_bflow_applied_to_amt       := NULL; -- 5132302
39890 l_entered_amt_idx            := NULL;          -- 4262811
39891 l_accted_amt_idx             := NULL;          -- 4262811
39892 l_acc_rev_flag               := NULL;          -- 4262811
39893 l_accrual_line_num           := NULL;          -- 4262811
39894 l_tmp_amt                    := NULL;          -- 4262811
39895 --
39896  
39897 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39898     l_balance_type_code <> 'B' THEN
39899 IF (NVL(
39900 xla_ae_sources_pkg.GetSystemSourceChar(
39901    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39902  , p_source_type_code      => 'Y'
39903  , p_source_application_id =>  602
39904 ),'
39905 ') =  'RELEASE_REJECTED' OR 
39906 NVL(
39907 xla_ae_sources_pkg.GetSystemSourceChar(
39908    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39909  , p_source_type_code      => 'Y'
39910  , p_source_application_id =>  602
39911 ),'
39912 ') =  'RELEASE_UNRESERVED' OR 
39913 NVL(
39914 xla_ae_sources_pkg.GetSystemSourceChar(
39915    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39916  , p_source_type_code      => 'Y'
39917  , p_source_application_id =>  602
39918 ),'
39919 ') =  'RELEASE_INV_CANCELLED' OR 
39920 NVL(
39921 xla_ae_sources_pkg.GetSystemSourceChar(
39922    p_source_code           => 'XLA_EVENT_TYPE_CODE'
39923  , p_source_type_code      => 'Y'
39924  , p_source_application_id =>  602
39925 ),'
39926 ') =  'RELEASE_FINAL_CLOSED') AND 
39927 NVL(p_source_13,'
39928 ') =  'M'
39929  THEN 
39930 
39931    --
39932    XLA_AE_LINES_PKG.SetNewLine;
39933 
39934    p_balance_type_code          := l_balance_type_code;
39935    -- set the flag so later we will know whether the gain loss line needs to be created
39936    
39937    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39938      p_actual_flag :='A';
39939    END IF;
39940 
39941    --
39942    -- bulk performance
39943    --
39944    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39945                                       p_header_num   => 0); -- 4262811
39946    --
39947    -- set accounting line options
39948    --
39949    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39950            p_natural_side_code          => 'C'
39951          , p_gain_or_loss_flag          => 'N'
39952          , p_gl_transfer_mode_code      => 'S'
39953          , p_acct_entry_type_code       => 'A'
39954          , p_switch_side_flag           => 'N'
39955          , p_merge_duplicate_code       => 'N'
39956          );
39957    --
39958    l_acc_rev_natural_side_code := 'D';  -- 4262811
39959    -- 
39960    --
39961    -- set accounting line type info
39962    --
39963    xla_ae_lines_pkg.SetAcctLineType
39964       (p_component_type             => l_component_type
39965       ,p_event_type_code            => l_event_type_code
39966       ,p_line_definition_owner_code => l_line_definition_owner_code
39967       ,p_line_definition_code       => l_line_definition_code
39968       ,p_accounting_line_code       => l_component_code
39969       ,p_accounting_line_type_code  => l_component_type_code
39970       ,p_accounting_line_appl_id    => l_component_appl_id
39971       ,p_amb_context_code           => l_amb_context_code
39972       ,p_entity_code                => l_entity_code
39973       ,p_event_class_code           => l_event_class_code);
39974    --
39975    -- set accounting class
39976    --
39977    xla_ae_lines_pkg.SetAcctClass(
39978            p_accounting_class_code  => 'PURCHASE_ORDER'
39979          , p_ae_header_id           => l_ae_header_id
39980          );
39981 
39982    --
39983    -- set rounding class
39984    --
39985    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39986                       'PURCHASE_ORDER';
39987 
39988    --
39989    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39990    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39991    --
39992    -- bulk performance
39993    --
39994    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39995 
39996    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39997       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39998 
39999    -- 4955764
40000    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40001       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40002 
40003    -- 4458381 Public Sector Enh
40004    
40005    --
40006    -- set accounting attributes for the line type
40007    --
40008    l_entered_amt_idx := 23;
40009    l_accted_amt_idx  := 25;
40010    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40011    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
40012    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
40013    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
40014    l_rec_acct_attrs.array_num_value(2)  := 
40015 xla_ae_sources_pkg.GetSystemSourceNum(
40016    p_source_code           => 'XLA_EVENT_APPL_ID'
40017  , p_source_type_code      => 'Y'
40018  , p_source_application_id =>  602
40019 );
40020    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
40021    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
40022    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
40023    l_rec_acct_attrs.array_char_value(4)  := 
40024 xla_ae_sources_pkg.GetSystemSourceChar(
40025    p_source_code           => 'XLA_ENTITY_CODE'
40026  , p_source_type_code      => 'Y'
40027  , p_source_application_id =>  602
40028 );
40029    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
40030    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
40031    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
40032    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
40033    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
40034    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
40035    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
40036    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
40037    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
40038    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
40039    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
40040    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
40041    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
40042    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
40043    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
40044    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
40045    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
40046    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
40047    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
40048    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
40049    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
40050    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
40051    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
40052    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
40053    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
40054    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
40055    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
40056    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
40057    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
40058    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
40059    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
40060    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
40061    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
40062    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
40063    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
40064    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
40065    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
40066    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
40067    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
40068    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
40069    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
40070    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
40071    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
40072    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
40073    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
40074    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
40075    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
40076    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
40077    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
40078    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
40079    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
40080    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
40081    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
40082    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
40083 
40084    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40085    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40086 
40087    ---------------------------------------------------------------------------------------------------------------
40088    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40089    ---------------------------------------------------------------------------------------------------------------
40090    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40091 
40092    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40093    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40094 
40095    IF xla_accounting_cache_pkg.GetValueChar
40096          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40097          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40098    AND l_bflow_method_code = 'PRIOR_ENTRY'
40099 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40100    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40101          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40102        )
40103    THEN
40104          xla_ae_lines_pkg.BflowUpgEntry
40105            (p_business_method_code    => l_bflow_method_code
40106            ,p_business_class_code     => l_bflow_class_code
40107            ,p_balance_type            => l_balance_type_code);
40108    ELSE
40109       NULL;
40110 XLA_AE_LINES_PKG.business_flow_validation(
40111                                 p_business_method_code     => l_bflow_method_code
40112                                ,p_business_class_code      => l_bflow_class_code
40113                                ,p_inherit_description_flag => l_inherit_desc_flag);
40114    END IF;
40115 
40116    --
40117    -- call analytical criteria
40118    --
40119    -- Inherited Analytical Criteria for business flow method of Prior Entry.
40120    --
40121    -- call description
40122    --
40123    -- No description or it is inherited.
40124    --
40125    -- call ADRs
40126    -- Bug 4922099
40127    --
40128    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40129         (NVL(l_actual_upg_option, 'N') = 'O') OR
40130         (NVL(l_enc_upg_option, 'N') = 'O')
40131       )
40132    THEN
40133    NULL;
40134    --
40135    --
40136    
40137   l_ccid := AcctDerRule_9(
40138            p_application_id           => p_application_id
40139          , p_ae_header_id             => l_ae_header_id 
40140 , p_source_9 => p_source_9
40141          , x_transaction_coa_id       => l_adr_transaction_coa_id
40142          , x_accounting_coa_id        => l_adr_accounting_coa_id
40143          , x_value_type_code          => l_adr_value_type_code
40144          , p_side                     => 'NA'
40145    );
40146 
40147    xla_ae_lines_pkg.set_ccid(
40148     p_code_combination_id          => l_ccid
40149   , p_value_type_code              => l_adr_value_type_code
40150   , p_transaction_coa_id           => l_adr_transaction_coa_id
40151   , p_accounting_coa_id            => l_adr_accounting_coa_id
40152   , p_adr_code                     => 'FV_ACCOUNT_RULE'
40153   , p_adr_type_code                => 'S'
40154   , p_component_type               => l_component_type
40155   , p_component_code               => l_component_code
40156   , p_component_type_code          => l_component_type_code
40157   , p_component_appl_id            => l_component_appl_id
40158   , p_amb_context_code             => l_amb_context_code
40159   , p_side                         => 'NA'
40160   );
40161 
40162 
40163    l_segment := AcctDerRule_5(
40164            p_application_id           => p_application_id
40165          , p_ae_header_id             => l_ae_header_id 
40166 , p_source_7 => p_source_7
40167 , p_source_8 => p_source_8
40168          , x_transaction_coa_id       => l_adr_transaction_coa_id
40169          , x_accounting_coa_id        => l_adr_accounting_coa_id
40170          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
40171          , x_flex_value_set_id        => l_adr_flex_value_set_id
40172          , x_value_type_code          => l_adr_value_type_code
40173          , x_value_combination_id     => l_adr_value_combination_id
40174          , x_value_segment_code       => l_adr_value_segment_code
40175          , p_side                     => 'NA'
40176          , p_override_seg_flag        => 'Y'
40177    );
40178 
40179    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
40180 
40181       xla_ae_lines_pkg.set_segment(
40182           p_to_segment_code         => 'GL_ACCOUNT'
40183         , p_segment_value           => l_segment
40184         , p_from_segment_code       => l_adr_value_segment_code
40185         , p_from_combination_id     => l_adr_value_combination_id
40186         , p_value_type_code         => l_adr_value_type_code
40187         , p_transaction_coa_id      => l_adr_transaction_coa_id
40188         , p_accounting_coa_id       => l_adr_accounting_coa_id
40189         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
40190         , p_flex_value_set_id       => l_adr_flex_value_set_id
40191         , p_adr_code                => 'FV_46X002'
40192         , p_adr_type_code           => 'S'
40193         , p_component_type          => l_component_type
40194         , p_component_code          => l_component_code
40195         , p_component_type_code     => l_component_type_code
40196         , p_component_appl_id       => l_component_appl_id
40197         , p_amb_context_code        => l_amb_context_code
40198         , p_entity_code             => 'RELEASE'
40199         , p_event_class_code        => 'RELEASE'
40200         , p_side                    => 'NA'
40201         );
40202 
40203   END IF;
40204 
40205    --
40206    --
40207    END IF;
40208    --
40209    -- Bug 4922099
40210    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40211           (NVL(l_enc_upg_option, 'N') = 'O')
40212         ) AND
40213         (l_bflow_method_code = 'PRIOR_ENTRY')
40214       )
40215    THEN
40216       IF
40217       --
40218       1 = 2
40219       --
40220       THEN
40221       xla_accounting_err_pkg.build_message
40222                                     (p_appli_s_name            => 'XLA'
40223                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40224                                     ,p_token_1                 => 'LINE_NUMBER'
40225                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40226                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40227                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40228                                                                              l_component_type
40229                                                                             ,l_component_code
40230                                                                             ,l_component_type_code
40231                                                                             ,l_component_appl_id
40232                                                                             ,l_amb_context_code
40233                                                                             ,l_entity_code
40234                                                                             ,l_event_class_code
40235                                                                            )
40236                                     ,p_token_3                 => 'OWNER'
40237                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40238                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40239                                                                           ,p_lookup_code    => l_component_type_code
40240                                                                          )
40241                                     ,p_token_4                 => 'PRODUCT_NAME'
40242                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40243                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40244                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40245                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40246                                     ,p_ae_header_id            =>  NULL
40247                                        );
40248 
40249         IF (C_LEVEL_ERROR>= g_log_level) THEN
40250                  trace
40251                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40252                       ,p_level    => C_LEVEL_ERROR
40253                       ,p_module   => l_log_module);
40254         END IF;
40255       END IF;
40256    END IF;
40257    --
40258    --
40259    ------------------------------------------------------------------------------------------------
40260    -- 4219869 Business Flow
40261    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40262    -- Prior Entry.  Currently, the following code is always generated.
40263    ------------------------------------------------------------------------------------------------
40264    -- No ValidateCurrentLine for business flow method of Prior Entry
40265 
40266    ------------------------------------------------------------------------------------
40267    -- 4219869 Business Flow
40268    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40269    ------------------------------------------------------------------------------------
40270    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40271 
40272    ----------------------------------------------------------------------------------
40273    -- 4219869 Business Flow
40274    -- Update journal entry status -- Need to generate this within IF <condition>
40275    ----------------------------------------------------------------------------------
40276    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40277          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40278          ,p_balance_type_code => l_balance_type_code
40279          );
40280 
40281    -------------------------------------------------------------------------------------------
40282    -- 4262811 - Generate the Accrual Reversal lines
40283    -------------------------------------------------------------------------------------------
40284    BEGIN
40285       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40286                               (g_array_event(p_event_id).array_value_num('header_index'));
40287       IF l_acc_rev_flag IS NULL THEN
40288          l_acc_rev_flag := 'N';
40289       END IF;
40290    EXCEPTION
40291       WHEN OTHERS THEN
40292          l_acc_rev_flag := 'N';
40293    END;
40294    --
40295    IF (l_acc_rev_flag = 'Y') THEN
40296 
40297        -- 4645092  ------------------------------------------------------------------------------
40298        -- To allow MPA report to determine if it should generate report process
40299        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40300        ------------------------------------------------------------------------------------------
40301 
40302        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40303        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40304 
40305        --
40306        -- Update the line information that should be overwritten
40307        --
40308        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40309                                          p_header_num   => 1);
40310        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40311 
40312        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40313 
40314        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40315           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40316        END IF;
40317 
40318       --
40319       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40320       --
40321       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40322           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40323       ELSE
40324           ---------------------------------------------------------------------------------------------------
40325           -- 4262811a Switch Sign
40326           ---------------------------------------------------------------------------------------------------
40327           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40328           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40329                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40330           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40331                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40332           -- 5132302
40333           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40334                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40335 
40336       END IF;
40337 
40338       -- 4955764
40339       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40340       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40341 
40342 
40343       XLA_AE_LINES_PKG.ValidateCurrentLine;
40344       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40345 
40346       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40347                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40348                ,p_balance_type_code => l_balance_type_code);
40349 
40350    END IF;
40351 
40352    -----------------------------------------------------------------------------------------
40353    -- 4262811 Multiperiod Accounting
40354    -----------------------------------------------------------------------------------------
40355      -- No MPA option is assigned.
40356 
40357 
40358 END IF;
40359 END IF;
40360 --
40361 
40362 --
40363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40364    trace
40365       (p_msg      => 'END of AcctLineType_74'
40366       ,p_level    => C_LEVEL_PROCEDURE
40367       ,p_module   => l_log_module);
40368 END IF;
40369 --
40370 EXCEPTION
40371   WHEN xla_exceptions_pkg.application_exception THEN
40372       RAISE;
40373   WHEN OTHERS THEN
40374        xla_exceptions_pkg.raise_message
40375            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_74');
40376 END AcctLineType_74;
40377 --
40378 
40379 ---------------------------------------
40380 --
40381 -- PRIVATE FUNCTION
40382 --         AcctLineType_75
40383 --
40384 ---------------------------------------
40385 PROCEDURE AcctLineType_75 (
40386   p_application_id        IN NUMBER
40387  ,p_event_id              IN NUMBER
40388  ,p_calculate_acctd_flag  IN VARCHAR2
40389  ,p_calculate_g_l_flag    IN VARCHAR2
40390  ,p_actual_flag           IN OUT VARCHAR2
40391  ,p_balance_type_code     OUT VARCHAR2
40392  ,p_gain_or_loss_ref      OUT VARCHAR2
40393  
40394 --Budget Account
40395  , p_source_9            IN NUMBER
40396 --Main Or Backing Code
40397  , p_source_13            IN VARCHAR2
40398 --Accounting Reversal Flag
40399  , p_source_15            IN VARCHAR2
40400 --Distribution Link Type
40401  , p_source_17            IN VARCHAR2
40402 --PO Distribution Identifier
40403  , p_source_19            IN NUMBER
40404 --Applied To Application Identifier
40405  , p_source_21            IN NUMBER
40406 --Applied To Distribution Link Type
40407  , p_source_22            IN VARCHAR2
40408 --Applied To Entity Code
40409  , p_source_23            IN VARCHAR2
40410 --Applied To Distribution Identifier 1
40411  , p_source_24            IN NUMBER
40412 --Applied To Header Identifier 1
40413  , p_source_25            IN NUMBER
40414 --Entered Amount
40415  , p_source_26            IN NUMBER
40416 --Currency Code
40417  , p_source_27            IN VARCHAR2
40418 --Accounted Amount
40419  , p_source_28            IN NUMBER
40420 --PO Encumbrance Upgrade Option
40421  , p_source_29            IN VARCHAR2
40422 --JFMIP Reference
40423  , p_source_31            IN VARCHAR2
40424 --PO Upgrade Encumbrance Type Identifier
40425  , p_source_32            IN NUMBER
40426 --PO Release Identifier
40427  , p_source_41            IN NUMBER
40428 )
40429 IS
40430 
40431 l_component_type              VARCHAR2(80);
40432 l_component_code              VARCHAR2(30);
40433 l_component_type_code         VARCHAR2(1);
40434 l_component_appl_id           INTEGER;
40435 l_amb_context_code            VARCHAR2(30);
40436 l_entity_code                 VARCHAR2(30);
40437 l_event_class_code            VARCHAR2(30);
40438 l_ae_header_id                NUMBER;
40439 l_event_type_code             VARCHAR2(30);
40440 l_line_definition_code        VARCHAR2(30);
40441 l_line_definition_owner_code  VARCHAR2(1);
40442 --
40443 -- adr variables
40444 l_segment                     VARCHAR2(30);
40445 l_ccid                        NUMBER;
40446 l_adr_transaction_coa_id      NUMBER;
40447 l_adr_accounting_coa_id       NUMBER;
40448 l_adr_flexfield_segment_code  VARCHAR2(30);
40449 l_adr_flex_value_set_id       NUMBER;
40450 l_adr_value_type_code         VARCHAR2(30);
40451 l_adr_value_combination_id    NUMBER;
40452 l_adr_value_segment_code      VARCHAR2(30);
40453 
40454 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40455 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40456 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40457 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40458 
40459 -- 4262811 Variables ------------------------------------------------------------------------------------------
40460 l_entered_amt_idx             NUMBER;
40461 l_accted_amt_idx              NUMBER;
40462 l_acc_rev_flag                VARCHAR2(1);
40463 l_accrual_line_num            NUMBER;
40464 l_tmp_amt                     NUMBER;
40465 l_acc_rev_natural_side_code   VARCHAR2(1);
40466 
40467 l_num_entries                 NUMBER;
40468 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40469 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40470 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40471 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40472 l_recog_line_1                NUMBER;
40473 l_recog_line_2                NUMBER;
40474 
40475 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40476 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40477 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40478 
40479 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40480 
40481 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40482 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40483 
40484 ---------------------------------------------------------------------------------------------------------------
40485 
40486 
40487 --
40488 -- bulk performance
40489 --
40490 l_balance_type_code           VARCHAR2(1);
40491 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40492 l_log_module                  VARCHAR2(240);
40493 
40494 --
40495 -- Upgrade strategy
40496 --
40497 l_actual_upg_option           VARCHAR2(1);
40498 l_enc_upg_option           VARCHAR2(1);
40499 
40500 --
40501 BEGIN
40502 --
40503 IF g_log_enabled THEN
40504       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
40505 END IF;
40506 --
40507 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40508 
40509       trace
40510          (p_msg      => 'BEGIN of AcctLineType_75'
40511          ,p_level    => C_LEVEL_PROCEDURE
40512          ,p_module   => l_log_module);
40513 
40514 END IF;
40515 --
40516 l_component_type             := 'AMB_JLT';
40517 l_component_code             := 'FV_REL_REVERSE_DR';
40518 l_component_type_code        := 'S';
40519 l_component_appl_id          :=  201;
40520 l_amb_context_code           := 'DEFAULT';
40521 l_entity_code                := 'RELEASE';
40522 l_event_class_code           := 'RELEASE';
40523 l_event_type_code            := 'RELEASE_ALL';
40524 l_line_definition_owner_code := 'S';
40525 l_line_definition_code       := 'FV_RELEASE_ALL';
40526 --
40527 l_balance_type_code          := 'A';
40528 l_segment                     := NULL;
40529 l_ccid                        := NULL;
40530 l_adr_transaction_coa_id      := NULL;
40531 l_adr_accounting_coa_id       := NULL;
40532 l_adr_flexfield_segment_code  := NULL;
40533 l_adr_flex_value_set_id       := NULL;
40534 l_adr_value_type_code         := NULL;
40535 l_adr_value_combination_id    := NULL;
40536 l_adr_value_segment_code      := NULL;
40537 
40538 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
40539 l_bflow_class_code           := 'FV_PO_CR';    -- 4219869 Business Flow
40540 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
40541 l_budgetary_control_flag     := 'Y';
40542 
40543 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40544 l_bflow_applied_to_amt       := NULL; -- 5132302
40545 l_entered_amt_idx            := NULL;          -- 4262811
40546 l_accted_amt_idx             := NULL;          -- 4262811
40547 l_acc_rev_flag               := NULL;          -- 4262811
40548 l_accrual_line_num           := NULL;          -- 4262811
40549 l_tmp_amt                    := NULL;          -- 4262811
40550 --
40551  
40552 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40553     l_balance_type_code <> 'B' THEN
40554 IF (NVL(
40555 xla_ae_sources_pkg.GetSystemSourceChar(
40556    p_source_code           => 'XLA_EVENT_TYPE_CODE'
40557  , p_source_type_code      => 'Y'
40558  , p_source_application_id =>  602
40559 ),'
40560 ') =  'RELEASE_REJECTED' OR 
40561 NVL(
40562 xla_ae_sources_pkg.GetSystemSourceChar(
40563    p_source_code           => 'XLA_EVENT_TYPE_CODE'
40564  , p_source_type_code      => 'Y'
40565  , p_source_application_id =>  602
40566 ),'
40567 ') =  'RELEASE_UNRESERVED' OR 
40568 NVL(
40569 xla_ae_sources_pkg.GetSystemSourceChar(
40570    p_source_code           => 'XLA_EVENT_TYPE_CODE'
40571  , p_source_type_code      => 'Y'
40572  , p_source_application_id =>  602
40573 ),'
40574 ') =  'RELEASE_INV_CANCELLED' OR 
40575 NVL(
40576 xla_ae_sources_pkg.GetSystemSourceChar(
40577    p_source_code           => 'XLA_EVENT_TYPE_CODE'
40578  , p_source_type_code      => 'Y'
40579  , p_source_application_id =>  602
40580 ),'
40581 ') =  'RELEASE_FINAL_CLOSED') AND 
40582 NVL(p_source_13,'
40583 ') =  'M'
40584  THEN 
40585 
40586    --
40587    XLA_AE_LINES_PKG.SetNewLine;
40588 
40589    p_balance_type_code          := l_balance_type_code;
40590    -- set the flag so later we will know whether the gain loss line needs to be created
40591    
40592    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40593      p_actual_flag :='A';
40594    END IF;
40595 
40596    --
40597    -- bulk performance
40598    --
40599    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40600                                       p_header_num   => 0); -- 4262811
40601    --
40602    -- set accounting line options
40603    --
40604    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40605            p_natural_side_code          => 'D'
40606          , p_gain_or_loss_flag          => 'N'
40607          , p_gl_transfer_mode_code      => 'S'
40608          , p_acct_entry_type_code       => 'A'
40609          , p_switch_side_flag           => 'N'
40610          , p_merge_duplicate_code       => 'N'
40611          );
40612    --
40613    l_acc_rev_natural_side_code := 'C';  -- 4262811
40614    -- 
40615    --
40616    -- set accounting line type info
40617    --
40618    xla_ae_lines_pkg.SetAcctLineType
40619       (p_component_type             => l_component_type
40620       ,p_event_type_code            => l_event_type_code
40621       ,p_line_definition_owner_code => l_line_definition_owner_code
40622       ,p_line_definition_code       => l_line_definition_code
40623       ,p_accounting_line_code       => l_component_code
40624       ,p_accounting_line_type_code  => l_component_type_code
40625       ,p_accounting_line_appl_id    => l_component_appl_id
40626       ,p_amb_context_code           => l_amb_context_code
40627       ,p_entity_code                => l_entity_code
40628       ,p_event_class_code           => l_event_class_code);
40629    --
40630    -- set accounting class
40631    --
40632    xla_ae_lines_pkg.SetAcctClass(
40633            p_accounting_class_code  => 'PURCHASE_ORDER'
40634          , p_ae_header_id           => l_ae_header_id
40635          );
40636 
40637    --
40638    -- set rounding class
40639    --
40640    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40641                       'PURCHASE_ORDER';
40642 
40643    --
40644    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40645    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40646    --
40647    -- bulk performance
40648    --
40649    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40650 
40651    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40652       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40653 
40654    -- 4955764
40655    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40656       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40657 
40658    -- 4458381 Public Sector Enh
40659    
40660    --
40661    -- set accounting attributes for the line type
40662    --
40663    l_entered_amt_idx := 23;
40664    l_accted_amt_idx  := 25;
40665    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40666    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
40667    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
40668    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
40669    l_rec_acct_attrs.array_num_value(2)  := 
40670 xla_ae_sources_pkg.GetSystemSourceNum(
40671    p_source_code           => 'XLA_EVENT_APPL_ID'
40672  , p_source_type_code      => 'Y'
40673  , p_source_application_id =>  602
40674 );
40675    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
40676    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
40677    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
40678    l_rec_acct_attrs.array_char_value(4)  := 
40679 xla_ae_sources_pkg.GetSystemSourceChar(
40680    p_source_code           => 'XLA_ENTITY_CODE'
40681  , p_source_type_code      => 'Y'
40682  , p_source_application_id =>  602
40683 );
40684    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
40685    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
40686    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
40687    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
40688    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
40689    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
40690    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
40691    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
40692    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
40693    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
40694    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
40695    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
40696    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
40697    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
40698    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
40699    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
40700    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
40701    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
40702    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
40703    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
40704    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
40705    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
40706    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
40707    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
40708    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
40709    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
40710    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
40711    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
40712    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
40713    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
40714    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
40715    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
40716    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
40717    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
40718    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
40719    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
40720    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
40721    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
40722    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
40723    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
40724    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
40725    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
40726    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
40727    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
40728    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
40729    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
40730    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
40731    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
40732    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
40733    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_41);
40734    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
40735    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
40736    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
40737    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
40738 
40739    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40740    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40741 
40742    ---------------------------------------------------------------------------------------------------------------
40743    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40744    ---------------------------------------------------------------------------------------------------------------
40745    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40746 
40747    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40748    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40749 
40750    IF xla_accounting_cache_pkg.GetValueChar
40751          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40752          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40753    AND l_bflow_method_code = 'PRIOR_ENTRY'
40754 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40755    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40756          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40757        )
40758    THEN
40759          xla_ae_lines_pkg.BflowUpgEntry
40760            (p_business_method_code    => l_bflow_method_code
40761            ,p_business_class_code     => l_bflow_class_code
40762            ,p_balance_type            => l_balance_type_code);
40763    ELSE
40764       NULL;
40765 XLA_AE_LINES_PKG.business_flow_validation(
40766                                 p_business_method_code     => l_bflow_method_code
40767                                ,p_business_class_code      => l_bflow_class_code
40768                                ,p_inherit_description_flag => l_inherit_desc_flag);
40769    END IF;
40770 
40771    --
40772    -- call analytical criteria
40773    --
40774    -- Inherited Analytical Criteria for business flow method of Prior Entry.
40775    --
40776    -- call description
40777    --
40778    -- No description or it is inherited.
40779    --
40780    -- call ADRs
40781    -- Bug 4922099
40782    --
40783    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40784         (NVL(l_actual_upg_option, 'N') = 'O') OR
40785         (NVL(l_enc_upg_option, 'N') = 'O')
40786       )
40787    THEN
40788    NULL;
40789    --
40790    --
40791    
40792   l_ccid := AcctDerRule_9(
40793            p_application_id           => p_application_id
40794          , p_ae_header_id             => l_ae_header_id 
40795 , p_source_9 => p_source_9
40796          , x_transaction_coa_id       => l_adr_transaction_coa_id
40797          , x_accounting_coa_id        => l_adr_accounting_coa_id
40798          , x_value_type_code          => l_adr_value_type_code
40799          , p_side                     => 'NA'
40800    );
40801 
40802    xla_ae_lines_pkg.set_ccid(
40803     p_code_combination_id          => l_ccid
40804   , p_value_type_code              => l_adr_value_type_code
40805   , p_transaction_coa_id           => l_adr_transaction_coa_id
40806   , p_accounting_coa_id            => l_adr_accounting_coa_id
40807   , p_adr_code                     => 'FV_ACCOUNT_RULE'
40808   , p_adr_type_code                => 'S'
40809   , p_component_type               => l_component_type
40810   , p_component_code               => l_component_code
40811   , p_component_type_code          => l_component_type_code
40812   , p_component_appl_id            => l_component_appl_id
40813   , p_amb_context_code             => l_amb_context_code
40814   , p_side                         => 'NA'
40815   );
40816 
40817 
40818    l_segment := AcctDerRule_8(
40819            p_application_id           => p_application_id
40820          , p_ae_header_id             => l_ae_header_id 
40821          , x_transaction_coa_id       => l_adr_transaction_coa_id
40822          , x_accounting_coa_id        => l_adr_accounting_coa_id
40823          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
40824          , x_flex_value_set_id        => l_adr_flex_value_set_id
40825          , x_value_type_code          => l_adr_value_type_code
40826          , x_value_combination_id     => l_adr_value_combination_id
40827          , x_value_segment_code       => l_adr_value_segment_code
40828          , p_side                     => 'NA'
40829          , p_override_seg_flag        => 'Y'
40830    );
40831 
40832    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
40833 
40834       xla_ae_lines_pkg.set_segment(
40835           p_to_segment_code         => 'GL_ACCOUNT'
40836         , p_segment_value           => l_segment
40837         , p_from_segment_code       => l_adr_value_segment_code
40838         , p_from_combination_id     => l_adr_value_combination_id
40839         , p_value_type_code         => l_adr_value_type_code
40840         , p_transaction_coa_id      => l_adr_transaction_coa_id
40841         , p_accounting_coa_id       => l_adr_accounting_coa_id
40842         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
40843         , p_flex_value_set_id       => l_adr_flex_value_set_id
40844         , p_adr_code                => 'FV_48X101_PURCHASING'
40845         , p_adr_type_code           => 'S'
40846         , p_component_type          => l_component_type
40847         , p_component_code          => l_component_code
40848         , p_component_type_code     => l_component_type_code
40849         , p_component_appl_id       => l_component_appl_id
40850         , p_amb_context_code        => l_amb_context_code
40851         , p_entity_code             => 'RELEASE'
40852         , p_event_class_code        => 'RELEASE'
40853         , p_side                    => 'NA'
40854         );
40855 
40856   END IF;
40857 
40858    --
40859    --
40860    END IF;
40861    --
40862    -- Bug 4922099
40863    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40864           (NVL(l_enc_upg_option, 'N') = 'O')
40865         ) AND
40866         (l_bflow_method_code = 'PRIOR_ENTRY')
40867       )
40868    THEN
40869       IF
40870       --
40871       1 = 2
40872       --
40873       THEN
40874       xla_accounting_err_pkg.build_message
40875                                     (p_appli_s_name            => 'XLA'
40876                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40877                                     ,p_token_1                 => 'LINE_NUMBER'
40878                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40879                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40880                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40881                                                                              l_component_type
40882                                                                             ,l_component_code
40883                                                                             ,l_component_type_code
40884                                                                             ,l_component_appl_id
40885                                                                             ,l_amb_context_code
40886                                                                             ,l_entity_code
40887                                                                             ,l_event_class_code
40888                                                                            )
40889                                     ,p_token_3                 => 'OWNER'
40890                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40891                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40892                                                                           ,p_lookup_code    => l_component_type_code
40893                                                                          )
40894                                     ,p_token_4                 => 'PRODUCT_NAME'
40895                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40896                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40897                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40898                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40899                                     ,p_ae_header_id            =>  NULL
40900                                        );
40901 
40902         IF (C_LEVEL_ERROR>= g_log_level) THEN
40903                  trace
40904                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40905                       ,p_level    => C_LEVEL_ERROR
40906                       ,p_module   => l_log_module);
40907         END IF;
40908       END IF;
40909    END IF;
40910    --
40911    --
40912    ------------------------------------------------------------------------------------------------
40913    -- 4219869 Business Flow
40914    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40915    -- Prior Entry.  Currently, the following code is always generated.
40916    ------------------------------------------------------------------------------------------------
40917    -- No ValidateCurrentLine for business flow method of Prior Entry
40918 
40919    ------------------------------------------------------------------------------------
40920    -- 4219869 Business Flow
40921    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40922    ------------------------------------------------------------------------------------
40923    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40924 
40925    ----------------------------------------------------------------------------------
40926    -- 4219869 Business Flow
40927    -- Update journal entry status -- Need to generate this within IF <condition>
40928    ----------------------------------------------------------------------------------
40929    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40930          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40931          ,p_balance_type_code => l_balance_type_code
40932          );
40933 
40934    -------------------------------------------------------------------------------------------
40935    -- 4262811 - Generate the Accrual Reversal lines
40936    -------------------------------------------------------------------------------------------
40937    BEGIN
40938       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40939                               (g_array_event(p_event_id).array_value_num('header_index'));
40940       IF l_acc_rev_flag IS NULL THEN
40941          l_acc_rev_flag := 'N';
40942       END IF;
40943    EXCEPTION
40944       WHEN OTHERS THEN
40945          l_acc_rev_flag := 'N';
40946    END;
40947    --
40948    IF (l_acc_rev_flag = 'Y') THEN
40949 
40950        -- 4645092  ------------------------------------------------------------------------------
40951        -- To allow MPA report to determine if it should generate report process
40952        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40953        ------------------------------------------------------------------------------------------
40954 
40955        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40956        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40957 
40958        --
40959        -- Update the line information that should be overwritten
40960        --
40961        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40962                                          p_header_num   => 1);
40963        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40964 
40965        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40966 
40967        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40968           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40969        END IF;
40970 
40971       --
40972       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40973       --
40974       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40975           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40976       ELSE
40977           ---------------------------------------------------------------------------------------------------
40978           -- 4262811a Switch Sign
40979           ---------------------------------------------------------------------------------------------------
40980           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40981           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40982                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40983           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40984                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40985           -- 5132302
40986           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40987                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40988 
40989       END IF;
40990 
40991       -- 4955764
40992       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40993       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40994 
40995 
40996       XLA_AE_LINES_PKG.ValidateCurrentLine;
40997       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40998 
40999       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41000                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41001                ,p_balance_type_code => l_balance_type_code);
41002 
41003    END IF;
41004 
41005    -----------------------------------------------------------------------------------------
41006    -- 4262811 Multiperiod Accounting
41007    -----------------------------------------------------------------------------------------
41008      -- No MPA option is assigned.
41009 
41010 
41011 END IF;
41012 END IF;
41013 --
41014 
41015 --
41016 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41017    trace
41018       (p_msg      => 'END of AcctLineType_75'
41019       ,p_level    => C_LEVEL_PROCEDURE
41020       ,p_module   => l_log_module);
41021 END IF;
41022 --
41023 EXCEPTION
41024   WHEN xla_exceptions_pkg.application_exception THEN
41025       RAISE;
41026   WHEN OTHERS THEN
41027        xla_exceptions_pkg.raise_message
41028            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_75');
41029 END AcctLineType_75;
41030 --
41031 
41032 ---------------------------------------
41033 --
41034 -- PRIVATE FUNCTION
41035 --         AcctLineType_76
41036 --
41037 ---------------------------------------
41038 PROCEDURE AcctLineType_76 (
41039   p_application_id        IN NUMBER
41040  ,p_event_id              IN NUMBER
41041  ,p_calculate_acctd_flag  IN VARCHAR2
41042  ,p_calculate_g_l_flag    IN VARCHAR2
41043  ,p_actual_flag           IN OUT VARCHAR2
41044  ,p_balance_type_code     OUT VARCHAR2
41045  ,p_gain_or_loss_ref      OUT VARCHAR2
41046  
41047 --Journal entry Line Description
41048  , p_source_3            IN VARCHAR2
41049 --Federal Fund Category
41050  , p_source_7            IN VARCHAR2
41051 --Federal Fund Expired Status
41052  , p_source_8            IN VARCHAR2
41053 --Budget Account
41054  , p_source_9            IN NUMBER
41055 --Main Or Backing Code
41056  , p_source_13            IN VARCHAR2
41057 --Accounting Reversal Flag
41058  , p_source_15            IN VARCHAR2
41059 --Distribution Link Type
41060  , p_source_17            IN VARCHAR2
41061 --PO Distribution Identifier
41062  , p_source_19            IN NUMBER
41063 --PO Header Identifier
41064  , p_source_20            IN NUMBER
41065 --Applied To Application Identifier
41066  , p_source_21            IN NUMBER
41067 --Applied To Distribution Link Type
41068  , p_source_22            IN VARCHAR2
41069 --Applied To Entity Code
41070  , p_source_23            IN VARCHAR2
41071 --Applied To Distribution Identifier 1
41072  , p_source_24            IN NUMBER
41073 --Applied To Header Identifier 1
41074  , p_source_25            IN NUMBER
41075 --Entered Amount
41076  , p_source_26            IN NUMBER
41077 --Currency Code
41078  , p_source_27            IN VARCHAR2
41079 --Accounted Amount
41080  , p_source_28            IN NUMBER
41081 --PO Encumbrance Upgrade Option
41082  , p_source_29            IN VARCHAR2
41083 --PO Upgrade Encumbrance Type Identifier
41084  , p_source_32            IN NUMBER
41085 --Currency Conversion Date
41086  , p_source_35            IN DATE
41087 --Currency Conversion Rate
41088  , p_source_36            IN NUMBER
41089 --Currency Conversion Type
41090  , p_source_37            IN VARCHAR2
41091 )
41092 IS
41093 
41094 l_component_type              VARCHAR2(80);
41095 l_component_code              VARCHAR2(30);
41096 l_component_type_code         VARCHAR2(1);
41097 l_component_appl_id           INTEGER;
41098 l_amb_context_code            VARCHAR2(30);
41099 l_entity_code                 VARCHAR2(30);
41100 l_event_class_code            VARCHAR2(30);
41101 l_ae_header_id                NUMBER;
41102 l_event_type_code             VARCHAR2(30);
41103 l_line_definition_code        VARCHAR2(30);
41104 l_line_definition_owner_code  VARCHAR2(1);
41105 --
41106 -- adr variables
41107 l_segment                     VARCHAR2(30);
41108 l_ccid                        NUMBER;
41109 l_adr_transaction_coa_id      NUMBER;
41110 l_adr_accounting_coa_id       NUMBER;
41111 l_adr_flexfield_segment_code  VARCHAR2(30);
41112 l_adr_flex_value_set_id       NUMBER;
41113 l_adr_value_type_code         VARCHAR2(30);
41114 l_adr_value_combination_id    NUMBER;
41115 l_adr_value_segment_code      VARCHAR2(30);
41116 
41117 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41118 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41119 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41120 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41121 
41122 -- 4262811 Variables ------------------------------------------------------------------------------------------
41123 l_entered_amt_idx             NUMBER;
41124 l_accted_amt_idx              NUMBER;
41125 l_acc_rev_flag                VARCHAR2(1);
41126 l_accrual_line_num            NUMBER;
41127 l_tmp_amt                     NUMBER;
41128 l_acc_rev_natural_side_code   VARCHAR2(1);
41129 
41130 l_num_entries                 NUMBER;
41131 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41132 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41133 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41134 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41135 l_recog_line_1                NUMBER;
41136 l_recog_line_2                NUMBER;
41137 
41138 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41139 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41140 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41141 
41142 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41143 
41144 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41145 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41146 
41147 ---------------------------------------------------------------------------------------------------------------
41148 
41149 
41150 --
41151 -- bulk performance
41152 --
41153 l_balance_type_code           VARCHAR2(1);
41154 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41155 l_log_module                  VARCHAR2(240);
41156 
41157 --
41158 -- Upgrade strategy
41159 --
41160 l_actual_upg_option           VARCHAR2(1);
41161 l_enc_upg_option           VARCHAR2(1);
41162 
41163 --
41164 BEGIN
41165 --
41166 IF g_log_enabled THEN
41167       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
41168 END IF;
41169 --
41170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41171 
41172       trace
41173          (p_msg      => 'BEGIN of AcctLineType_76'
41174          ,p_level    => C_LEVEL_PROCEDURE
41175          ,p_module   => l_log_module);
41176 
41177 END IF;
41178 --
41179 l_component_type             := 'AMB_JLT';
41180 l_component_code             := 'FV_REOPEN_FINAL_MATCHED_PO_CR';
41181 l_component_type_code        := 'S';
41182 l_component_appl_id          :=  201;
41183 l_amb_context_code           := 'DEFAULT';
41184 l_entity_code                := 'PURCHASE_ORDER';
41185 l_event_class_code           := 'PO_PA';
41186 l_event_type_code            := 'PO_PA_ALL';
41187 l_line_definition_owner_code := 'S';
41188 l_line_definition_code       := 'FV_PO_ALL';
41189 --
41190 l_balance_type_code          := 'A';
41191 l_segment                     := NULL;
41192 l_ccid                        := NULL;
41193 l_adr_transaction_coa_id      := NULL;
41194 l_adr_accounting_coa_id       := NULL;
41195 l_adr_flexfield_segment_code  := NULL;
41196 l_adr_flex_value_set_id       := NULL;
41197 l_adr_value_type_code         := NULL;
41198 l_adr_value_combination_id    := NULL;
41199 l_adr_value_segment_code      := NULL;
41200 
41201 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41202 l_bflow_class_code           := '';    -- 4219869 Business Flow
41203 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41204 l_budgetary_control_flag     := 'Y';
41205 
41206 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41207 l_bflow_applied_to_amt       := NULL; -- 5132302
41208 l_entered_amt_idx            := NULL;          -- 4262811
41209 l_accted_amt_idx             := NULL;          -- 4262811
41210 l_acc_rev_flag               := NULL;          -- 4262811
41211 l_accrual_line_num           := NULL;          -- 4262811
41212 l_tmp_amt                    := NULL;          -- 4262811
41213 --
41214  
41215 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41216     l_balance_type_code <> 'B' THEN
41217 IF NVL(
41218 xla_ae_sources_pkg.GetSystemSourceChar(
41219    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41220  , p_source_type_code      => 'Y'
41221  , p_source_application_id =>  602
41222 ),'
41223 ') =  'PO_REOPEN_FINAL_MATCH' AND 
41224 NVL(p_source_13,'
41225 ') =  'M'
41226  THEN 
41227 
41228    --
41229    XLA_AE_LINES_PKG.SetNewLine;
41230 
41231    p_balance_type_code          := l_balance_type_code;
41232    -- set the flag so later we will know whether the gain loss line needs to be created
41233    
41234    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41235      p_actual_flag :='A';
41236    END IF;
41237 
41238    --
41239    -- bulk performance
41240    --
41241    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41242                                       p_header_num   => 0); -- 4262811
41243    --
41244    -- set accounting line options
41245    --
41246    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41247            p_natural_side_code          => 'C'
41248          , p_gain_or_loss_flag          => 'N'
41249          , p_gl_transfer_mode_code      => 'S'
41250          , p_acct_entry_type_code       => 'A'
41251          , p_switch_side_flag           => 'N'
41252          , p_merge_duplicate_code       => 'N'
41253          );
41254    --
41255    l_acc_rev_natural_side_code := 'D';  -- 4262811
41256    -- 
41257    --
41258    -- set accounting line type info
41259    --
41260    xla_ae_lines_pkg.SetAcctLineType
41261       (p_component_type             => l_component_type
41262       ,p_event_type_code            => l_event_type_code
41263       ,p_line_definition_owner_code => l_line_definition_owner_code
41264       ,p_line_definition_code       => l_line_definition_code
41265       ,p_accounting_line_code       => l_component_code
41266       ,p_accounting_line_type_code  => l_component_type_code
41267       ,p_accounting_line_appl_id    => l_component_appl_id
41268       ,p_amb_context_code           => l_amb_context_code
41269       ,p_entity_code                => l_entity_code
41270       ,p_event_class_code           => l_event_class_code);
41271    --
41272    -- set accounting class
41273    --
41274    xla_ae_lines_pkg.SetAcctClass(
41275            p_accounting_class_code  => 'PURCHASE_ORDER'
41276          , p_ae_header_id           => l_ae_header_id
41277          );
41278 
41279    --
41280    -- set rounding class
41281    --
41282    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41283                       'PURCHASE_ORDER';
41284 
41285    --
41286    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41287    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41288    --
41289    -- bulk performance
41290    --
41291    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41292 
41293    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41294       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41295 
41296    -- 4955764
41297    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41298       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41299 
41300    -- 4458381 Public Sector Enh
41301    
41302    --
41303    -- set accounting attributes for the line type
41304    --
41305    l_entered_amt_idx := 23;
41306    l_accted_amt_idx  := 28;
41307    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41308    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
41309    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
41310    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
41311    l_rec_acct_attrs.array_num_value(2)  := 
41312 xla_ae_sources_pkg.GetSystemSourceNum(
41313    p_source_code           => 'XLA_EVENT_APPL_ID'
41314  , p_source_type_code      => 'Y'
41315  , p_source_application_id =>  602
41316 );
41317    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
41318    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
41319    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
41320    l_rec_acct_attrs.array_char_value(4)  := 
41321 xla_ae_sources_pkg.GetSystemSourceChar(
41322    p_source_code           => 'XLA_ENTITY_CODE'
41323  , p_source_type_code      => 'Y'
41324  , p_source_application_id =>  602
41325 );
41326    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
41327    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
41328    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
41329    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
41330    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
41331    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
41332    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
41333    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
41334    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
41335    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
41336    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
41337    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
41338    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
41339    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
41340    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
41341    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
41342    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
41343    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
41344    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
41345    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
41346    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
41347    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
41348    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
41349    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
41350    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
41351    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
41352    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
41353    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
41354    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
41355    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
41356    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
41357    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
41358    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
41359    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
41360    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
41361    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
41362    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
41363    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
41364    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
41365    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
41366    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
41367    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
41368    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
41369    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
41370    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
41371    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
41372    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
41373    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
41374    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
41375    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
41376    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
41377    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
41378    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
41379    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
41380    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
41381    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
41382 
41383    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41384    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41385 
41386    ---------------------------------------------------------------------------------------------------------------
41387    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41388    ---------------------------------------------------------------------------------------------------------------
41389    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41390 
41391    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41392    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41393 
41394    IF xla_accounting_cache_pkg.GetValueChar
41395          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41396          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41397    AND l_bflow_method_code = 'PRIOR_ENTRY'
41398 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41399    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41400          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41401        )
41402    THEN
41403          xla_ae_lines_pkg.BflowUpgEntry
41404            (p_business_method_code    => l_bflow_method_code
41405            ,p_business_class_code     => l_bflow_class_code
41406            ,p_balance_type            => l_balance_type_code);
41407    ELSE
41408       NULL;
41409 -- No business flow processing for business flow method of NONE.
41410    END IF;
41411 
41412    --
41413    -- call analytical criteria
41414    --
41415    
41416    --
41417    -- call description
41418    --
41419    
41420 xla_ae_lines_pkg.SetLineDescription(
41421    p_ae_header_id => l_ae_header_id
41422   ,p_description  => Description_2 (
41423      p_application_id         => p_application_id
41424    , p_ae_header_id           => l_ae_header_id 
41425 , p_source_3 => p_source_3
41426    )
41427 );
41428 
41429 
41430    --
41431    -- call ADRs
41432    -- Bug 4922099
41433    --
41434    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41435         (NVL(l_actual_upg_option, 'N') = 'O') OR
41436         (NVL(l_enc_upg_option, 'N') = 'O')
41437       )
41438    THEN
41439    NULL;
41440    --
41441    --
41442    
41443   l_ccid := AcctDerRule_9(
41444            p_application_id           => p_application_id
41445          , p_ae_header_id             => l_ae_header_id 
41446 , p_source_9 => p_source_9
41447          , x_transaction_coa_id       => l_adr_transaction_coa_id
41448          , x_accounting_coa_id        => l_adr_accounting_coa_id
41449          , x_value_type_code          => l_adr_value_type_code
41450          , p_side                     => 'NA'
41451    );
41452 
41453    xla_ae_lines_pkg.set_ccid(
41454     p_code_combination_id          => l_ccid
41455   , p_value_type_code              => l_adr_value_type_code
41456   , p_transaction_coa_id           => l_adr_transaction_coa_id
41457   , p_accounting_coa_id            => l_adr_accounting_coa_id
41458   , p_adr_code                     => 'FV_ACCOUNT_RULE'
41459   , p_adr_type_code                => 'S'
41460   , p_component_type               => l_component_type
41461   , p_component_code               => l_component_code
41462   , p_component_type_code          => l_component_type_code
41463   , p_component_appl_id            => l_component_appl_id
41464   , p_amb_context_code             => l_amb_context_code
41465   , p_side                         => 'NA'
41466   );
41467 
41468 
41469    l_segment := AcctDerRule_5(
41470            p_application_id           => p_application_id
41471          , p_ae_header_id             => l_ae_header_id 
41472 , p_source_7 => p_source_7
41473 , p_source_8 => p_source_8
41474          , x_transaction_coa_id       => l_adr_transaction_coa_id
41475          , x_accounting_coa_id        => l_adr_accounting_coa_id
41476          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
41477          , x_flex_value_set_id        => l_adr_flex_value_set_id
41478          , x_value_type_code          => l_adr_value_type_code
41479          , x_value_combination_id     => l_adr_value_combination_id
41480          , x_value_segment_code       => l_adr_value_segment_code
41481          , p_side                     => 'NA'
41482          , p_override_seg_flag        => 'Y'
41483    );
41484 
41485    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
41486 
41487       xla_ae_lines_pkg.set_segment(
41488           p_to_segment_code         => 'GL_ACCOUNT'
41489         , p_segment_value           => l_segment
41490         , p_from_segment_code       => l_adr_value_segment_code
41491         , p_from_combination_id     => l_adr_value_combination_id
41492         , p_value_type_code         => l_adr_value_type_code
41493         , p_transaction_coa_id      => l_adr_transaction_coa_id
41494         , p_accounting_coa_id       => l_adr_accounting_coa_id
41495         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
41496         , p_flex_value_set_id       => l_adr_flex_value_set_id
41497         , p_adr_code                => 'FV_46X002'
41498         , p_adr_type_code           => 'S'
41499         , p_component_type          => l_component_type
41500         , p_component_code          => l_component_code
41501         , p_component_type_code     => l_component_type_code
41502         , p_component_appl_id       => l_component_appl_id
41503         , p_amb_context_code        => l_amb_context_code
41504         , p_entity_code             => 'PURCHASE_ORDER'
41505         , p_event_class_code        => 'PO_PA'
41506         , p_side                    => 'NA'
41507         );
41508 
41509   END IF;
41510 
41511    --
41512    --
41513    END IF;
41514    --
41515    -- Bug 4922099
41516    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41517           (NVL(l_enc_upg_option, 'N') = 'O')
41518         ) AND
41519         (l_bflow_method_code = 'PRIOR_ENTRY')
41520       )
41521    THEN
41522       IF
41523       --
41524       1 = 2
41525       --
41526       THEN
41527       xla_accounting_err_pkg.build_message
41528                                     (p_appli_s_name            => 'XLA'
41529                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41530                                     ,p_token_1                 => 'LINE_NUMBER'
41531                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41532                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41533                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41534                                                                              l_component_type
41535                                                                             ,l_component_code
41536                                                                             ,l_component_type_code
41537                                                                             ,l_component_appl_id
41538                                                                             ,l_amb_context_code
41539                                                                             ,l_entity_code
41540                                                                             ,l_event_class_code
41541                                                                            )
41542                                     ,p_token_3                 => 'OWNER'
41543                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41544                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41545                                                                           ,p_lookup_code    => l_component_type_code
41546                                                                          )
41547                                     ,p_token_4                 => 'PRODUCT_NAME'
41548                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41549                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41550                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41551                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41552                                     ,p_ae_header_id            =>  NULL
41553                                        );
41554 
41555         IF (C_LEVEL_ERROR>= g_log_level) THEN
41556                  trace
41557                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41558                       ,p_level    => C_LEVEL_ERROR
41559                       ,p_module   => l_log_module);
41560         END IF;
41561       END IF;
41562    END IF;
41563    --
41564    --
41565    ------------------------------------------------------------------------------------------------
41566    -- 4219869 Business Flow
41567    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41568    -- Prior Entry.  Currently, the following code is always generated.
41569    ------------------------------------------------------------------------------------------------
41570    XLA_AE_LINES_PKG.ValidateCurrentLine;
41571 
41572    ------------------------------------------------------------------------------------
41573    -- 4219869 Business Flow
41574    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41575    ------------------------------------------------------------------------------------
41576    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41577 
41578    ----------------------------------------------------------------------------------
41579    -- 4219869 Business Flow
41580    -- Update journal entry status -- Need to generate this within IF <condition>
41581    ----------------------------------------------------------------------------------
41582    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41583          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41584          ,p_balance_type_code => l_balance_type_code
41585          );
41586 
41587    -------------------------------------------------------------------------------------------
41588    -- 4262811 - Generate the Accrual Reversal lines
41589    -------------------------------------------------------------------------------------------
41590    BEGIN
41591       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41592                               (g_array_event(p_event_id).array_value_num('header_index'));
41593       IF l_acc_rev_flag IS NULL THEN
41594          l_acc_rev_flag := 'N';
41595       END IF;
41596    EXCEPTION
41597       WHEN OTHERS THEN
41598          l_acc_rev_flag := 'N';
41599    END;
41600    --
41601    IF (l_acc_rev_flag = 'Y') THEN
41602 
41603        -- 4645092  ------------------------------------------------------------------------------
41604        -- To allow MPA report to determine if it should generate report process
41605        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41606        ------------------------------------------------------------------------------------------
41607 
41608        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41609        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41610 
41611        --
41612        -- Update the line information that should be overwritten
41613        --
41614        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41615                                          p_header_num   => 1);
41616        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41617 
41618        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41619 
41620        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41621           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41622        END IF;
41623 
41624       --
41625       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41626       --
41627       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41628           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41629       ELSE
41630           ---------------------------------------------------------------------------------------------------
41631           -- 4262811a Switch Sign
41632           ---------------------------------------------------------------------------------------------------
41633           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41634           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41635                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41636           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41637                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41638           -- 5132302
41639           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41640                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41641 
41642       END IF;
41643 
41644       -- 4955764
41645       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41646       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41647 
41648 
41649       XLA_AE_LINES_PKG.ValidateCurrentLine;
41650       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41651 
41652       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41653                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41654                ,p_balance_type_code => l_balance_type_code);
41655 
41656    END IF;
41657 
41658    -----------------------------------------------------------------------------------------
41659    -- 4262811 Multiperiod Accounting
41660    -----------------------------------------------------------------------------------------
41661      -- No MPA option is assigned.
41662 
41663 
41664 END IF;
41665 END IF;
41666 --
41667 
41668 --
41669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41670    trace
41671       (p_msg      => 'END of AcctLineType_76'
41672       ,p_level    => C_LEVEL_PROCEDURE
41673       ,p_module   => l_log_module);
41674 END IF;
41675 --
41676 EXCEPTION
41677   WHEN xla_exceptions_pkg.application_exception THEN
41678       RAISE;
41679   WHEN OTHERS THEN
41680        xla_exceptions_pkg.raise_message
41681            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_76');
41682 END AcctLineType_76;
41683 --
41684 
41685 ---------------------------------------
41686 --
41687 -- PRIVATE FUNCTION
41688 --         AcctLineType_77
41689 --
41690 ---------------------------------------
41691 PROCEDURE AcctLineType_77 (
41692   p_application_id        IN NUMBER
41693  ,p_event_id              IN NUMBER
41694  ,p_calculate_acctd_flag  IN VARCHAR2
41695  ,p_calculate_g_l_flag    IN VARCHAR2
41696  ,p_actual_flag           IN OUT VARCHAR2
41697  ,p_balance_type_code     OUT VARCHAR2
41698  ,p_gain_or_loss_ref      OUT VARCHAR2
41699  
41700 --Journal entry Line Description
41701  , p_source_3            IN VARCHAR2
41702 --Budget Account
41703  , p_source_9            IN NUMBER
41704 --Main Or Backing Code
41705  , p_source_13            IN VARCHAR2
41706 --Accounting Reversal Flag
41707  , p_source_15            IN VARCHAR2
41708 --Distribution Link Type
41709  , p_source_17            IN VARCHAR2
41710 --PO Distribution Identifier
41711  , p_source_19            IN NUMBER
41712 --PO Header Identifier
41713  , p_source_20            IN NUMBER
41714 --Applied To Application Identifier
41715  , p_source_21            IN NUMBER
41716 --Applied To Distribution Link Type
41717  , p_source_22            IN VARCHAR2
41718 --Applied To Entity Code
41719  , p_source_23            IN VARCHAR2
41720 --Applied To Distribution Identifier 1
41721  , p_source_24            IN NUMBER
41722 --Applied To Header Identifier 1
41723  , p_source_25            IN NUMBER
41724 --Entered Amount
41725  , p_source_26            IN NUMBER
41726 --Currency Code
41727  , p_source_27            IN VARCHAR2
41728 --Accounted Amount
41729  , p_source_28            IN NUMBER
41730 --PO Encumbrance Upgrade Option
41731  , p_source_29            IN VARCHAR2
41732 --PO Upgrade Encumbrance Type Identifier
41733  , p_source_32            IN NUMBER
41734 --Currency Conversion Date
41735  , p_source_35            IN DATE
41736 --Currency Conversion Rate
41737  , p_source_36            IN NUMBER
41738 --Currency Conversion Type
41739  , p_source_37            IN VARCHAR2
41740 )
41741 IS
41742 
41743 l_component_type              VARCHAR2(80);
41744 l_component_code              VARCHAR2(30);
41745 l_component_type_code         VARCHAR2(1);
41746 l_component_appl_id           INTEGER;
41747 l_amb_context_code            VARCHAR2(30);
41748 l_entity_code                 VARCHAR2(30);
41749 l_event_class_code            VARCHAR2(30);
41750 l_ae_header_id                NUMBER;
41751 l_event_type_code             VARCHAR2(30);
41752 l_line_definition_code        VARCHAR2(30);
41753 l_line_definition_owner_code  VARCHAR2(1);
41754 --
41755 -- adr variables
41756 l_segment                     VARCHAR2(30);
41757 l_ccid                        NUMBER;
41758 l_adr_transaction_coa_id      NUMBER;
41759 l_adr_accounting_coa_id       NUMBER;
41760 l_adr_flexfield_segment_code  VARCHAR2(30);
41761 l_adr_flex_value_set_id       NUMBER;
41762 l_adr_value_type_code         VARCHAR2(30);
41763 l_adr_value_combination_id    NUMBER;
41764 l_adr_value_segment_code      VARCHAR2(30);
41765 
41766 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41767 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41768 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41769 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41770 
41771 -- 4262811 Variables ------------------------------------------------------------------------------------------
41772 l_entered_amt_idx             NUMBER;
41773 l_accted_amt_idx              NUMBER;
41774 l_acc_rev_flag                VARCHAR2(1);
41775 l_accrual_line_num            NUMBER;
41776 l_tmp_amt                     NUMBER;
41777 l_acc_rev_natural_side_code   VARCHAR2(1);
41778 
41779 l_num_entries                 NUMBER;
41780 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41781 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41782 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41783 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41784 l_recog_line_1                NUMBER;
41785 l_recog_line_2                NUMBER;
41786 
41787 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41788 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41789 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41790 
41791 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41792 
41793 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41794 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41795 
41796 ---------------------------------------------------------------------------------------------------------------
41797 
41798 
41799 --
41800 -- bulk performance
41801 --
41802 l_balance_type_code           VARCHAR2(1);
41803 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41804 l_log_module                  VARCHAR2(240);
41805 
41806 --
41807 -- Upgrade strategy
41808 --
41809 l_actual_upg_option           VARCHAR2(1);
41810 l_enc_upg_option           VARCHAR2(1);
41811 
41812 --
41813 BEGIN
41814 --
41815 IF g_log_enabled THEN
41816       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
41817 END IF;
41818 --
41819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41820 
41821       trace
41822          (p_msg      => 'BEGIN of AcctLineType_77'
41823          ,p_level    => C_LEVEL_PROCEDURE
41824          ,p_module   => l_log_module);
41825 
41826 END IF;
41827 --
41828 l_component_type             := 'AMB_JLT';
41829 l_component_code             := 'FV_REOPEN_FINAL_MATCHED_PO_DR';
41830 l_component_type_code        := 'S';
41831 l_component_appl_id          :=  201;
41832 l_amb_context_code           := 'DEFAULT';
41833 l_entity_code                := 'PURCHASE_ORDER';
41834 l_event_class_code           := 'PO_PA';
41835 l_event_type_code            := 'PO_PA_ALL';
41836 l_line_definition_owner_code := 'S';
41837 l_line_definition_code       := 'FV_PO_ALL';
41838 --
41839 l_balance_type_code          := 'A';
41840 l_segment                     := NULL;
41841 l_ccid                        := NULL;
41842 l_adr_transaction_coa_id      := NULL;
41843 l_adr_accounting_coa_id       := NULL;
41844 l_adr_flexfield_segment_code  := NULL;
41845 l_adr_flex_value_set_id       := NULL;
41846 l_adr_value_type_code         := NULL;
41847 l_adr_value_combination_id    := NULL;
41848 l_adr_value_segment_code      := NULL;
41849 
41850 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41851 l_bflow_class_code           := '';    -- 4219869 Business Flow
41852 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41853 l_budgetary_control_flag     := 'Y';
41854 
41855 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41856 l_bflow_applied_to_amt       := NULL; -- 5132302
41857 l_entered_amt_idx            := NULL;          -- 4262811
41858 l_accted_amt_idx             := NULL;          -- 4262811
41859 l_acc_rev_flag               := NULL;          -- 4262811
41860 l_accrual_line_num           := NULL;          -- 4262811
41861 l_tmp_amt                    := NULL;          -- 4262811
41862 --
41863  
41864 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41865     l_balance_type_code <> 'B' THEN
41866 IF NVL(
41867 xla_ae_sources_pkg.GetSystemSourceChar(
41868    p_source_code           => 'XLA_EVENT_TYPE_CODE'
41869  , p_source_type_code      => 'Y'
41870  , p_source_application_id =>  602
41871 ),'
41872 ') =  'PO_REOPEN_FINAL_MATCH' AND 
41873 NVL(p_source_13,'
41874 ') =  'M'
41875  THEN 
41876 
41877    --
41878    XLA_AE_LINES_PKG.SetNewLine;
41879 
41880    p_balance_type_code          := l_balance_type_code;
41881    -- set the flag so later we will know whether the gain loss line needs to be created
41882    
41883    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41884      p_actual_flag :='A';
41885    END IF;
41886 
41887    --
41888    -- bulk performance
41889    --
41890    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41891                                       p_header_num   => 0); -- 4262811
41892    --
41893    -- set accounting line options
41894    --
41895    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41896            p_natural_side_code          => 'D'
41897          , p_gain_or_loss_flag          => 'N'
41898          , p_gl_transfer_mode_code      => 'S'
41899          , p_acct_entry_type_code       => 'A'
41900          , p_switch_side_flag           => 'N'
41901          , p_merge_duplicate_code       => 'N'
41902          );
41903    --
41904    l_acc_rev_natural_side_code := 'C';  -- 4262811
41905    -- 
41906    --
41907    -- set accounting line type info
41908    --
41909    xla_ae_lines_pkg.SetAcctLineType
41910       (p_component_type             => l_component_type
41911       ,p_event_type_code            => l_event_type_code
41912       ,p_line_definition_owner_code => l_line_definition_owner_code
41913       ,p_line_definition_code       => l_line_definition_code
41914       ,p_accounting_line_code       => l_component_code
41915       ,p_accounting_line_type_code  => l_component_type_code
41916       ,p_accounting_line_appl_id    => l_component_appl_id
41917       ,p_amb_context_code           => l_amb_context_code
41918       ,p_entity_code                => l_entity_code
41919       ,p_event_class_code           => l_event_class_code);
41920    --
41921    -- set accounting class
41922    --
41923    xla_ae_lines_pkg.SetAcctClass(
41924            p_accounting_class_code  => 'PURCHASE_ORDER'
41925          , p_ae_header_id           => l_ae_header_id
41926          );
41927 
41928    --
41929    -- set rounding class
41930    --
41931    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41932                       'PURCHASE_ORDER';
41933 
41934    --
41935    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41936    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41937    --
41938    -- bulk performance
41939    --
41940    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41941 
41942    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41943       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41944 
41945    -- 4955764
41946    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41947       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41948 
41949    -- 4458381 Public Sector Enh
41950    
41951    --
41952    -- set accounting attributes for the line type
41953    --
41954    l_entered_amt_idx := 23;
41955    l_accted_amt_idx  := 28;
41956    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41957    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
41958    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
41959    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
41960    l_rec_acct_attrs.array_num_value(2)  := 
41961 xla_ae_sources_pkg.GetSystemSourceNum(
41962    p_source_code           => 'XLA_EVENT_APPL_ID'
41963  , p_source_type_code      => 'Y'
41964  , p_source_application_id =>  602
41965 );
41966    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
41967    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
41968    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
41969    l_rec_acct_attrs.array_char_value(4)  := 
41970 xla_ae_sources_pkg.GetSystemSourceChar(
41971    p_source_code           => 'XLA_ENTITY_CODE'
41972  , p_source_type_code      => 'Y'
41973  , p_source_application_id =>  602
41974 );
41975    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
41976    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_19);
41977    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
41978    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
41979    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
41980    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
41981    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
41982    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
41983    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
41984    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
41985    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
41986    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
41987    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
41988    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
41989    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
41990    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
41991    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
41992    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
41993    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
41994    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
41995    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
41996    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
41997    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
41998    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
41999    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
42000    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
42001    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
42002    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
42003    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
42004    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
42005    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
42006    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
42007    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
42008    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
42009    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
42010    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
42011    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
42012    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
42013    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
42014    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
42015    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
42016    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
42017    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
42018    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
42019    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
42020    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
42021    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
42022    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
42023    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
42024    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_24);
42025    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
42026    l_rec_acct_attrs.array_char_value(30)  := p_source_22;
42027    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_CR_ENC_TYPE_ID';
42028    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
42029    l_rec_acct_attrs.array_acct_attr_code(32) := 'UPG_DR_ENC_TYPE_ID';
42030    l_rec_acct_attrs.array_num_value(32)  := p_source_32;
42031 
42032    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42033    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42034 
42035    ---------------------------------------------------------------------------------------------------------------
42036    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42037    ---------------------------------------------------------------------------------------------------------------
42038    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42039 
42040    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42041    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42042 
42043    IF xla_accounting_cache_pkg.GetValueChar
42044          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42045          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42046    AND l_bflow_method_code = 'PRIOR_ENTRY'
42047 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42048    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42049          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42050        )
42051    THEN
42052          xla_ae_lines_pkg.BflowUpgEntry
42053            (p_business_method_code    => l_bflow_method_code
42054            ,p_business_class_code     => l_bflow_class_code
42055            ,p_balance_type            => l_balance_type_code);
42056    ELSE
42057       NULL;
42058 -- No business flow processing for business flow method of NONE.
42059    END IF;
42060 
42061    --
42062    -- call analytical criteria
42063    --
42064    
42065    --
42066    -- call description
42067    --
42068    
42069 xla_ae_lines_pkg.SetLineDescription(
42070    p_ae_header_id => l_ae_header_id
42071   ,p_description  => Description_2 (
42072      p_application_id         => p_application_id
42073    , p_ae_header_id           => l_ae_header_id 
42074 , p_source_3 => p_source_3
42075    )
42076 );
42077 
42078 
42079    --
42080    -- call ADRs
42081    -- Bug 4922099
42082    --
42083    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42084         (NVL(l_actual_upg_option, 'N') = 'O') OR
42085         (NVL(l_enc_upg_option, 'N') = 'O')
42086       )
42087    THEN
42088    NULL;
42089    --
42090    --
42091    
42092   l_ccid := AcctDerRule_9(
42093            p_application_id           => p_application_id
42094          , p_ae_header_id             => l_ae_header_id 
42095 , p_source_9 => p_source_9
42096          , x_transaction_coa_id       => l_adr_transaction_coa_id
42097          , x_accounting_coa_id        => l_adr_accounting_coa_id
42098          , x_value_type_code          => l_adr_value_type_code
42099          , p_side                     => 'NA'
42100    );
42101 
42102    xla_ae_lines_pkg.set_ccid(
42103     p_code_combination_id          => l_ccid
42104   , p_value_type_code              => l_adr_value_type_code
42105   , p_transaction_coa_id           => l_adr_transaction_coa_id
42106   , p_accounting_coa_id            => l_adr_accounting_coa_id
42107   , p_adr_code                     => 'FV_ACCOUNT_RULE'
42108   , p_adr_type_code                => 'S'
42109   , p_component_type               => l_component_type
42110   , p_component_code               => l_component_code
42111   , p_component_type_code          => l_component_type_code
42112   , p_component_appl_id            => l_component_appl_id
42113   , p_amb_context_code             => l_amb_context_code
42114   , p_side                         => 'NA'
42115   );
42116 
42117 
42118    l_segment := AcctDerRule_8(
42119            p_application_id           => p_application_id
42120          , p_ae_header_id             => l_ae_header_id 
42121          , x_transaction_coa_id       => l_adr_transaction_coa_id
42122          , x_accounting_coa_id        => l_adr_accounting_coa_id
42123          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
42124          , x_flex_value_set_id        => l_adr_flex_value_set_id
42125          , x_value_type_code          => l_adr_value_type_code
42126          , x_value_combination_id     => l_adr_value_combination_id
42127          , x_value_segment_code       => l_adr_value_segment_code
42128          , p_side                     => 'NA'
42129          , p_override_seg_flag        => 'Y'
42130    );
42131 
42132    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
42133 
42134       xla_ae_lines_pkg.set_segment(
42135           p_to_segment_code         => 'GL_ACCOUNT'
42136         , p_segment_value           => l_segment
42137         , p_from_segment_code       => l_adr_value_segment_code
42138         , p_from_combination_id     => l_adr_value_combination_id
42139         , p_value_type_code         => l_adr_value_type_code
42140         , p_transaction_coa_id      => l_adr_transaction_coa_id
42141         , p_accounting_coa_id       => l_adr_accounting_coa_id
42142         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
42143         , p_flex_value_set_id       => l_adr_flex_value_set_id
42144         , p_adr_code                => 'FV_48X101_PURCHASING'
42145         , p_adr_type_code           => 'S'
42146         , p_component_type          => l_component_type
42147         , p_component_code          => l_component_code
42148         , p_component_type_code     => l_component_type_code
42149         , p_component_appl_id       => l_component_appl_id
42150         , p_amb_context_code        => l_amb_context_code
42151         , p_entity_code             => 'PURCHASE_ORDER'
42152         , p_event_class_code        => 'PO_PA'
42153         , p_side                    => 'NA'
42154         );
42155 
42156   END IF;
42157 
42158    --
42159    --
42160    END IF;
42161    --
42162    -- Bug 4922099
42163    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42164           (NVL(l_enc_upg_option, 'N') = 'O')
42165         ) AND
42166         (l_bflow_method_code = 'PRIOR_ENTRY')
42167       )
42168    THEN
42169       IF
42170       --
42171       1 = 2
42172       --
42173       THEN
42174       xla_accounting_err_pkg.build_message
42175                                     (p_appli_s_name            => 'XLA'
42176                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42177                                     ,p_token_1                 => 'LINE_NUMBER'
42178                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42179                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42180                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42181                                                                              l_component_type
42182                                                                             ,l_component_code
42183                                                                             ,l_component_type_code
42184                                                                             ,l_component_appl_id
42185                                                                             ,l_amb_context_code
42186                                                                             ,l_entity_code
42187                                                                             ,l_event_class_code
42188                                                                            )
42189                                     ,p_token_3                 => 'OWNER'
42190                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42191                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42192                                                                           ,p_lookup_code    => l_component_type_code
42193                                                                          )
42194                                     ,p_token_4                 => 'PRODUCT_NAME'
42195                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42196                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42197                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42198                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42199                                     ,p_ae_header_id            =>  NULL
42200                                        );
42201 
42202         IF (C_LEVEL_ERROR>= g_log_level) THEN
42203                  trace
42204                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42205                       ,p_level    => C_LEVEL_ERROR
42206                       ,p_module   => l_log_module);
42207         END IF;
42208       END IF;
42209    END IF;
42210    --
42211    --
42212    ------------------------------------------------------------------------------------------------
42213    -- 4219869 Business Flow
42214    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42215    -- Prior Entry.  Currently, the following code is always generated.
42216    ------------------------------------------------------------------------------------------------
42217    XLA_AE_LINES_PKG.ValidateCurrentLine;
42218 
42219    ------------------------------------------------------------------------------------
42220    -- 4219869 Business Flow
42221    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42222    ------------------------------------------------------------------------------------
42223    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42224 
42225    ----------------------------------------------------------------------------------
42226    -- 4219869 Business Flow
42227    -- Update journal entry status -- Need to generate this within IF <condition>
42228    ----------------------------------------------------------------------------------
42229    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42230          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42231          ,p_balance_type_code => l_balance_type_code
42232          );
42233 
42234    -------------------------------------------------------------------------------------------
42235    -- 4262811 - Generate the Accrual Reversal lines
42236    -------------------------------------------------------------------------------------------
42237    BEGIN
42238       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42239                               (g_array_event(p_event_id).array_value_num('header_index'));
42240       IF l_acc_rev_flag IS NULL THEN
42241          l_acc_rev_flag := 'N';
42242       END IF;
42243    EXCEPTION
42244       WHEN OTHERS THEN
42245          l_acc_rev_flag := 'N';
42246    END;
42247    --
42248    IF (l_acc_rev_flag = 'Y') THEN
42249 
42250        -- 4645092  ------------------------------------------------------------------------------
42251        -- To allow MPA report to determine if it should generate report process
42252        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42253        ------------------------------------------------------------------------------------------
42254 
42255        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42256        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42257 
42258        --
42259        -- Update the line information that should be overwritten
42260        --
42261        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42262                                          p_header_num   => 1);
42263        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42264 
42265        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42266 
42267        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42268           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42269        END IF;
42270 
42271       --
42272       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42273       --
42274       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42275           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42276       ELSE
42277           ---------------------------------------------------------------------------------------------------
42278           -- 4262811a Switch Sign
42279           ---------------------------------------------------------------------------------------------------
42280           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42281           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42282                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42283           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42284                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42285           -- 5132302
42286           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42287                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42288 
42289       END IF;
42290 
42291       -- 4955764
42292       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42293       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42294 
42295 
42296       XLA_AE_LINES_PKG.ValidateCurrentLine;
42297       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42298 
42299       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42300                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42301                ,p_balance_type_code => l_balance_type_code);
42302 
42303    END IF;
42304 
42305    -----------------------------------------------------------------------------------------
42306    -- 4262811 Multiperiod Accounting
42307    -----------------------------------------------------------------------------------------
42308      -- No MPA option is assigned.
42309 
42310 
42311 END IF;
42312 END IF;
42313 --
42314 
42315 --
42316 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42317    trace
42318       (p_msg      => 'END of AcctLineType_77'
42319       ,p_level    => C_LEVEL_PROCEDURE
42320       ,p_module   => l_log_module);
42321 END IF;
42322 --
42323 EXCEPTION
42324   WHEN xla_exceptions_pkg.application_exception THEN
42325       RAISE;
42326   WHEN OTHERS THEN
42327        xla_exceptions_pkg.raise_message
42328            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_77');
42329 END AcctLineType_77;
42330 --
42331 
42332 ---------------------------------------
42333 --
42334 -- PRIVATE FUNCTION
42335 --         AcctLineType_78
42336 --
42337 ---------------------------------------
42338 PROCEDURE AcctLineType_78 (
42339   p_application_id        IN NUMBER
42340  ,p_event_id              IN NUMBER
42341  ,p_calculate_acctd_flag  IN VARCHAR2
42342  ,p_calculate_g_l_flag    IN VARCHAR2
42343  ,p_actual_flag           IN OUT VARCHAR2
42344  ,p_balance_type_code     OUT VARCHAR2
42345  ,p_gain_or_loss_ref      OUT VARCHAR2
42346  
42347 --Budget Account
42348  , p_source_9            IN NUMBER
42349 --Accounting Reversal Flag
42350  , p_source_15            IN VARCHAR2
42351 --Distribution Link Type
42352  , p_source_17            IN VARCHAR2
42353 --Applied To Application Identifier
42354  , p_source_21            IN NUMBER
42355 --Applied To Distribution Link Type
42356  , p_source_22            IN VARCHAR2
42357 --Applied To Entity Code
42358  , p_source_23            IN VARCHAR2
42359 --Applied To Distribution Identifier 1
42360  , p_source_24            IN NUMBER
42361 --Applied To Header Identifier 1
42362  , p_source_25            IN NUMBER
42363 --Entered Amount
42364  , p_source_26            IN NUMBER
42365 --Currency Code
42366  , p_source_27            IN VARCHAR2
42367 --Accounted Amount
42368  , p_source_28            IN NUMBER
42369 --JFMIP Reference
42370  , p_source_31            IN VARCHAR2
42371 --Requisition Distribution Identifier
42372  , p_source_43            IN NUMBER
42373 --Requisition Identifier
42374  , p_source_44            IN NUMBER
42375 --Requisition Encumbrance Upgrade Option
42376  , p_source_45            IN VARCHAR2
42377 --Requisition Upgrade Encumbrance Type Identifier
42378  , p_source_46            IN NUMBER
42379 )
42380 IS
42381 
42382 l_component_type              VARCHAR2(80);
42383 l_component_code              VARCHAR2(30);
42384 l_component_type_code         VARCHAR2(1);
42385 l_component_appl_id           INTEGER;
42386 l_amb_context_code            VARCHAR2(30);
42387 l_entity_code                 VARCHAR2(30);
42388 l_event_class_code            VARCHAR2(30);
42389 l_ae_header_id                NUMBER;
42390 l_event_type_code             VARCHAR2(30);
42391 l_line_definition_code        VARCHAR2(30);
42392 l_line_definition_owner_code  VARCHAR2(1);
42393 --
42394 -- adr variables
42395 l_segment                     VARCHAR2(30);
42396 l_ccid                        NUMBER;
42397 l_adr_transaction_coa_id      NUMBER;
42398 l_adr_accounting_coa_id       NUMBER;
42399 l_adr_flexfield_segment_code  VARCHAR2(30);
42400 l_adr_flex_value_set_id       NUMBER;
42401 l_adr_value_type_code         VARCHAR2(30);
42402 l_adr_value_combination_id    NUMBER;
42403 l_adr_value_segment_code      VARCHAR2(30);
42404 
42405 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42406 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42407 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42408 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42409 
42410 -- 4262811 Variables ------------------------------------------------------------------------------------------
42411 l_entered_amt_idx             NUMBER;
42412 l_accted_amt_idx              NUMBER;
42413 l_acc_rev_flag                VARCHAR2(1);
42414 l_accrual_line_num            NUMBER;
42415 l_tmp_amt                     NUMBER;
42416 l_acc_rev_natural_side_code   VARCHAR2(1);
42417 
42418 l_num_entries                 NUMBER;
42419 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42420 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42421 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42422 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42423 l_recog_line_1                NUMBER;
42424 l_recog_line_2                NUMBER;
42425 
42426 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42427 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42428 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42429 
42430 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42431 
42432 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42433 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42434 
42435 ---------------------------------------------------------------------------------------------------------------
42436 
42437 
42438 --
42439 -- bulk performance
42440 --
42441 l_balance_type_code           VARCHAR2(1);
42442 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42443 l_log_module                  VARCHAR2(240);
42444 
42445 --
42446 -- Upgrade strategy
42447 --
42448 l_actual_upg_option           VARCHAR2(1);
42449 l_enc_upg_option           VARCHAR2(1);
42450 
42451 --
42452 BEGIN
42453 --
42454 IF g_log_enabled THEN
42455       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
42456 END IF;
42457 --
42458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42459 
42460       trace
42461          (p_msg      => 'BEGIN of AcctLineType_78'
42462          ,p_level    => C_LEVEL_PROCEDURE
42463          ,p_module   => l_log_module);
42464 
42465 END IF;
42466 --
42467 l_component_type             := 'AMB_JLT';
42468 l_component_code             := 'FV_REQ_CANCEL_CR';
42469 l_component_type_code        := 'S';
42470 l_component_appl_id          :=  201;
42471 l_amb_context_code           := 'DEFAULT';
42472 l_entity_code                := 'REQUISITION';
42473 l_event_class_code           := 'REQUISITION';
42474 l_event_type_code            := 'REQUISITION_ALL';
42475 l_line_definition_owner_code := 'S';
42476 l_line_definition_code       := 'FV_REQ_ALL';
42477 --
42478 l_balance_type_code          := 'A';
42479 l_segment                     := NULL;
42480 l_ccid                        := NULL;
42481 l_adr_transaction_coa_id      := NULL;
42482 l_adr_accounting_coa_id       := NULL;
42483 l_adr_flexfield_segment_code  := NULL;
42484 l_adr_flex_value_set_id       := NULL;
42485 l_adr_value_type_code         := NULL;
42486 l_adr_value_combination_id    := NULL;
42487 l_adr_value_segment_code      := NULL;
42488 
42489 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
42490 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
42491 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
42492 l_budgetary_control_flag     := 'Y';
42493 
42494 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42495 l_bflow_applied_to_amt       := NULL; -- 5132302
42496 l_entered_amt_idx            := NULL;          -- 4262811
42497 l_accted_amt_idx             := NULL;          -- 4262811
42498 l_acc_rev_flag               := NULL;          -- 4262811
42499 l_accrual_line_num           := NULL;          -- 4262811
42500 l_tmp_amt                    := NULL;          -- 4262811
42501 --
42502  
42503 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42504     l_balance_type_code <> 'B' THEN
42505 IF NVL(
42506 xla_ae_sources_pkg.GetSystemSourceChar(
42507    p_source_code           => 'XLA_EVENT_TYPE_CODE'
42508  , p_source_type_code      => 'Y'
42509  , p_source_application_id =>  602
42510 ),'
42511 ') =  'REQ_CANCELLED'
42512  THEN 
42513 
42514    --
42515    XLA_AE_LINES_PKG.SetNewLine;
42516 
42517    p_balance_type_code          := l_balance_type_code;
42518    -- set the flag so later we will know whether the gain loss line needs to be created
42519    
42520    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42521      p_actual_flag :='A';
42522    END IF;
42523 
42524    --
42525    -- bulk performance
42526    --
42527    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42528                                       p_header_num   => 0); -- 4262811
42529    --
42530    -- set accounting line options
42531    --
42532    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42533            p_natural_side_code          => 'C'
42534          , p_gain_or_loss_flag          => 'N'
42535          , p_gl_transfer_mode_code      => 'S'
42536          , p_acct_entry_type_code       => 'A'
42537          , p_switch_side_flag           => 'N'
42538          , p_merge_duplicate_code       => 'N'
42539          );
42540    --
42541    l_acc_rev_natural_side_code := 'D';  -- 4262811
42542    -- 
42543    --
42544    -- set accounting line type info
42545    --
42546    xla_ae_lines_pkg.SetAcctLineType
42547       (p_component_type             => l_component_type
42548       ,p_event_type_code            => l_event_type_code
42549       ,p_line_definition_owner_code => l_line_definition_owner_code
42550       ,p_line_definition_code       => l_line_definition_code
42551       ,p_accounting_line_code       => l_component_code
42552       ,p_accounting_line_type_code  => l_component_type_code
42553       ,p_accounting_line_appl_id    => l_component_appl_id
42554       ,p_amb_context_code           => l_amb_context_code
42555       ,p_entity_code                => l_entity_code
42556       ,p_event_class_code           => l_event_class_code);
42557    --
42558    -- set accounting class
42559    --
42560    xla_ae_lines_pkg.SetAcctClass(
42561            p_accounting_class_code  => 'REQUISITION'
42562          , p_ae_header_id           => l_ae_header_id
42563          );
42564 
42565    --
42566    -- set rounding class
42567    --
42568    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42569                       'REQUISITION';
42570 
42571    --
42572    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42573    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42574    --
42575    -- bulk performance
42576    --
42577    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42578 
42579    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42580       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42581 
42582    -- 4955764
42583    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42585 
42586    -- 4458381 Public Sector Enh
42587    
42588    --
42589    -- set accounting attributes for the line type
42590    --
42591    l_entered_amt_idx := 23;
42592    l_accted_amt_idx  := 25;
42593    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42594    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42595    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
42596    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
42597    l_rec_acct_attrs.array_num_value(2)  := 
42598 xla_ae_sources_pkg.GetSystemSourceNum(
42599    p_source_code           => 'XLA_EVENT_APPL_ID'
42600  , p_source_type_code      => 'Y'
42601  , p_source_application_id =>  602
42602 );
42603    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
42604    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
42605    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
42606    l_rec_acct_attrs.array_char_value(4)  := 
42607 xla_ae_sources_pkg.GetSystemSourceChar(
42608    p_source_code           => 'XLA_ENTITY_CODE'
42609  , p_source_type_code      => 'Y'
42610  , p_source_application_id =>  602
42611 );
42612    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
42613    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_43);
42614    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
42615    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_44);
42616    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
42617    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
42618    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
42619    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
42620    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
42621    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
42622    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
42623    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
42624    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
42625    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
42626    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
42627    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_43);
42628    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
42629    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
42630    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
42631    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
42632    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
42633    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
42634    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
42635    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
42636    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
42637    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
42638    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
42639    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
42640    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
42641    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
42642    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
42643    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
42644    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
42645    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
42646    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
42647    l_rec_acct_attrs.array_char_value(22)  := p_source_45;
42648    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
42649    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
42650    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
42651    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
42652    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
42653    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
42654    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
42655    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
42656    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
42657    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
42658    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
42659    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
42660    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
42661    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_43);
42662    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
42663    l_rec_acct_attrs.array_num_value(30)  := p_source_46;
42664    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
42665    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
42666 
42667    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42668    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42669 
42670    ---------------------------------------------------------------------------------------------------------------
42671    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42672    ---------------------------------------------------------------------------------------------------------------
42673    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42674 
42675    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42676    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42677 
42678    IF xla_accounting_cache_pkg.GetValueChar
42679          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42680          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42681    AND l_bflow_method_code = 'PRIOR_ENTRY'
42682 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42683    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42684          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42685        )
42686    THEN
42687          xla_ae_lines_pkg.BflowUpgEntry
42688            (p_business_method_code    => l_bflow_method_code
42689            ,p_business_class_code     => l_bflow_class_code
42690            ,p_balance_type            => l_balance_type_code);
42691    ELSE
42692       NULL;
42693 XLA_AE_LINES_PKG.business_flow_validation(
42694                                 p_business_method_code     => l_bflow_method_code
42695                                ,p_business_class_code      => l_bflow_class_code
42696                                ,p_inherit_description_flag => l_inherit_desc_flag);
42697    END IF;
42698 
42699    --
42700    -- call analytical criteria
42701    --
42702    -- Inherited Analytical Criteria for business flow method of Prior Entry.
42703    --
42704    -- call description
42705    --
42706    -- No description or it is inherited.
42707    --
42708    -- call ADRs
42709    -- Bug 4922099
42710    --
42711    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42712         (NVL(l_actual_upg_option, 'N') = 'O') OR
42713         (NVL(l_enc_upg_option, 'N') = 'O')
42714       )
42715    THEN
42716    NULL;
42717    --
42718    --
42719    
42720    --
42721    --
42722    END IF;
42723    --
42724    -- Bug 4922099
42725    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42726           (NVL(l_enc_upg_option, 'N') = 'O')
42727         ) AND
42728         (l_bflow_method_code = 'PRIOR_ENTRY')
42729       )
42730    THEN
42731       IF
42732       --
42733       1 = 1
42734       --
42735       THEN
42736       xla_accounting_err_pkg.build_message
42737                                     (p_appli_s_name            => 'XLA'
42738                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42739                                     ,p_token_1                 => 'LINE_NUMBER'
42740                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42741                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42742                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42743                                                                              l_component_type
42744                                                                             ,l_component_code
42745                                                                             ,l_component_type_code
42746                                                                             ,l_component_appl_id
42747                                                                             ,l_amb_context_code
42748                                                                             ,l_entity_code
42749                                                                             ,l_event_class_code
42750                                                                            )
42751                                     ,p_token_3                 => 'OWNER'
42752                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42753                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42754                                                                           ,p_lookup_code    => l_component_type_code
42755                                                                          )
42756                                     ,p_token_4                 => 'PRODUCT_NAME'
42757                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42758                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42759                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42760                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42761                                     ,p_ae_header_id            =>  NULL
42762                                        );
42763 
42764         IF (C_LEVEL_ERROR>= g_log_level) THEN
42765                  trace
42766                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42767                       ,p_level    => C_LEVEL_ERROR
42768                       ,p_module   => l_log_module);
42769         END IF;
42770       END IF;
42771    END IF;
42772    --
42773    --
42774    ------------------------------------------------------------------------------------------------
42775    -- 4219869 Business Flow
42776    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42777    -- Prior Entry.  Currently, the following code is always generated.
42778    ------------------------------------------------------------------------------------------------
42779    -- No ValidateCurrentLine for business flow method of Prior Entry
42780 
42781    ------------------------------------------------------------------------------------
42782    -- 4219869 Business Flow
42783    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42784    ------------------------------------------------------------------------------------
42785    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42786 
42787    ----------------------------------------------------------------------------------
42788    -- 4219869 Business Flow
42789    -- Update journal entry status -- Need to generate this within IF <condition>
42790    ----------------------------------------------------------------------------------
42791    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42792          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42793          ,p_balance_type_code => l_balance_type_code
42794          );
42795 
42796    -------------------------------------------------------------------------------------------
42797    -- 4262811 - Generate the Accrual Reversal lines
42798    -------------------------------------------------------------------------------------------
42799    BEGIN
42800       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42801                               (g_array_event(p_event_id).array_value_num('header_index'));
42802       IF l_acc_rev_flag IS NULL THEN
42803          l_acc_rev_flag := 'N';
42804       END IF;
42805    EXCEPTION
42806       WHEN OTHERS THEN
42807          l_acc_rev_flag := 'N';
42808    END;
42809    --
42810    IF (l_acc_rev_flag = 'Y') THEN
42811 
42812        -- 4645092  ------------------------------------------------------------------------------
42813        -- To allow MPA report to determine if it should generate report process
42814        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42815        ------------------------------------------------------------------------------------------
42816 
42817        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42818        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42819 
42820        --
42821        -- Update the line information that should be overwritten
42822        --
42823        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42824                                          p_header_num   => 1);
42825        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42826 
42827        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42828 
42829        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42830           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42831        END IF;
42832 
42833       --
42834       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42835       --
42836       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42837           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42838       ELSE
42839           ---------------------------------------------------------------------------------------------------
42840           -- 4262811a Switch Sign
42841           ---------------------------------------------------------------------------------------------------
42842           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42843           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42844                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42845           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42846                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42847           -- 5132302
42848           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42849                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42850 
42851       END IF;
42852 
42853       -- 4955764
42854       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42855       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42856 
42857 
42858       XLA_AE_LINES_PKG.ValidateCurrentLine;
42859       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42860 
42861       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42862                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42863                ,p_balance_type_code => l_balance_type_code);
42864 
42865    END IF;
42866 
42867    -----------------------------------------------------------------------------------------
42868    -- 4262811 Multiperiod Accounting
42869    -----------------------------------------------------------------------------------------
42870      -- No MPA option is assigned.
42871 
42872 
42873 END IF;
42874 END IF;
42875 --
42876 
42877 --
42878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42879    trace
42880       (p_msg      => 'END of AcctLineType_78'
42881       ,p_level    => C_LEVEL_PROCEDURE
42882       ,p_module   => l_log_module);
42883 END IF;
42884 --
42885 EXCEPTION
42886   WHEN xla_exceptions_pkg.application_exception THEN
42887       RAISE;
42888   WHEN OTHERS THEN
42889        xla_exceptions_pkg.raise_message
42890            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_78');
42891 END AcctLineType_78;
42892 --
42893 
42894 ---------------------------------------
42895 --
42896 -- PRIVATE FUNCTION
42897 --         AcctLineType_79
42898 --
42899 ---------------------------------------
42900 PROCEDURE AcctLineType_79 (
42901   p_application_id        IN NUMBER
42902  ,p_event_id              IN NUMBER
42903  ,p_calculate_acctd_flag  IN VARCHAR2
42904  ,p_calculate_g_l_flag    IN VARCHAR2
42905  ,p_actual_flag           IN OUT VARCHAR2
42906  ,p_balance_type_code     OUT VARCHAR2
42907  ,p_gain_or_loss_ref      OUT VARCHAR2
42908  
42909 --Budget Account
42910  , p_source_9            IN NUMBER
42911 --Accounting Reversal Flag
42912  , p_source_15            IN VARCHAR2
42913 --Distribution Link Type
42914  , p_source_17            IN VARCHAR2
42915 --Applied To Application Identifier
42916  , p_source_21            IN NUMBER
42917 --Applied To Distribution Link Type
42918  , p_source_22            IN VARCHAR2
42919 --Applied To Entity Code
42920  , p_source_23            IN VARCHAR2
42921 --Applied To Distribution Identifier 1
42922  , p_source_24            IN NUMBER
42923 --Applied To Header Identifier 1
42924  , p_source_25            IN NUMBER
42925 --Entered Amount
42926  , p_source_26            IN NUMBER
42927 --Currency Code
42928  , p_source_27            IN VARCHAR2
42929 --Accounted Amount
42930  , p_source_28            IN NUMBER
42931 --JFMIP Reference
42932  , p_source_31            IN VARCHAR2
42933 --Requisition Distribution Identifier
42934  , p_source_43            IN NUMBER
42935 --Requisition Identifier
42936  , p_source_44            IN NUMBER
42937 --Requisition Encumbrance Upgrade Option
42938  , p_source_45            IN VARCHAR2
42939 --Requisition Upgrade Encumbrance Type Identifier
42940  , p_source_46            IN NUMBER
42941 )
42942 IS
42943 
42944 l_component_type              VARCHAR2(80);
42945 l_component_code              VARCHAR2(30);
42946 l_component_type_code         VARCHAR2(1);
42947 l_component_appl_id           INTEGER;
42948 l_amb_context_code            VARCHAR2(30);
42949 l_entity_code                 VARCHAR2(30);
42950 l_event_class_code            VARCHAR2(30);
42951 l_ae_header_id                NUMBER;
42952 l_event_type_code             VARCHAR2(30);
42953 l_line_definition_code        VARCHAR2(30);
42954 l_line_definition_owner_code  VARCHAR2(1);
42955 --
42956 -- adr variables
42957 l_segment                     VARCHAR2(30);
42958 l_ccid                        NUMBER;
42959 l_adr_transaction_coa_id      NUMBER;
42960 l_adr_accounting_coa_id       NUMBER;
42961 l_adr_flexfield_segment_code  VARCHAR2(30);
42962 l_adr_flex_value_set_id       NUMBER;
42963 l_adr_value_type_code         VARCHAR2(30);
42964 l_adr_value_combination_id    NUMBER;
42965 l_adr_value_segment_code      VARCHAR2(30);
42966 
42967 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42968 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42969 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42970 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42971 
42972 -- 4262811 Variables ------------------------------------------------------------------------------------------
42973 l_entered_amt_idx             NUMBER;
42974 l_accted_amt_idx              NUMBER;
42975 l_acc_rev_flag                VARCHAR2(1);
42976 l_accrual_line_num            NUMBER;
42977 l_tmp_amt                     NUMBER;
42978 l_acc_rev_natural_side_code   VARCHAR2(1);
42979 
42980 l_num_entries                 NUMBER;
42981 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42982 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42983 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42984 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42985 l_recog_line_1                NUMBER;
42986 l_recog_line_2                NUMBER;
42987 
42988 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42989 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42990 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42991 
42992 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42993 
42994 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42995 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42996 
42997 ---------------------------------------------------------------------------------------------------------------
42998 
42999 
43000 --
43001 -- bulk performance
43002 --
43003 l_balance_type_code           VARCHAR2(1);
43004 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43005 l_log_module                  VARCHAR2(240);
43006 
43007 --
43008 -- Upgrade strategy
43009 --
43010 l_actual_upg_option           VARCHAR2(1);
43011 l_enc_upg_option           VARCHAR2(1);
43012 
43013 --
43014 BEGIN
43015 --
43016 IF g_log_enabled THEN
43017       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
43018 END IF;
43019 --
43020 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43021 
43022       trace
43023          (p_msg      => 'BEGIN of AcctLineType_79'
43024          ,p_level    => C_LEVEL_PROCEDURE
43025          ,p_module   => l_log_module);
43026 
43027 END IF;
43028 --
43029 l_component_type             := 'AMB_JLT';
43030 l_component_code             := 'FV_REQ_CANCEL_DR';
43031 l_component_type_code        := 'S';
43032 l_component_appl_id          :=  201;
43033 l_amb_context_code           := 'DEFAULT';
43034 l_entity_code                := 'REQUISITION';
43035 l_event_class_code           := 'REQUISITION';
43036 l_event_type_code            := 'REQUISITION_ALL';
43037 l_line_definition_owner_code := 'S';
43038 l_line_definition_code       := 'FV_REQ_ALL';
43039 --
43040 l_balance_type_code          := 'A';
43041 l_segment                     := NULL;
43042 l_ccid                        := NULL;
43043 l_adr_transaction_coa_id      := NULL;
43044 l_adr_accounting_coa_id       := NULL;
43045 l_adr_flexfield_segment_code  := NULL;
43046 l_adr_flex_value_set_id       := NULL;
43047 l_adr_value_type_code         := NULL;
43048 l_adr_value_combination_id    := NULL;
43049 l_adr_value_segment_code      := NULL;
43050 
43051 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
43052 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
43053 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
43054 l_budgetary_control_flag     := 'Y';
43055 
43056 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43057 l_bflow_applied_to_amt       := NULL; -- 5132302
43058 l_entered_amt_idx            := NULL;          -- 4262811
43059 l_accted_amt_idx             := NULL;          -- 4262811
43060 l_acc_rev_flag               := NULL;          -- 4262811
43061 l_accrual_line_num           := NULL;          -- 4262811
43062 l_tmp_amt                    := NULL;          -- 4262811
43063 --
43064  
43065 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43066     l_balance_type_code <> 'B' THEN
43067 IF NVL(
43068 xla_ae_sources_pkg.GetSystemSourceChar(
43069    p_source_code           => 'XLA_EVENT_TYPE_CODE'
43070  , p_source_type_code      => 'Y'
43071  , p_source_application_id =>  602
43072 ),'
43073 ') =  'REQ_CANCELLED'
43074  THEN 
43075 
43076    --
43077    XLA_AE_LINES_PKG.SetNewLine;
43078 
43079    p_balance_type_code          := l_balance_type_code;
43080    -- set the flag so later we will know whether the gain loss line needs to be created
43081    
43082    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43083      p_actual_flag :='A';
43084    END IF;
43085 
43086    --
43087    -- bulk performance
43088    --
43089    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43090                                       p_header_num   => 0); -- 4262811
43091    --
43092    -- set accounting line options
43093    --
43094    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43095            p_natural_side_code          => 'D'
43096          , p_gain_or_loss_flag          => 'N'
43097          , p_gl_transfer_mode_code      => 'S'
43098          , p_acct_entry_type_code       => 'A'
43099          , p_switch_side_flag           => 'N'
43100          , p_merge_duplicate_code       => 'N'
43101          );
43102    --
43103    l_acc_rev_natural_side_code := 'C';  -- 4262811
43104    -- 
43105    --
43106    -- set accounting line type info
43107    --
43108    xla_ae_lines_pkg.SetAcctLineType
43109       (p_component_type             => l_component_type
43110       ,p_event_type_code            => l_event_type_code
43111       ,p_line_definition_owner_code => l_line_definition_owner_code
43112       ,p_line_definition_code       => l_line_definition_code
43113       ,p_accounting_line_code       => l_component_code
43114       ,p_accounting_line_type_code  => l_component_type_code
43115       ,p_accounting_line_appl_id    => l_component_appl_id
43116       ,p_amb_context_code           => l_amb_context_code
43117       ,p_entity_code                => l_entity_code
43118       ,p_event_class_code           => l_event_class_code);
43119    --
43120    -- set accounting class
43121    --
43122    xla_ae_lines_pkg.SetAcctClass(
43123            p_accounting_class_code  => 'REQUISITION'
43124          , p_ae_header_id           => l_ae_header_id
43125          );
43126 
43127    --
43128    -- set rounding class
43129    --
43130    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43131                       'REQUISITION';
43132 
43133    --
43134    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43135    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43136    --
43137    -- bulk performance
43138    --
43139    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43140 
43141    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43142       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43143 
43144    -- 4955764
43145    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43146       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43147 
43148    -- 4458381 Public Sector Enh
43149    
43150    --
43151    -- set accounting attributes for the line type
43152    --
43153    l_entered_amt_idx := 23;
43154    l_accted_amt_idx  := 25;
43155    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43156    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43157    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
43158    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
43159    l_rec_acct_attrs.array_num_value(2)  := 
43160 xla_ae_sources_pkg.GetSystemSourceNum(
43161    p_source_code           => 'XLA_EVENT_APPL_ID'
43162  , p_source_type_code      => 'Y'
43163  , p_source_application_id =>  602
43164 );
43165    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
43166    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
43167    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
43168    l_rec_acct_attrs.array_char_value(4)  := 
43169 xla_ae_sources_pkg.GetSystemSourceChar(
43170    p_source_code           => 'XLA_ENTITY_CODE'
43171  , p_source_type_code      => 'Y'
43172  , p_source_application_id =>  602
43173 );
43174    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
43175    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_43);
43176    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
43177    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_44);
43178    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
43179    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
43180    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43181    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
43182    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
43183    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
43184    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
43185    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
43186    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43187    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
43188    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
43189    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_43);
43190    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
43191    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
43192    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
43193    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
43194    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
43195    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
43196    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
43197    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
43198    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
43199    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
43200    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
43201    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
43202    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
43203    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
43204    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
43205    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
43206    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
43207    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
43208    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
43209    l_rec_acct_attrs.array_char_value(22)  := p_source_45;
43210    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
43211    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
43212    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
43213    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
43214    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
43215    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
43216    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
43217    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
43218    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
43219    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
43220    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
43221    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
43222    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
43223    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_43);
43224    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
43225    l_rec_acct_attrs.array_num_value(30)  := p_source_46;
43226    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
43227    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
43228 
43229    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43230    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43231 
43232    ---------------------------------------------------------------------------------------------------------------
43233    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43234    ---------------------------------------------------------------------------------------------------------------
43235    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43236 
43237    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43238    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43239 
43240    IF xla_accounting_cache_pkg.GetValueChar
43241          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43242          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43243    AND l_bflow_method_code = 'PRIOR_ENTRY'
43244 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43245    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43246          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43247        )
43248    THEN
43249          xla_ae_lines_pkg.BflowUpgEntry
43250            (p_business_method_code    => l_bflow_method_code
43251            ,p_business_class_code     => l_bflow_class_code
43252            ,p_balance_type            => l_balance_type_code);
43253    ELSE
43254       NULL;
43255 XLA_AE_LINES_PKG.business_flow_validation(
43256                                 p_business_method_code     => l_bflow_method_code
43257                                ,p_business_class_code      => l_bflow_class_code
43258                                ,p_inherit_description_flag => l_inherit_desc_flag);
43259    END IF;
43260 
43261    --
43262    -- call analytical criteria
43263    --
43264    -- Inherited Analytical Criteria for business flow method of Prior Entry.
43265    --
43266    -- call description
43267    --
43268    -- No description or it is inherited.
43269    --
43270    -- call ADRs
43271    -- Bug 4922099
43272    --
43273    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43274         (NVL(l_actual_upg_option, 'N') = 'O') OR
43275         (NVL(l_enc_upg_option, 'N') = 'O')
43276       )
43277    THEN
43278    NULL;
43279    --
43280    --
43281    
43282    --
43283    --
43284    END IF;
43285    --
43286    -- Bug 4922099
43287    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43288           (NVL(l_enc_upg_option, 'N') = 'O')
43289         ) AND
43290         (l_bflow_method_code = 'PRIOR_ENTRY')
43291       )
43292    THEN
43293       IF
43294       --
43295       1 = 1
43296       --
43297       THEN
43298       xla_accounting_err_pkg.build_message
43299                                     (p_appli_s_name            => 'XLA'
43300                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43301                                     ,p_token_1                 => 'LINE_NUMBER'
43302                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43303                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43304                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43305                                                                              l_component_type
43306                                                                             ,l_component_code
43307                                                                             ,l_component_type_code
43308                                                                             ,l_component_appl_id
43309                                                                             ,l_amb_context_code
43310                                                                             ,l_entity_code
43311                                                                             ,l_event_class_code
43312                                                                            )
43313                                     ,p_token_3                 => 'OWNER'
43314                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43315                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43316                                                                           ,p_lookup_code    => l_component_type_code
43317                                                                          )
43318                                     ,p_token_4                 => 'PRODUCT_NAME'
43319                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43320                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43321                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43322                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43323                                     ,p_ae_header_id            =>  NULL
43324                                        );
43325 
43326         IF (C_LEVEL_ERROR>= g_log_level) THEN
43327                  trace
43328                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43329                       ,p_level    => C_LEVEL_ERROR
43330                       ,p_module   => l_log_module);
43331         END IF;
43332       END IF;
43333    END IF;
43334    --
43335    --
43336    ------------------------------------------------------------------------------------------------
43337    -- 4219869 Business Flow
43338    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43339    -- Prior Entry.  Currently, the following code is always generated.
43340    ------------------------------------------------------------------------------------------------
43341    -- No ValidateCurrentLine for business flow method of Prior Entry
43342 
43343    ------------------------------------------------------------------------------------
43344    -- 4219869 Business Flow
43345    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43346    ------------------------------------------------------------------------------------
43347    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43348 
43349    ----------------------------------------------------------------------------------
43350    -- 4219869 Business Flow
43351    -- Update journal entry status -- Need to generate this within IF <condition>
43352    ----------------------------------------------------------------------------------
43353    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43354          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43355          ,p_balance_type_code => l_balance_type_code
43356          );
43357 
43358    -------------------------------------------------------------------------------------------
43359    -- 4262811 - Generate the Accrual Reversal lines
43360    -------------------------------------------------------------------------------------------
43361    BEGIN
43362       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43363                               (g_array_event(p_event_id).array_value_num('header_index'));
43364       IF l_acc_rev_flag IS NULL THEN
43365          l_acc_rev_flag := 'N';
43366       END IF;
43367    EXCEPTION
43368       WHEN OTHERS THEN
43369          l_acc_rev_flag := 'N';
43370    END;
43371    --
43372    IF (l_acc_rev_flag = 'Y') THEN
43373 
43374        -- 4645092  ------------------------------------------------------------------------------
43375        -- To allow MPA report to determine if it should generate report process
43376        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43377        ------------------------------------------------------------------------------------------
43378 
43379        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43380        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43381 
43382        --
43383        -- Update the line information that should be overwritten
43384        --
43385        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43386                                          p_header_num   => 1);
43387        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43388 
43389        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43390 
43391        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43392           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43393        END IF;
43394 
43395       --
43396       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43397       --
43398       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43399           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43400       ELSE
43401           ---------------------------------------------------------------------------------------------------
43402           -- 4262811a Switch Sign
43403           ---------------------------------------------------------------------------------------------------
43404           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43405           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43406                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43407           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43408                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43409           -- 5132302
43410           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43411                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43412 
43413       END IF;
43414 
43415       -- 4955764
43416       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43417       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43418 
43419 
43420       XLA_AE_LINES_PKG.ValidateCurrentLine;
43421       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43422 
43423       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43424                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43425                ,p_balance_type_code => l_balance_type_code);
43426 
43427    END IF;
43428 
43429    -----------------------------------------------------------------------------------------
43430    -- 4262811 Multiperiod Accounting
43431    -----------------------------------------------------------------------------------------
43432      -- No MPA option is assigned.
43433 
43434 
43435 END IF;
43436 END IF;
43437 --
43438 
43439 --
43440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43441    trace
43442       (p_msg      => 'END of AcctLineType_79'
43443       ,p_level    => C_LEVEL_PROCEDURE
43444       ,p_module   => l_log_module);
43445 END IF;
43446 --
43447 EXCEPTION
43448   WHEN xla_exceptions_pkg.application_exception THEN
43449       RAISE;
43450   WHEN OTHERS THEN
43451        xla_exceptions_pkg.raise_message
43452            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_79');
43453 END AcctLineType_79;
43454 --
43455 
43456 ---------------------------------------
43457 --
43458 -- PRIVATE FUNCTION
43459 --         AcctLineType_80
43460 --
43461 ---------------------------------------
43462 PROCEDURE AcctLineType_80 (
43463   p_application_id        IN NUMBER
43464  ,p_event_id              IN NUMBER
43465  ,p_calculate_acctd_flag  IN VARCHAR2
43466  ,p_calculate_g_l_flag    IN VARCHAR2
43467  ,p_actual_flag           IN OUT VARCHAR2
43468  ,p_balance_type_code     OUT VARCHAR2
43469  ,p_gain_or_loss_ref      OUT VARCHAR2
43470  
43471 --Budget Account
43472  , p_source_9            IN NUMBER
43473 --Main Or Backing Code
43474  , p_source_13            IN VARCHAR2
43475 --Accounting Reversal Flag
43476  , p_source_15            IN VARCHAR2
43477 --Distribution Link Type
43478  , p_source_17            IN VARCHAR2
43479 --PO Distribution Identifier
43480  , p_source_19            IN NUMBER
43481 --PO Header Identifier
43482  , p_source_20            IN NUMBER
43483 --Applied To Application Identifier
43484  , p_source_21            IN NUMBER
43485 --Applied To Distribution Link Type
43486  , p_source_22            IN VARCHAR2
43487 --Applied To Entity Code
43488  , p_source_23            IN VARCHAR2
43489 --Applied To Distribution Identifier 1
43490  , p_source_24            IN NUMBER
43491 --Applied To Header Identifier 1
43492  , p_source_25            IN NUMBER
43493 --Entered Amount
43494  , p_source_26            IN NUMBER
43495 --Currency Code
43496  , p_source_27            IN VARCHAR2
43497 --Accounted Amount
43498  , p_source_28            IN NUMBER
43499 --PO Encumbrance Upgrade Option
43500  , p_source_29            IN VARCHAR2
43501 --JFMIP Reference
43502  , p_source_31            IN VARCHAR2
43503 --PO Upgrade Encumbrance Type Identifier
43504  , p_source_32            IN NUMBER
43505 --Allocated to Main Document Distribution Type
43506  , p_source_33            IN VARCHAR2
43507 --Allocated to Main Document Distribution Identifier
43508  , p_source_34            IN NUMBER
43509 )
43510 IS
43511 
43512 l_component_type              VARCHAR2(80);
43513 l_component_code              VARCHAR2(30);
43514 l_component_type_code         VARCHAR2(1);
43515 l_component_appl_id           INTEGER;
43516 l_amb_context_code            VARCHAR2(30);
43517 l_entity_code                 VARCHAR2(30);
43518 l_event_class_code            VARCHAR2(30);
43519 l_ae_header_id                NUMBER;
43520 l_event_type_code             VARCHAR2(30);
43521 l_line_definition_code        VARCHAR2(30);
43522 l_line_definition_owner_code  VARCHAR2(1);
43523 --
43524 -- adr variables
43525 l_segment                     VARCHAR2(30);
43526 l_ccid                        NUMBER;
43527 l_adr_transaction_coa_id      NUMBER;
43528 l_adr_accounting_coa_id       NUMBER;
43529 l_adr_flexfield_segment_code  VARCHAR2(30);
43530 l_adr_flex_value_set_id       NUMBER;
43531 l_adr_value_type_code         VARCHAR2(30);
43532 l_adr_value_combination_id    NUMBER;
43533 l_adr_value_segment_code      VARCHAR2(30);
43534 
43535 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43536 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43537 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43538 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43539 
43540 -- 4262811 Variables ------------------------------------------------------------------------------------------
43541 l_entered_amt_idx             NUMBER;
43542 l_accted_amt_idx              NUMBER;
43543 l_acc_rev_flag                VARCHAR2(1);
43544 l_accrual_line_num            NUMBER;
43545 l_tmp_amt                     NUMBER;
43546 l_acc_rev_natural_side_code   VARCHAR2(1);
43547 
43548 l_num_entries                 NUMBER;
43549 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43550 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43551 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43552 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43553 l_recog_line_1                NUMBER;
43554 l_recog_line_2                NUMBER;
43555 
43556 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43557 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43558 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43559 
43560 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43561 
43562 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43563 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43564 
43565 ---------------------------------------------------------------------------------------------------------------
43566 
43567 
43568 --
43569 -- bulk performance
43570 --
43571 l_balance_type_code           VARCHAR2(1);
43572 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43573 l_log_module                  VARCHAR2(240);
43574 
43575 --
43576 -- Upgrade strategy
43577 --
43578 l_actual_upg_option           VARCHAR2(1);
43579 l_enc_upg_option           VARCHAR2(1);
43580 
43581 --
43582 BEGIN
43583 --
43584 IF g_log_enabled THEN
43585       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
43586 END IF;
43587 --
43588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43589 
43590       trace
43591          (p_msg      => 'BEGIN of AcctLineType_80'
43592          ,p_level    => C_LEVEL_PROCEDURE
43593          ,p_module   => l_log_module);
43594 
43595 END IF;
43596 --
43597 l_component_type             := 'AMB_JLT';
43598 l_component_code             := 'FV_REQ_RELIEVE_CR';
43599 l_component_type_code        := 'S';
43600 l_component_appl_id          :=  201;
43601 l_amb_context_code           := 'DEFAULT';
43602 l_entity_code                := 'PURCHASE_ORDER';
43603 l_event_class_code           := 'PO_PA';
43604 l_event_type_code            := 'PO_PA_ALL';
43605 l_line_definition_owner_code := 'S';
43606 l_line_definition_code       := 'FV_PO_ALL';
43607 --
43608 l_balance_type_code          := 'A';
43609 l_segment                     := NULL;
43610 l_ccid                        := NULL;
43611 l_adr_transaction_coa_id      := NULL;
43612 l_adr_accounting_coa_id       := NULL;
43613 l_adr_flexfield_segment_code  := NULL;
43614 l_adr_flex_value_set_id       := NULL;
43615 l_adr_value_type_code         := NULL;
43616 l_adr_value_combination_id    := NULL;
43617 l_adr_value_segment_code      := NULL;
43618 
43619 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
43620 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
43621 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
43622 l_budgetary_control_flag     := 'Y';
43623 
43624 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43625 l_bflow_applied_to_amt       := NULL; -- 5132302
43626 l_entered_amt_idx            := NULL;          -- 4262811
43627 l_accted_amt_idx             := NULL;          -- 4262811
43628 l_acc_rev_flag               := NULL;          -- 4262811
43629 l_accrual_line_num           := NULL;          -- 4262811
43630 l_tmp_amt                    := NULL;          -- 4262811
43631 --
43632  
43633 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43634     l_balance_type_code <> 'B' THEN
43635 IF NVL(
43636 xla_ae_sources_pkg.GetSystemSourceChar(
43637    p_source_code           => 'XLA_EVENT_TYPE_CODE'
43638  , p_source_type_code      => 'Y'
43639  , p_source_application_id =>  602
43640 ),'
43641 ') =  'PO_PA_RESERVED' AND 
43642 NVL(p_source_13,'
43643 ') =  'B_REQ'
43644  THEN 
43645 
43646    --
43647    XLA_AE_LINES_PKG.SetNewLine;
43648 
43649    p_balance_type_code          := l_balance_type_code;
43650    -- set the flag so later we will know whether the gain loss line needs to be created
43651    
43652    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43653      p_actual_flag :='A';
43654    END IF;
43655 
43656    --
43657    -- bulk performance
43658    --
43659    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43660                                       p_header_num   => 0); -- 4262811
43661    --
43662    -- set accounting line options
43663    --
43664    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43665            p_natural_side_code          => 'C'
43666          , p_gain_or_loss_flag          => 'N'
43667          , p_gl_transfer_mode_code      => 'S'
43668          , p_acct_entry_type_code       => 'A'
43669          , p_switch_side_flag           => 'N'
43670          , p_merge_duplicate_code       => 'N'
43671          );
43672    --
43673    l_acc_rev_natural_side_code := 'D';  -- 4262811
43674    -- 
43675    --
43676    -- set accounting line type info
43677    --
43678    xla_ae_lines_pkg.SetAcctLineType
43679       (p_component_type             => l_component_type
43680       ,p_event_type_code            => l_event_type_code
43681       ,p_line_definition_owner_code => l_line_definition_owner_code
43682       ,p_line_definition_code       => l_line_definition_code
43683       ,p_accounting_line_code       => l_component_code
43684       ,p_accounting_line_type_code  => l_component_type_code
43685       ,p_accounting_line_appl_id    => l_component_appl_id
43686       ,p_amb_context_code           => l_amb_context_code
43687       ,p_entity_code                => l_entity_code
43688       ,p_event_class_code           => l_event_class_code);
43689    --
43690    -- set accounting class
43691    --
43692    xla_ae_lines_pkg.SetAcctClass(
43693            p_accounting_class_code  => 'PURCHASE_ORDER'
43694          , p_ae_header_id           => l_ae_header_id
43695          );
43696 
43697    --
43698    -- set rounding class
43699    --
43700    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43701                       'PURCHASE_ORDER';
43702 
43703    --
43704    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43705    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43706    --
43707    -- bulk performance
43708    --
43709    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43710 
43711    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43712       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43713 
43714    -- 4955764
43715    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43716       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43717 
43718    -- 4458381 Public Sector Enh
43719    
43720    --
43721    -- set accounting attributes for the line type
43722    --
43723    l_entered_amt_idx := 23;
43724    l_accted_amt_idx  := 25;
43725    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43726    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43727    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
43728    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
43729    l_rec_acct_attrs.array_num_value(2)  := 
43730 xla_ae_sources_pkg.GetSystemSourceNum(
43731    p_source_code           => 'XLA_EVENT_APPL_ID'
43732  , p_source_type_code      => 'Y'
43733  , p_source_application_id =>  602
43734 );
43735    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
43736    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
43737    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
43738    l_rec_acct_attrs.array_char_value(4)  := 
43739 xla_ae_sources_pkg.GetSystemSourceChar(
43740    p_source_code           => 'XLA_ENTITY_CODE'
43741  , p_source_type_code      => 'Y'
43742  , p_source_application_id =>  602
43743 );
43744    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
43745    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
43746    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
43747    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
43748    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
43749    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
43750    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43751    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
43752    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
43753    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
43754    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
43755    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
43756    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43757    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
43758    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
43759    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
43760    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
43761    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
43762    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
43763    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
43764    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
43765    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
43766    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
43767    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
43768    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
43769    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
43770    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
43771    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
43772    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
43773    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
43774    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
43775    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
43776    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
43777    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
43778    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
43779    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
43780    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
43781    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
43782    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
43783    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
43784    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
43785    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
43786    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
43787    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
43788    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
43789    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
43790    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
43791    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
43792    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
43793    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
43794    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
43795    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
43796    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
43797    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
43798 
43799    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43800    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43801 
43802    ---------------------------------------------------------------------------------------------------------------
43803    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43804    ---------------------------------------------------------------------------------------------------------------
43805    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43806 
43807    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43808    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43809 
43810    IF xla_accounting_cache_pkg.GetValueChar
43811          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43812          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43813    AND l_bflow_method_code = 'PRIOR_ENTRY'
43814 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43815    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43816          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43817        )
43818    THEN
43819          xla_ae_lines_pkg.BflowUpgEntry
43820            (p_business_method_code    => l_bflow_method_code
43821            ,p_business_class_code     => l_bflow_class_code
43822            ,p_balance_type            => l_balance_type_code);
43823    ELSE
43824       NULL;
43825 XLA_AE_LINES_PKG.business_flow_validation(
43826                                 p_business_method_code     => l_bflow_method_code
43827                                ,p_business_class_code      => l_bflow_class_code
43828                                ,p_inherit_description_flag => l_inherit_desc_flag);
43829    END IF;
43830 
43831    --
43832    -- call analytical criteria
43833    --
43834    -- Inherited Analytical Criteria for business flow method of Prior Entry.
43835    --
43836    -- call description
43837    --
43838    -- No description or it is inherited.
43839    --
43840    -- call ADRs
43841    -- Bug 4922099
43842    --
43843    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43844         (NVL(l_actual_upg_option, 'N') = 'O') OR
43845         (NVL(l_enc_upg_option, 'N') = 'O')
43846       )
43847    THEN
43848    NULL;
43849    --
43850    --
43851    
43852    --
43853    --
43854    END IF;
43855    --
43856    -- Bug 4922099
43857    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43858           (NVL(l_enc_upg_option, 'N') = 'O')
43859         ) AND
43860         (l_bflow_method_code = 'PRIOR_ENTRY')
43861       )
43862    THEN
43863       IF
43864       --
43865       1 = 1
43866       --
43867       THEN
43868       xla_accounting_err_pkg.build_message
43869                                     (p_appli_s_name            => 'XLA'
43870                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43871                                     ,p_token_1                 => 'LINE_NUMBER'
43872                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43873                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43874                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43875                                                                              l_component_type
43876                                                                             ,l_component_code
43877                                                                             ,l_component_type_code
43878                                                                             ,l_component_appl_id
43879                                                                             ,l_amb_context_code
43880                                                                             ,l_entity_code
43881                                                                             ,l_event_class_code
43882                                                                            )
43883                                     ,p_token_3                 => 'OWNER'
43884                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43885                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43886                                                                           ,p_lookup_code    => l_component_type_code
43887                                                                          )
43888                                     ,p_token_4                 => 'PRODUCT_NAME'
43889                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43890                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43891                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43892                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43893                                     ,p_ae_header_id            =>  NULL
43894                                        );
43895 
43896         IF (C_LEVEL_ERROR>= g_log_level) THEN
43897                  trace
43898                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43899                       ,p_level    => C_LEVEL_ERROR
43900                       ,p_module   => l_log_module);
43901         END IF;
43902       END IF;
43903    END IF;
43904    --
43905    --
43906    ------------------------------------------------------------------------------------------------
43907    -- 4219869 Business Flow
43908    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43909    -- Prior Entry.  Currently, the following code is always generated.
43910    ------------------------------------------------------------------------------------------------
43911    -- No ValidateCurrentLine for business flow method of Prior Entry
43912 
43913    ------------------------------------------------------------------------------------
43914    -- 4219869 Business Flow
43915    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43916    ------------------------------------------------------------------------------------
43917    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43918 
43919    ----------------------------------------------------------------------------------
43920    -- 4219869 Business Flow
43921    -- Update journal entry status -- Need to generate this within IF <condition>
43922    ----------------------------------------------------------------------------------
43923    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43924          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43925          ,p_balance_type_code => l_balance_type_code
43926          );
43927 
43928    -------------------------------------------------------------------------------------------
43929    -- 4262811 - Generate the Accrual Reversal lines
43930    -------------------------------------------------------------------------------------------
43931    BEGIN
43932       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43933                               (g_array_event(p_event_id).array_value_num('header_index'));
43934       IF l_acc_rev_flag IS NULL THEN
43935          l_acc_rev_flag := 'N';
43936       END IF;
43937    EXCEPTION
43938       WHEN OTHERS THEN
43939          l_acc_rev_flag := 'N';
43940    END;
43941    --
43942    IF (l_acc_rev_flag = 'Y') THEN
43943 
43944        -- 4645092  ------------------------------------------------------------------------------
43945        -- To allow MPA report to determine if it should generate report process
43946        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43947        ------------------------------------------------------------------------------------------
43948 
43949        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43950        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43951 
43952        --
43953        -- Update the line information that should be overwritten
43954        --
43955        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43956                                          p_header_num   => 1);
43957        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43958 
43959        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43960 
43961        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43962           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43963        END IF;
43964 
43965       --
43966       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43967       --
43968       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43969           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43970       ELSE
43971           ---------------------------------------------------------------------------------------------------
43972           -- 4262811a Switch Sign
43973           ---------------------------------------------------------------------------------------------------
43974           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43975           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43976                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43977           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43978                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43979           -- 5132302
43980           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43981                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43982 
43983       END IF;
43984 
43985       -- 4955764
43986       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43987       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43988 
43989 
43990       XLA_AE_LINES_PKG.ValidateCurrentLine;
43991       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43992 
43993       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43994                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43995                ,p_balance_type_code => l_balance_type_code);
43996 
43997    END IF;
43998 
43999    -----------------------------------------------------------------------------------------
44000    -- 4262811 Multiperiod Accounting
44001    -----------------------------------------------------------------------------------------
44002      -- No MPA option is assigned.
44003 
44004 
44005 END IF;
44006 END IF;
44007 --
44008 
44009 --
44010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44011    trace
44012       (p_msg      => 'END of AcctLineType_80'
44013       ,p_level    => C_LEVEL_PROCEDURE
44014       ,p_module   => l_log_module);
44015 END IF;
44016 --
44017 EXCEPTION
44018   WHEN xla_exceptions_pkg.application_exception THEN
44019       RAISE;
44020   WHEN OTHERS THEN
44021        xla_exceptions_pkg.raise_message
44022            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_80');
44023 END AcctLineType_80;
44024 --
44025 
44026 ---------------------------------------
44027 --
44028 -- PRIVATE FUNCTION
44029 --         AcctLineType_81
44030 --
44031 ---------------------------------------
44032 PROCEDURE AcctLineType_81 (
44033   p_application_id        IN NUMBER
44034  ,p_event_id              IN NUMBER
44035  ,p_calculate_acctd_flag  IN VARCHAR2
44036  ,p_calculate_g_l_flag    IN VARCHAR2
44037  ,p_actual_flag           IN OUT VARCHAR2
44038  ,p_balance_type_code     OUT VARCHAR2
44039  ,p_gain_or_loss_ref      OUT VARCHAR2
44040  
44041 --Budget Account
44042  , p_source_9            IN NUMBER
44043 --Main Or Backing Code
44044  , p_source_13            IN VARCHAR2
44045 --Accounting Reversal Flag
44046  , p_source_15            IN VARCHAR2
44047 --Distribution Link Type
44048  , p_source_17            IN VARCHAR2
44049 --PO Distribution Identifier
44050  , p_source_19            IN NUMBER
44051 --PO Header Identifier
44052  , p_source_20            IN NUMBER
44053 --Applied To Application Identifier
44054  , p_source_21            IN NUMBER
44055 --Applied To Distribution Link Type
44056  , p_source_22            IN VARCHAR2
44057 --Applied To Entity Code
44058  , p_source_23            IN VARCHAR2
44059 --Applied To Distribution Identifier 1
44060  , p_source_24            IN NUMBER
44061 --Applied To Header Identifier 1
44062  , p_source_25            IN NUMBER
44063 --Entered Amount
44064  , p_source_26            IN NUMBER
44065 --Currency Code
44066  , p_source_27            IN VARCHAR2
44067 --Accounted Amount
44068  , p_source_28            IN NUMBER
44069 --PO Encumbrance Upgrade Option
44070  , p_source_29            IN VARCHAR2
44071 --JFMIP Reference
44072  , p_source_31            IN VARCHAR2
44073 --PO Upgrade Encumbrance Type Identifier
44074  , p_source_32            IN NUMBER
44075 --Allocated to Main Document Distribution Type
44076  , p_source_33            IN VARCHAR2
44077 --Allocated to Main Document Distribution Identifier
44078  , p_source_34            IN NUMBER
44079 )
44080 IS
44081 
44082 l_component_type              VARCHAR2(80);
44083 l_component_code              VARCHAR2(30);
44084 l_component_type_code         VARCHAR2(1);
44085 l_component_appl_id           INTEGER;
44086 l_amb_context_code            VARCHAR2(30);
44087 l_entity_code                 VARCHAR2(30);
44088 l_event_class_code            VARCHAR2(30);
44089 l_ae_header_id                NUMBER;
44090 l_event_type_code             VARCHAR2(30);
44091 l_line_definition_code        VARCHAR2(30);
44092 l_line_definition_owner_code  VARCHAR2(1);
44093 --
44094 -- adr variables
44095 l_segment                     VARCHAR2(30);
44096 l_ccid                        NUMBER;
44097 l_adr_transaction_coa_id      NUMBER;
44098 l_adr_accounting_coa_id       NUMBER;
44099 l_adr_flexfield_segment_code  VARCHAR2(30);
44100 l_adr_flex_value_set_id       NUMBER;
44101 l_adr_value_type_code         VARCHAR2(30);
44102 l_adr_value_combination_id    NUMBER;
44103 l_adr_value_segment_code      VARCHAR2(30);
44104 
44105 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44106 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44107 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44108 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44109 
44110 -- 4262811 Variables ------------------------------------------------------------------------------------------
44111 l_entered_amt_idx             NUMBER;
44112 l_accted_amt_idx              NUMBER;
44113 l_acc_rev_flag                VARCHAR2(1);
44114 l_accrual_line_num            NUMBER;
44115 l_tmp_amt                     NUMBER;
44116 l_acc_rev_natural_side_code   VARCHAR2(1);
44117 
44118 l_num_entries                 NUMBER;
44119 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44120 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44121 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44122 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44123 l_recog_line_1                NUMBER;
44124 l_recog_line_2                NUMBER;
44125 
44126 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44127 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44128 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44129 
44130 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44131 
44132 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44133 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44134 
44135 ---------------------------------------------------------------------------------------------------------------
44136 
44137 
44138 --
44139 -- bulk performance
44140 --
44141 l_balance_type_code           VARCHAR2(1);
44142 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44143 l_log_module                  VARCHAR2(240);
44144 
44145 --
44146 -- Upgrade strategy
44147 --
44148 l_actual_upg_option           VARCHAR2(1);
44149 l_enc_upg_option           VARCHAR2(1);
44150 
44151 --
44152 BEGIN
44153 --
44154 IF g_log_enabled THEN
44155       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
44156 END IF;
44157 --
44158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44159 
44160       trace
44161          (p_msg      => 'BEGIN of AcctLineType_81'
44162          ,p_level    => C_LEVEL_PROCEDURE
44163          ,p_module   => l_log_module);
44164 
44165 END IF;
44166 --
44167 l_component_type             := 'AMB_JLT';
44168 l_component_code             := 'FV_REQ_RELIEVE_DR';
44169 l_component_type_code        := 'S';
44170 l_component_appl_id          :=  201;
44171 l_amb_context_code           := 'DEFAULT';
44172 l_entity_code                := 'PURCHASE_ORDER';
44173 l_event_class_code           := 'PO_PA';
44174 l_event_type_code            := 'PO_PA_ALL';
44175 l_line_definition_owner_code := 'S';
44176 l_line_definition_code       := 'FV_PO_ALL';
44177 --
44178 l_balance_type_code          := 'A';
44179 l_segment                     := NULL;
44180 l_ccid                        := NULL;
44181 l_adr_transaction_coa_id      := NULL;
44182 l_adr_accounting_coa_id       := NULL;
44183 l_adr_flexfield_segment_code  := NULL;
44184 l_adr_flex_value_set_id       := NULL;
44185 l_adr_value_type_code         := NULL;
44186 l_adr_value_combination_id    := NULL;
44187 l_adr_value_segment_code      := NULL;
44188 
44189 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
44190 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
44191 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
44192 l_budgetary_control_flag     := 'Y';
44193 
44194 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44195 l_bflow_applied_to_amt       := NULL; -- 5132302
44196 l_entered_amt_idx            := NULL;          -- 4262811
44197 l_accted_amt_idx             := NULL;          -- 4262811
44198 l_acc_rev_flag               := NULL;          -- 4262811
44199 l_accrual_line_num           := NULL;          -- 4262811
44200 l_tmp_amt                    := NULL;          -- 4262811
44201 --
44202  
44203 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44204     l_balance_type_code <> 'B' THEN
44205 IF NVL(
44206 xla_ae_sources_pkg.GetSystemSourceChar(
44207    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44208  , p_source_type_code      => 'Y'
44209  , p_source_application_id =>  602
44210 ),'
44211 ') =  'PO_PA_RESERVED' AND 
44212 NVL(p_source_13,'
44213 ') =  'B_REQ'
44214  THEN 
44215 
44216    --
44217    XLA_AE_LINES_PKG.SetNewLine;
44218 
44219    p_balance_type_code          := l_balance_type_code;
44220    -- set the flag so later we will know whether the gain loss line needs to be created
44221    
44222    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44223      p_actual_flag :='A';
44224    END IF;
44225 
44226    --
44227    -- bulk performance
44228    --
44229    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44230                                       p_header_num   => 0); -- 4262811
44231    --
44232    -- set accounting line options
44233    --
44234    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44235            p_natural_side_code          => 'D'
44236          , p_gain_or_loss_flag          => 'N'
44237          , p_gl_transfer_mode_code      => 'S'
44238          , p_acct_entry_type_code       => 'A'
44239          , p_switch_side_flag           => 'N'
44240          , p_merge_duplicate_code       => 'N'
44241          );
44242    --
44243    l_acc_rev_natural_side_code := 'C';  -- 4262811
44244    -- 
44245    --
44246    -- set accounting line type info
44247    --
44248    xla_ae_lines_pkg.SetAcctLineType
44249       (p_component_type             => l_component_type
44250       ,p_event_type_code            => l_event_type_code
44251       ,p_line_definition_owner_code => l_line_definition_owner_code
44252       ,p_line_definition_code       => l_line_definition_code
44253       ,p_accounting_line_code       => l_component_code
44254       ,p_accounting_line_type_code  => l_component_type_code
44255       ,p_accounting_line_appl_id    => l_component_appl_id
44256       ,p_amb_context_code           => l_amb_context_code
44257       ,p_entity_code                => l_entity_code
44258       ,p_event_class_code           => l_event_class_code);
44259    --
44260    -- set accounting class
44261    --
44262    xla_ae_lines_pkg.SetAcctClass(
44263            p_accounting_class_code  => 'PURCHASE_ORDER'
44264          , p_ae_header_id           => l_ae_header_id
44265          );
44266 
44267    --
44268    -- set rounding class
44269    --
44270    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44271                       'PURCHASE_ORDER';
44272 
44273    --
44274    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44275    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44276    --
44277    -- bulk performance
44278    --
44279    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44280 
44281    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44282       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44283 
44284    -- 4955764
44285    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44286       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44287 
44288    -- 4458381 Public Sector Enh
44289    
44290    --
44291    -- set accounting attributes for the line type
44292    --
44293    l_entered_amt_idx := 23;
44294    l_accted_amt_idx  := 25;
44295    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44296    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44297    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
44298    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
44299    l_rec_acct_attrs.array_num_value(2)  := 
44300 xla_ae_sources_pkg.GetSystemSourceNum(
44301    p_source_code           => 'XLA_EVENT_APPL_ID'
44302  , p_source_type_code      => 'Y'
44303  , p_source_application_id =>  602
44304 );
44305    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
44306    l_rec_acct_attrs.array_char_value(3)  := p_source_33;
44307    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
44308    l_rec_acct_attrs.array_char_value(4)  := 
44309 xla_ae_sources_pkg.GetSystemSourceChar(
44310    p_source_code           => 'XLA_ENTITY_CODE'
44311  , p_source_type_code      => 'Y'
44312  , p_source_application_id =>  602
44313 );
44314    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
44315    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_34);
44316    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
44317    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_20);
44318    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
44319    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
44320    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44321    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
44322    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
44323    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
44324    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
44325    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
44326    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44327    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
44328    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
44329    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_19);
44330    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
44331    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
44332    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
44333    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
44334    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
44335    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
44336    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
44337    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
44338    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
44339    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
44340    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
44341    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
44342    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
44343    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
44344    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
44345    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
44346    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
44347    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
44348    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
44349    l_rec_acct_attrs.array_char_value(22)  := p_source_29;
44350    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
44351    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
44352    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
44353    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
44354    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
44355    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
44356    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
44357    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
44358    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
44359    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
44360    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
44361    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
44362    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
44363    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_19);
44364    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
44365    l_rec_acct_attrs.array_num_value(30)  := p_source_32;
44366    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
44367    l_rec_acct_attrs.array_num_value(31)  := p_source_32;
44368 
44369    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44370    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44371 
44372    ---------------------------------------------------------------------------------------------------------------
44373    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44374    ---------------------------------------------------------------------------------------------------------------
44375    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44376 
44377    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44378    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44379 
44380    IF xla_accounting_cache_pkg.GetValueChar
44381          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44382          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44383    AND l_bflow_method_code = 'PRIOR_ENTRY'
44384 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44385    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44386          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44387        )
44388    THEN
44389          xla_ae_lines_pkg.BflowUpgEntry
44390            (p_business_method_code    => l_bflow_method_code
44391            ,p_business_class_code     => l_bflow_class_code
44392            ,p_balance_type            => l_balance_type_code);
44393    ELSE
44394       NULL;
44395 XLA_AE_LINES_PKG.business_flow_validation(
44396                                 p_business_method_code     => l_bflow_method_code
44397                                ,p_business_class_code      => l_bflow_class_code
44398                                ,p_inherit_description_flag => l_inherit_desc_flag);
44399    END IF;
44400 
44401    --
44402    -- call analytical criteria
44403    --
44404    -- Inherited Analytical Criteria for business flow method of Prior Entry.
44405    --
44406    -- call description
44407    --
44408    -- No description or it is inherited.
44409    --
44410    -- call ADRs
44411    -- Bug 4922099
44412    --
44413    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44414         (NVL(l_actual_upg_option, 'N') = 'O') OR
44415         (NVL(l_enc_upg_option, 'N') = 'O')
44416       )
44417    THEN
44418    NULL;
44419    --
44420    --
44421    
44422    --
44423    --
44424    END IF;
44425    --
44426    -- Bug 4922099
44427    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44428           (NVL(l_enc_upg_option, 'N') = 'O')
44429         ) AND
44430         (l_bflow_method_code = 'PRIOR_ENTRY')
44431       )
44432    THEN
44433       IF
44434       --
44435       1 = 1
44436       --
44437       THEN
44438       xla_accounting_err_pkg.build_message
44439                                     (p_appli_s_name            => 'XLA'
44440                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44441                                     ,p_token_1                 => 'LINE_NUMBER'
44442                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44443                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44444                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44445                                                                              l_component_type
44446                                                                             ,l_component_code
44447                                                                             ,l_component_type_code
44448                                                                             ,l_component_appl_id
44449                                                                             ,l_amb_context_code
44450                                                                             ,l_entity_code
44451                                                                             ,l_event_class_code
44452                                                                            )
44453                                     ,p_token_3                 => 'OWNER'
44454                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44455                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44456                                                                           ,p_lookup_code    => l_component_type_code
44457                                                                          )
44458                                     ,p_token_4                 => 'PRODUCT_NAME'
44459                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44460                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44461                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44462                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44463                                     ,p_ae_header_id            =>  NULL
44464                                        );
44465 
44466         IF (C_LEVEL_ERROR>= g_log_level) THEN
44467                  trace
44468                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44469                       ,p_level    => C_LEVEL_ERROR
44470                       ,p_module   => l_log_module);
44471         END IF;
44472       END IF;
44473    END IF;
44474    --
44475    --
44476    ------------------------------------------------------------------------------------------------
44477    -- 4219869 Business Flow
44478    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44479    -- Prior Entry.  Currently, the following code is always generated.
44480    ------------------------------------------------------------------------------------------------
44481    -- No ValidateCurrentLine for business flow method of Prior Entry
44482 
44483    ------------------------------------------------------------------------------------
44484    -- 4219869 Business Flow
44485    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44486    ------------------------------------------------------------------------------------
44487    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44488 
44489    ----------------------------------------------------------------------------------
44490    -- 4219869 Business Flow
44491    -- Update journal entry status -- Need to generate this within IF <condition>
44492    ----------------------------------------------------------------------------------
44493    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44494          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44495          ,p_balance_type_code => l_balance_type_code
44496          );
44497 
44498    -------------------------------------------------------------------------------------------
44499    -- 4262811 - Generate the Accrual Reversal lines
44500    -------------------------------------------------------------------------------------------
44501    BEGIN
44502       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44503                               (g_array_event(p_event_id).array_value_num('header_index'));
44504       IF l_acc_rev_flag IS NULL THEN
44505          l_acc_rev_flag := 'N';
44506       END IF;
44507    EXCEPTION
44508       WHEN OTHERS THEN
44509          l_acc_rev_flag := 'N';
44510    END;
44511    --
44512    IF (l_acc_rev_flag = 'Y') THEN
44513 
44514        -- 4645092  ------------------------------------------------------------------------------
44515        -- To allow MPA report to determine if it should generate report process
44516        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44517        ------------------------------------------------------------------------------------------
44518 
44519        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44520        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44521 
44522        --
44523        -- Update the line information that should be overwritten
44524        --
44525        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44526                                          p_header_num   => 1);
44527        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44528 
44529        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44530 
44531        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44532           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44533        END IF;
44534 
44535       --
44536       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44537       --
44538       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44539           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44540       ELSE
44541           ---------------------------------------------------------------------------------------------------
44542           -- 4262811a Switch Sign
44543           ---------------------------------------------------------------------------------------------------
44544           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44545           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44546                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44547           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44548                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44549           -- 5132302
44550           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44551                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44552 
44553       END IF;
44554 
44555       -- 4955764
44556       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44557       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44558 
44559 
44560       XLA_AE_LINES_PKG.ValidateCurrentLine;
44561       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44562 
44563       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44564                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44565                ,p_balance_type_code => l_balance_type_code);
44566 
44567    END IF;
44568 
44569    -----------------------------------------------------------------------------------------
44570    -- 4262811 Multiperiod Accounting
44571    -----------------------------------------------------------------------------------------
44572      -- No MPA option is assigned.
44573 
44574 
44575 END IF;
44576 END IF;
44577 --
44578 
44579 --
44580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44581    trace
44582       (p_msg      => 'END of AcctLineType_81'
44583       ,p_level    => C_LEVEL_PROCEDURE
44584       ,p_module   => l_log_module);
44585 END IF;
44586 --
44587 EXCEPTION
44588   WHEN xla_exceptions_pkg.application_exception THEN
44589       RAISE;
44590   WHEN OTHERS THEN
44591        xla_exceptions_pkg.raise_message
44592            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_81');
44593 END AcctLineType_81;
44594 --
44595 
44596 ---------------------------------------
44597 --
44598 -- PRIVATE FUNCTION
44599 --         AcctLineType_82
44600 --
44601 ---------------------------------------
44602 PROCEDURE AcctLineType_82 (
44603   p_application_id        IN NUMBER
44604  ,p_event_id              IN NUMBER
44605  ,p_calculate_acctd_flag  IN VARCHAR2
44606  ,p_calculate_g_l_flag    IN VARCHAR2
44607  ,p_actual_flag           IN OUT VARCHAR2
44608  ,p_balance_type_code     OUT VARCHAR2
44609  ,p_gain_or_loss_ref      OUT VARCHAR2
44610  
44611 --Journal entry Line Description
44612  , p_source_3            IN VARCHAR2
44613 --Federal Fund Category
44614  , p_source_7            IN VARCHAR2
44615 --Budget Account
44616  , p_source_9            IN NUMBER
44617 --Main Or Backing Code
44618  , p_source_13            IN VARCHAR2
44619 --Accounting Reversal Flag
44620  , p_source_15            IN VARCHAR2
44621 --Distribution Link Type
44622  , p_source_17            IN VARCHAR2
44623 --Applied To Application Identifier
44624  , p_source_21            IN NUMBER
44625 --Applied To Distribution Link Type
44626  , p_source_22            IN VARCHAR2
44627 --Applied To Entity Code
44628  , p_source_23            IN VARCHAR2
44629 --Applied To Distribution Identifier 1
44630  , p_source_24            IN NUMBER
44631 --Applied To Header Identifier 1
44632  , p_source_25            IN NUMBER
44633 --Entered Amount
44634  , p_source_26            IN NUMBER
44635 --Currency Code
44636  , p_source_27            IN VARCHAR2
44637 --Accounted Amount
44638  , p_source_28            IN NUMBER
44639 --JFMIP Reference
44640  , p_source_31            IN VARCHAR2
44641 --Currency Conversion Date
44642  , p_source_35            IN DATE
44643 --Currency Conversion Rate
44644  , p_source_36            IN NUMBER
44645 --Currency Conversion Type
44646  , p_source_37            IN VARCHAR2
44647 --Requisition Distribution Identifier
44648  , p_source_43            IN NUMBER
44649 --Requisition Identifier
44650  , p_source_44            IN NUMBER
44651 --Requisition Encumbrance Upgrade Option
44652  , p_source_45            IN VARCHAR2
44653 --Requisition Upgrade Encumbrance Type Identifier
44654  , p_source_46            IN NUMBER
44655 --Adjustment Status
44656  , p_source_47            IN VARCHAR2
44657 )
44658 IS
44659 
44660 l_component_type              VARCHAR2(80);
44661 l_component_code              VARCHAR2(30);
44662 l_component_type_code         VARCHAR2(1);
44663 l_component_appl_id           INTEGER;
44664 l_amb_context_code            VARCHAR2(30);
44665 l_entity_code                 VARCHAR2(30);
44666 l_event_class_code            VARCHAR2(30);
44667 l_ae_header_id                NUMBER;
44668 l_event_type_code             VARCHAR2(30);
44669 l_line_definition_code        VARCHAR2(30);
44670 l_line_definition_owner_code  VARCHAR2(1);
44671 --
44672 -- adr variables
44673 l_segment                     VARCHAR2(30);
44674 l_ccid                        NUMBER;
44675 l_adr_transaction_coa_id      NUMBER;
44676 l_adr_accounting_coa_id       NUMBER;
44677 l_adr_flexfield_segment_code  VARCHAR2(30);
44678 l_adr_flex_value_set_id       NUMBER;
44679 l_adr_value_type_code         VARCHAR2(30);
44680 l_adr_value_combination_id    NUMBER;
44681 l_adr_value_segment_code      VARCHAR2(30);
44682 
44683 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44684 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44685 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44686 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44687 
44688 -- 4262811 Variables ------------------------------------------------------------------------------------------
44689 l_entered_amt_idx             NUMBER;
44690 l_accted_amt_idx              NUMBER;
44691 l_acc_rev_flag                VARCHAR2(1);
44692 l_accrual_line_num            NUMBER;
44693 l_tmp_amt                     NUMBER;
44694 l_acc_rev_natural_side_code   VARCHAR2(1);
44695 
44696 l_num_entries                 NUMBER;
44697 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44698 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44699 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44700 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44701 l_recog_line_1                NUMBER;
44702 l_recog_line_2                NUMBER;
44703 
44704 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44705 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44706 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44707 
44708 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44709 
44710 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44711 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44712 
44713 ---------------------------------------------------------------------------------------------------------------
44714 
44715 
44716 --
44717 -- bulk performance
44718 --
44719 l_balance_type_code           VARCHAR2(1);
44720 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44721 l_log_module                  VARCHAR2(240);
44722 
44723 --
44724 -- Upgrade strategy
44725 --
44726 l_actual_upg_option           VARCHAR2(1);
44727 l_enc_upg_option           VARCHAR2(1);
44728 
44729 --
44730 BEGIN
44731 --
44732 IF g_log_enabled THEN
44733       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
44734 END IF;
44735 --
44736 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44737 
44738       trace
44739          (p_msg      => 'BEGIN of AcctLineType_82'
44740          ,p_level    => C_LEVEL_PROCEDURE
44741          ,p_module   => l_log_module);
44742 
44743 END IF;
44744 --
44745 l_component_type             := 'AMB_JLT';
44746 l_component_code             := 'FV_REQ_RESERVE_CR';
44747 l_component_type_code        := 'S';
44748 l_component_appl_id          :=  201;
44749 l_amb_context_code           := 'DEFAULT';
44750 l_entity_code                := 'REQUISITION';
44751 l_event_class_code           := 'REQUISITION';
44752 l_event_type_code            := 'REQUISITION_ALL';
44753 l_line_definition_owner_code := 'S';
44754 l_line_definition_code       := 'FV_REQ_ALL';
44755 --
44756 l_balance_type_code          := 'A';
44757 l_segment                     := NULL;
44758 l_ccid                        := NULL;
44759 l_adr_transaction_coa_id      := NULL;
44760 l_adr_accounting_coa_id       := NULL;
44761 l_adr_flexfield_segment_code  := NULL;
44762 l_adr_flex_value_set_id       := NULL;
44763 l_adr_value_type_code         := NULL;
44764 l_adr_value_combination_id    := NULL;
44765 l_adr_value_segment_code      := NULL;
44766 
44767 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44768 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
44769 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44770 l_budgetary_control_flag     := 'Y';
44771 
44772 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44773 l_bflow_applied_to_amt       := NULL; -- 5132302
44774 l_entered_amt_idx            := NULL;          -- 4262811
44775 l_accted_amt_idx             := NULL;          -- 4262811
44776 l_acc_rev_flag               := NULL;          -- 4262811
44777 l_accrual_line_num           := NULL;          -- 4262811
44778 l_tmp_amt                    := NULL;          -- 4262811
44779 --
44780  
44781 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44782     l_balance_type_code <> 'B' THEN
44783 IF (NVL(
44784 xla_ae_sources_pkg.GetSystemSourceChar(
44785    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44786  , p_source_type_code      => 'Y'
44787  , p_source_application_id =>  602
44788 ),'
44789 ') =  'REQ_RESERVED' OR 
44790 NVL(
44791 xla_ae_sources_pkg.GetSystemSourceChar(
44792    p_source_code           => 'XLA_EVENT_TYPE_CODE'
44793  , p_source_type_code      => 'Y'
44794  , p_source_application_id =>  602
44795 ),'
44796 ') =  'REQ_ADJUSTED' AND 
44797 NVL(p_source_47,'
44798 ') =  'NEW') AND 
44799 NVL(p_source_13,'
44800 ') =  'M'
44801  THEN 
44802 
44803    --
44804    XLA_AE_LINES_PKG.SetNewLine;
44805 
44806    p_balance_type_code          := l_balance_type_code;
44807    -- set the flag so later we will know whether the gain loss line needs to be created
44808    
44809    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44810      p_actual_flag :='A';
44811    END IF;
44812 
44813    --
44814    -- bulk performance
44815    --
44816    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44817                                       p_header_num   => 0); -- 4262811
44818    --
44819    -- set accounting line options
44820    --
44821    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44822            p_natural_side_code          => 'C'
44823          , p_gain_or_loss_flag          => 'N'
44824          , p_gl_transfer_mode_code      => 'S'
44825          , p_acct_entry_type_code       => 'A'
44826          , p_switch_side_flag           => 'N'
44827          , p_merge_duplicate_code       => 'N'
44828          );
44829    --
44830    l_acc_rev_natural_side_code := 'D';  -- 4262811
44831    -- 
44832    --
44833    -- set accounting line type info
44834    --
44835    xla_ae_lines_pkg.SetAcctLineType
44836       (p_component_type             => l_component_type
44837       ,p_event_type_code            => l_event_type_code
44838       ,p_line_definition_owner_code => l_line_definition_owner_code
44839       ,p_line_definition_code       => l_line_definition_code
44840       ,p_accounting_line_code       => l_component_code
44841       ,p_accounting_line_type_code  => l_component_type_code
44842       ,p_accounting_line_appl_id    => l_component_appl_id
44843       ,p_amb_context_code           => l_amb_context_code
44844       ,p_entity_code                => l_entity_code
44845       ,p_event_class_code           => l_event_class_code);
44846    --
44847    -- set accounting class
44848    --
44849    xla_ae_lines_pkg.SetAcctClass(
44850            p_accounting_class_code  => 'REQUISITION'
44851          , p_ae_header_id           => l_ae_header_id
44852          );
44853 
44854    --
44855    -- set rounding class
44856    --
44857    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44858                       'REQUISITION';
44859 
44860    --
44861    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44862    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44863    --
44864    -- bulk performance
44865    --
44866    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44867 
44868    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44869       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44870 
44871    -- 4955764
44872    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44873       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44874 
44875    -- 4458381 Public Sector Enh
44876    
44877    --
44878    -- set accounting attributes for the line type
44879    --
44880    l_entered_amt_idx := 23;
44881    l_accted_amt_idx  := 28;
44882    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44883    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44884    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
44885    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
44886    l_rec_acct_attrs.array_num_value(2)  := 
44887 xla_ae_sources_pkg.GetSystemSourceNum(
44888    p_source_code           => 'XLA_EVENT_APPL_ID'
44889  , p_source_type_code      => 'Y'
44890  , p_source_application_id =>  602
44891 );
44892    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
44893    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
44894    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
44895    l_rec_acct_attrs.array_char_value(4)  := 
44896 xla_ae_sources_pkg.GetSystemSourceChar(
44897    p_source_code           => 'XLA_ENTITY_CODE'
44898  , p_source_type_code      => 'Y'
44899  , p_source_application_id =>  602
44900 );
44901    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
44902    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_43);
44903    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
44904    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_44);
44905    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
44906    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
44907    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44908    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
44909    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
44910    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
44911    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
44912    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
44913    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44914    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
44915    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
44916    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_43);
44917    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
44918    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
44919    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
44920    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
44921    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
44922    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
44923    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
44924    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
44925    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
44926    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
44927    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
44928    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
44929    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
44930    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
44931    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
44932    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
44933    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
44934    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
44935    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
44936    l_rec_acct_attrs.array_char_value(22)  := p_source_45;
44937    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
44938    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
44939    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
44940    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
44941    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
44942    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
44943    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
44944    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
44945    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
44946    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
44947    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
44948    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
44949    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
44950    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
44951    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
44952    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
44953    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
44954    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
44955    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
44956    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_43);
44957    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
44958    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
44959    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
44960    l_rec_acct_attrs.array_num_value(34)  := p_source_46;
44961 
44962    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44963    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44964 
44965    ---------------------------------------------------------------------------------------------------------------
44966    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44967    ---------------------------------------------------------------------------------------------------------------
44968    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44969 
44970    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44971    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44972 
44973    IF xla_accounting_cache_pkg.GetValueChar
44974          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44975          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44976    AND l_bflow_method_code = 'PRIOR_ENTRY'
44977 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44978    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44979          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44980        )
44981    THEN
44982          xla_ae_lines_pkg.BflowUpgEntry
44983            (p_business_method_code    => l_bflow_method_code
44984            ,p_business_class_code     => l_bflow_class_code
44985            ,p_balance_type            => l_balance_type_code);
44986    ELSE
44987       NULL;
44988 -- No business flow processing for business flow method of NONE.
44989    END IF;
44990 
44991    --
44992    -- call analytical criteria
44993    --
44994    
44995    --
44996    -- call description
44997    --
44998    
44999 xla_ae_lines_pkg.SetLineDescription(
45000    p_ae_header_id => l_ae_header_id
45001   ,p_description  => Description_2 (
45002      p_application_id         => p_application_id
45003    , p_ae_header_id           => l_ae_header_id 
45004 , p_source_3 => p_source_3
45005    )
45006 );
45007 
45008 
45009    --
45010    -- call ADRs
45011    -- Bug 4922099
45012    --
45013    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45014         (NVL(l_actual_upg_option, 'N') = 'O') OR
45015         (NVL(l_enc_upg_option, 'N') = 'O')
45016       )
45017    THEN
45018    NULL;
45019    --
45020    --
45021    
45022   l_ccid := AcctDerRule_9(
45023            p_application_id           => p_application_id
45024          , p_ae_header_id             => l_ae_header_id 
45025 , p_source_9 => p_source_9
45026          , x_transaction_coa_id       => l_adr_transaction_coa_id
45027          , x_accounting_coa_id        => l_adr_accounting_coa_id
45028          , x_value_type_code          => l_adr_value_type_code
45029          , p_side                     => 'NA'
45030    );
45031 
45032    xla_ae_lines_pkg.set_ccid(
45033     p_code_combination_id          => l_ccid
45034   , p_value_type_code              => l_adr_value_type_code
45035   , p_transaction_coa_id           => l_adr_transaction_coa_id
45036   , p_accounting_coa_id            => l_adr_accounting_coa_id
45037   , p_adr_code                     => 'FV_ACCOUNT_RULE'
45038   , p_adr_type_code                => 'S'
45039   , p_component_type               => l_component_type
45040   , p_component_code               => l_component_code
45041   , p_component_type_code          => l_component_type_code
45042   , p_component_appl_id            => l_component_appl_id
45043   , p_amb_context_code             => l_amb_context_code
45044   , p_side                         => 'NA'
45045   );
45046 
45047 
45048    l_segment := AcctDerRule_6(
45049            p_application_id           => p_application_id
45050          , p_ae_header_id             => l_ae_header_id 
45051 , p_source_7 => p_source_7
45052          , x_transaction_coa_id       => l_adr_transaction_coa_id
45053          , x_accounting_coa_id        => l_adr_accounting_coa_id
45054          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
45055          , x_flex_value_set_id        => l_adr_flex_value_set_id
45056          , x_value_type_code          => l_adr_value_type_code
45057          , x_value_combination_id     => l_adr_value_combination_id
45058          , x_value_segment_code       => l_adr_value_segment_code
45059          , p_side                     => 'NA'
45060          , p_override_seg_flag        => 'Y'
45061    );
45062 
45063    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
45064 
45065       xla_ae_lines_pkg.set_segment(
45066           p_to_segment_code         => 'GL_ACCOUNT'
45067         , p_segment_value           => l_segment
45068         , p_from_segment_code       => l_adr_value_segment_code
45069         , p_from_combination_id     => l_adr_value_combination_id
45070         , p_value_type_code         => l_adr_value_type_code
45071         , p_transaction_coa_id      => l_adr_transaction_coa_id
45072         , p_accounting_coa_id       => l_adr_accounting_coa_id
45073         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
45074         , p_flex_value_set_id       => l_adr_flex_value_set_id
45075         , p_adr_code                => 'FV_47X002_REQUISITION'
45076         , p_adr_type_code           => 'S'
45077         , p_component_type          => l_component_type
45078         , p_component_code          => l_component_code
45079         , p_component_type_code     => l_component_type_code
45080         , p_component_appl_id       => l_component_appl_id
45081         , p_amb_context_code        => l_amb_context_code
45082         , p_entity_code             => 'REQUISITION'
45083         , p_event_class_code        => 'REQUISITION'
45084         , p_side                    => 'NA'
45085         );
45086 
45087   END IF;
45088 
45089    --
45090    --
45091    END IF;
45092    --
45093    -- Bug 4922099
45094    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45095           (NVL(l_enc_upg_option, 'N') = 'O')
45096         ) AND
45097         (l_bflow_method_code = 'PRIOR_ENTRY')
45098       )
45099    THEN
45100       IF
45101       --
45102       1 = 2
45103       --
45104       THEN
45105       xla_accounting_err_pkg.build_message
45106                                     (p_appli_s_name            => 'XLA'
45107                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45108                                     ,p_token_1                 => 'LINE_NUMBER'
45109                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45110                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45111                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45112                                                                              l_component_type
45113                                                                             ,l_component_code
45114                                                                             ,l_component_type_code
45115                                                                             ,l_component_appl_id
45116                                                                             ,l_amb_context_code
45117                                                                             ,l_entity_code
45118                                                                             ,l_event_class_code
45119                                                                            )
45120                                     ,p_token_3                 => 'OWNER'
45121                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45122                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45123                                                                           ,p_lookup_code    => l_component_type_code
45124                                                                          )
45125                                     ,p_token_4                 => 'PRODUCT_NAME'
45126                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45127                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45128                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45129                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45130                                     ,p_ae_header_id            =>  NULL
45131                                        );
45132 
45133         IF (C_LEVEL_ERROR>= g_log_level) THEN
45134                  trace
45135                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45136                       ,p_level    => C_LEVEL_ERROR
45137                       ,p_module   => l_log_module);
45138         END IF;
45139       END IF;
45140    END IF;
45141    --
45142    --
45143    ------------------------------------------------------------------------------------------------
45144    -- 4219869 Business Flow
45145    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45146    -- Prior Entry.  Currently, the following code is always generated.
45147    ------------------------------------------------------------------------------------------------
45148    XLA_AE_LINES_PKG.ValidateCurrentLine;
45149 
45150    ------------------------------------------------------------------------------------
45151    -- 4219869 Business Flow
45152    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45153    ------------------------------------------------------------------------------------
45154    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45155 
45156    ----------------------------------------------------------------------------------
45157    -- 4219869 Business Flow
45158    -- Update journal entry status -- Need to generate this within IF <condition>
45159    ----------------------------------------------------------------------------------
45160    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45161          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45162          ,p_balance_type_code => l_balance_type_code
45163          );
45164 
45165    -------------------------------------------------------------------------------------------
45166    -- 4262811 - Generate the Accrual Reversal lines
45167    -------------------------------------------------------------------------------------------
45168    BEGIN
45169       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45170                               (g_array_event(p_event_id).array_value_num('header_index'));
45171       IF l_acc_rev_flag IS NULL THEN
45172          l_acc_rev_flag := 'N';
45173       END IF;
45174    EXCEPTION
45175       WHEN OTHERS THEN
45176          l_acc_rev_flag := 'N';
45177    END;
45178    --
45179    IF (l_acc_rev_flag = 'Y') THEN
45180 
45181        -- 4645092  ------------------------------------------------------------------------------
45182        -- To allow MPA report to determine if it should generate report process
45183        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45184        ------------------------------------------------------------------------------------------
45185 
45186        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45187        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45188 
45189        --
45190        -- Update the line information that should be overwritten
45191        --
45192        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45193                                          p_header_num   => 1);
45194        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45195 
45196        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45197 
45198        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45199           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45200        END IF;
45201 
45202       --
45203       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45204       --
45205       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45206           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45207       ELSE
45208           ---------------------------------------------------------------------------------------------------
45209           -- 4262811a Switch Sign
45210           ---------------------------------------------------------------------------------------------------
45211           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45212           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45213                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45214           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45215                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45216           -- 5132302
45217           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45218                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45219 
45220       END IF;
45221 
45222       -- 4955764
45223       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45224       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45225 
45226 
45227       XLA_AE_LINES_PKG.ValidateCurrentLine;
45228       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45229 
45230       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45231                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45232                ,p_balance_type_code => l_balance_type_code);
45233 
45234    END IF;
45235 
45236    -----------------------------------------------------------------------------------------
45237    -- 4262811 Multiperiod Accounting
45238    -----------------------------------------------------------------------------------------
45239      -- No MPA option is assigned.
45240 
45241 
45242 END IF;
45243 END IF;
45244 --
45245 
45246 --
45247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45248    trace
45249       (p_msg      => 'END of AcctLineType_82'
45250       ,p_level    => C_LEVEL_PROCEDURE
45251       ,p_module   => l_log_module);
45252 END IF;
45253 --
45254 EXCEPTION
45255   WHEN xla_exceptions_pkg.application_exception THEN
45256       RAISE;
45257   WHEN OTHERS THEN
45258        xla_exceptions_pkg.raise_message
45259            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_82');
45260 END AcctLineType_82;
45261 --
45262 
45263 ---------------------------------------
45264 --
45265 -- PRIVATE FUNCTION
45266 --         AcctLineType_83
45267 --
45268 ---------------------------------------
45269 PROCEDURE AcctLineType_83 (
45270   p_application_id        IN NUMBER
45271  ,p_event_id              IN NUMBER
45272  ,p_calculate_acctd_flag  IN VARCHAR2
45273  ,p_calculate_g_l_flag    IN VARCHAR2
45274  ,p_actual_flag           IN OUT VARCHAR2
45275  ,p_balance_type_code     OUT VARCHAR2
45276  ,p_gain_or_loss_ref      OUT VARCHAR2
45277  
45278 --Journal entry Line Description
45279  , p_source_3            IN VARCHAR2
45280 --Federal Fund Category
45281  , p_source_7            IN VARCHAR2
45282 --Federal Fund Expired Status
45283  , p_source_8            IN VARCHAR2
45284 --Budget Account
45285  , p_source_9            IN NUMBER
45286 --Main Or Backing Code
45287  , p_source_13            IN VARCHAR2
45288 --Accounting Reversal Flag
45289  , p_source_15            IN VARCHAR2
45290 --Distribution Link Type
45291  , p_source_17            IN VARCHAR2
45292 --Applied To Application Identifier
45293  , p_source_21            IN NUMBER
45294 --Applied To Distribution Link Type
45295  , p_source_22            IN VARCHAR2
45296 --Applied To Entity Code
45297  , p_source_23            IN VARCHAR2
45298 --Applied To Distribution Identifier 1
45299  , p_source_24            IN NUMBER
45300 --Applied To Header Identifier 1
45301  , p_source_25            IN NUMBER
45302 --Entered Amount
45303  , p_source_26            IN NUMBER
45304 --Currency Code
45305  , p_source_27            IN VARCHAR2
45306 --Accounted Amount
45307  , p_source_28            IN NUMBER
45308 --JFMIP Reference
45309  , p_source_31            IN VARCHAR2
45310 --Currency Conversion Date
45311  , p_source_35            IN DATE
45312 --Currency Conversion Rate
45313  , p_source_36            IN NUMBER
45314 --Currency Conversion Type
45315  , p_source_37            IN VARCHAR2
45316 --Requisition Distribution Identifier
45317  , p_source_43            IN NUMBER
45318 --Requisition Identifier
45319  , p_source_44            IN NUMBER
45320 --Requisition Encumbrance Upgrade Option
45321  , p_source_45            IN VARCHAR2
45322 --Requisition Upgrade Encumbrance Type Identifier
45323  , p_source_46            IN NUMBER
45324 --Adjustment Status
45325  , p_source_47            IN VARCHAR2
45326 )
45327 IS
45328 
45329 l_component_type              VARCHAR2(80);
45330 l_component_code              VARCHAR2(30);
45331 l_component_type_code         VARCHAR2(1);
45332 l_component_appl_id           INTEGER;
45333 l_amb_context_code            VARCHAR2(30);
45334 l_entity_code                 VARCHAR2(30);
45335 l_event_class_code            VARCHAR2(30);
45336 l_ae_header_id                NUMBER;
45337 l_event_type_code             VARCHAR2(30);
45338 l_line_definition_code        VARCHAR2(30);
45339 l_line_definition_owner_code  VARCHAR2(1);
45340 --
45341 -- adr variables
45342 l_segment                     VARCHAR2(30);
45343 l_ccid                        NUMBER;
45344 l_adr_transaction_coa_id      NUMBER;
45345 l_adr_accounting_coa_id       NUMBER;
45346 l_adr_flexfield_segment_code  VARCHAR2(30);
45347 l_adr_flex_value_set_id       NUMBER;
45348 l_adr_value_type_code         VARCHAR2(30);
45349 l_adr_value_combination_id    NUMBER;
45350 l_adr_value_segment_code      VARCHAR2(30);
45351 
45352 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45353 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45354 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45355 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45356 
45357 -- 4262811 Variables ------------------------------------------------------------------------------------------
45358 l_entered_amt_idx             NUMBER;
45359 l_accted_amt_idx              NUMBER;
45360 l_acc_rev_flag                VARCHAR2(1);
45361 l_accrual_line_num            NUMBER;
45362 l_tmp_amt                     NUMBER;
45363 l_acc_rev_natural_side_code   VARCHAR2(1);
45364 
45365 l_num_entries                 NUMBER;
45366 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45367 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45368 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45369 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45370 l_recog_line_1                NUMBER;
45371 l_recog_line_2                NUMBER;
45372 
45373 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45374 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45375 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45376 
45377 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45378 
45379 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45380 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45381 
45382 ---------------------------------------------------------------------------------------------------------------
45383 
45384 
45385 --
45386 -- bulk performance
45387 --
45388 l_balance_type_code           VARCHAR2(1);
45389 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45390 l_log_module                  VARCHAR2(240);
45391 
45392 --
45393 -- Upgrade strategy
45394 --
45395 l_actual_upg_option           VARCHAR2(1);
45396 l_enc_upg_option           VARCHAR2(1);
45397 
45398 --
45399 BEGIN
45400 --
45401 IF g_log_enabled THEN
45402       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
45403 END IF;
45404 --
45405 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45406 
45407       trace
45408          (p_msg      => 'BEGIN of AcctLineType_83'
45409          ,p_level    => C_LEVEL_PROCEDURE
45410          ,p_module   => l_log_module);
45411 
45412 END IF;
45413 --
45414 l_component_type             := 'AMB_JLT';
45415 l_component_code             := 'FV_REQ_RESERVE_DR';
45416 l_component_type_code        := 'S';
45417 l_component_appl_id          :=  201;
45418 l_amb_context_code           := 'DEFAULT';
45419 l_entity_code                := 'REQUISITION';
45420 l_event_class_code           := 'REQUISITION';
45421 l_event_type_code            := 'REQUISITION_ALL';
45422 l_line_definition_owner_code := 'S';
45423 l_line_definition_code       := 'FV_REQ_ALL';
45424 --
45425 l_balance_type_code          := 'A';
45426 l_segment                     := NULL;
45427 l_ccid                        := NULL;
45428 l_adr_transaction_coa_id      := NULL;
45429 l_adr_accounting_coa_id       := NULL;
45430 l_adr_flexfield_segment_code  := NULL;
45431 l_adr_flex_value_set_id       := NULL;
45432 l_adr_value_type_code         := NULL;
45433 l_adr_value_combination_id    := NULL;
45434 l_adr_value_segment_code      := NULL;
45435 
45436 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45437 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
45438 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45439 l_budgetary_control_flag     := 'Y';
45440 
45441 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45442 l_bflow_applied_to_amt       := NULL; -- 5132302
45443 l_entered_amt_idx            := NULL;          -- 4262811
45444 l_accted_amt_idx             := NULL;          -- 4262811
45445 l_acc_rev_flag               := NULL;          -- 4262811
45446 l_accrual_line_num           := NULL;          -- 4262811
45447 l_tmp_amt                    := NULL;          -- 4262811
45448 --
45449  
45450 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45451     l_balance_type_code <> 'B' THEN
45452 IF (NVL(
45453 xla_ae_sources_pkg.GetSystemSourceChar(
45454    p_source_code           => 'XLA_EVENT_TYPE_CODE'
45455  , p_source_type_code      => 'Y'
45456  , p_source_application_id =>  602
45457 ),'
45458 ') =  'REQ_RESERVED' OR 
45459 NVL(
45460 xla_ae_sources_pkg.GetSystemSourceChar(
45461    p_source_code           => 'XLA_EVENT_TYPE_CODE'
45462  , p_source_type_code      => 'Y'
45463  , p_source_application_id =>  602
45464 ),'
45465 ') =  'REQ_ADJUSTED' AND 
45466 NVL(p_source_47,'
45467 ') =  'NEW') AND 
45468 NVL(p_source_13,'
45469 ') =  'M'
45470  THEN 
45471 
45472    --
45473    XLA_AE_LINES_PKG.SetNewLine;
45474 
45475    p_balance_type_code          := l_balance_type_code;
45476    -- set the flag so later we will know whether the gain loss line needs to be created
45477    
45478    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45479      p_actual_flag :='A';
45480    END IF;
45481 
45482    --
45483    -- bulk performance
45484    --
45485    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45486                                       p_header_num   => 0); -- 4262811
45487    --
45488    -- set accounting line options
45489    --
45490    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45491            p_natural_side_code          => 'D'
45492          , p_gain_or_loss_flag          => 'N'
45493          , p_gl_transfer_mode_code      => 'S'
45494          , p_acct_entry_type_code       => 'A'
45495          , p_switch_side_flag           => 'N'
45496          , p_merge_duplicate_code       => 'N'
45497          );
45498    --
45499    l_acc_rev_natural_side_code := 'C';  -- 4262811
45500    -- 
45501    --
45502    -- set accounting line type info
45503    --
45504    xla_ae_lines_pkg.SetAcctLineType
45505       (p_component_type             => l_component_type
45506       ,p_event_type_code            => l_event_type_code
45507       ,p_line_definition_owner_code => l_line_definition_owner_code
45508       ,p_line_definition_code       => l_line_definition_code
45509       ,p_accounting_line_code       => l_component_code
45510       ,p_accounting_line_type_code  => l_component_type_code
45511       ,p_accounting_line_appl_id    => l_component_appl_id
45512       ,p_amb_context_code           => l_amb_context_code
45513       ,p_entity_code                => l_entity_code
45514       ,p_event_class_code           => l_event_class_code);
45515    --
45516    -- set accounting class
45517    --
45518    xla_ae_lines_pkg.SetAcctClass(
45519            p_accounting_class_code  => 'REQUISITION'
45520          , p_ae_header_id           => l_ae_header_id
45521          );
45522 
45523    --
45524    -- set rounding class
45525    --
45526    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45527                       'REQUISITION';
45528 
45529    --
45530    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45531    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45532    --
45533    -- bulk performance
45534    --
45535    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45536 
45537    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45538       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45539 
45540    -- 4955764
45541    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45543 
45544    -- 4458381 Public Sector Enh
45545    
45546    --
45547    -- set accounting attributes for the line type
45548    --
45549    l_entered_amt_idx := 23;
45550    l_accted_amt_idx  := 28;
45551    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45552    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
45553    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
45554    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
45555    l_rec_acct_attrs.array_num_value(2)  := 
45556 xla_ae_sources_pkg.GetSystemSourceNum(
45557    p_source_code           => 'XLA_EVENT_APPL_ID'
45558  , p_source_type_code      => 'Y'
45559  , p_source_application_id =>  602
45560 );
45561    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
45562    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
45563    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
45564    l_rec_acct_attrs.array_char_value(4)  := 
45565 xla_ae_sources_pkg.GetSystemSourceChar(
45566    p_source_code           => 'XLA_ENTITY_CODE'
45567  , p_source_type_code      => 'Y'
45568  , p_source_application_id =>  602
45569 );
45570    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
45571    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_43);
45572    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
45573    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_44);
45574    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
45575    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
45576    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
45577    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
45578    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
45579    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
45580    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
45581    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
45582    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
45583    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
45584    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
45585    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_43);
45586    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
45587    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
45588    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
45589    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
45590    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
45591    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
45592    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
45593    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
45594    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
45595    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
45596    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
45597    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
45598    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
45599    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
45600    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
45601    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
45602    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
45603    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
45604    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
45605    l_rec_acct_attrs.array_char_value(22)  := p_source_45;
45606    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
45607    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
45608    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
45609    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
45610    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_DATE';
45611    l_rec_acct_attrs.array_date_value(25)  := p_source_35;
45612    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE';
45613    l_rec_acct_attrs.array_num_value(26)  := p_source_36;
45614    l_rec_acct_attrs.array_acct_attr_code(27) := 'EXCHANGE_RATE_TYPE';
45615    l_rec_acct_attrs.array_char_value(27)  := p_source_37;
45616    l_rec_acct_attrs.array_acct_attr_code(28) := 'LEDGER_AMOUNT';
45617    l_rec_acct_attrs.array_num_value(28)  := p_source_28;
45618    l_rec_acct_attrs.array_acct_attr_code(29) := 'RECON_REF';
45619    l_rec_acct_attrs.array_char_value(29)  := p_source_31;
45620    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID1';
45621    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_24);
45622    l_rec_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
45623    l_rec_acct_attrs.array_char_value(31)  := p_source_22;
45624    l_rec_acct_attrs.array_acct_attr_code(32) := 'TRX_ROUNDING_REF';
45625    l_rec_acct_attrs.array_num_value(32)  :=  to_char(p_source_43);
45626    l_rec_acct_attrs.array_acct_attr_code(33) := 'UPG_CR_ENC_TYPE_ID';
45627    l_rec_acct_attrs.array_num_value(33)  := p_source_46;
45628    l_rec_acct_attrs.array_acct_attr_code(34) := 'UPG_DR_ENC_TYPE_ID';
45629    l_rec_acct_attrs.array_num_value(34)  := p_source_46;
45630 
45631    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45632    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45633 
45634    ---------------------------------------------------------------------------------------------------------------
45635    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45636    ---------------------------------------------------------------------------------------------------------------
45637    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45638 
45639    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45640    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45641 
45642    IF xla_accounting_cache_pkg.GetValueChar
45643          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45644          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45645    AND l_bflow_method_code = 'PRIOR_ENTRY'
45646 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45647    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45648          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45649        )
45650    THEN
45651          xla_ae_lines_pkg.BflowUpgEntry
45652            (p_business_method_code    => l_bflow_method_code
45653            ,p_business_class_code     => l_bflow_class_code
45654            ,p_balance_type            => l_balance_type_code);
45655    ELSE
45656       NULL;
45657 -- No business flow processing for business flow method of NONE.
45658    END IF;
45659 
45660    --
45661    -- call analytical criteria
45662    --
45663    
45664    --
45665    -- call description
45666    --
45667    
45668 xla_ae_lines_pkg.SetLineDescription(
45669    p_ae_header_id => l_ae_header_id
45670   ,p_description  => Description_2 (
45671      p_application_id         => p_application_id
45672    , p_ae_header_id           => l_ae_header_id 
45673 , p_source_3 => p_source_3
45674    )
45675 );
45676 
45677 
45678    --
45679    -- call ADRs
45680    -- Bug 4922099
45681    --
45682    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45683         (NVL(l_actual_upg_option, 'N') = 'O') OR
45684         (NVL(l_enc_upg_option, 'N') = 'O')
45685       )
45686    THEN
45687    NULL;
45688    --
45689    --
45690    
45691   l_ccid := AcctDerRule_9(
45692            p_application_id           => p_application_id
45693          , p_ae_header_id             => l_ae_header_id 
45694 , p_source_9 => p_source_9
45695          , x_transaction_coa_id       => l_adr_transaction_coa_id
45696          , x_accounting_coa_id        => l_adr_accounting_coa_id
45697          , x_value_type_code          => l_adr_value_type_code
45698          , p_side                     => 'NA'
45699    );
45700 
45701    xla_ae_lines_pkg.set_ccid(
45702     p_code_combination_id          => l_ccid
45703   , p_value_type_code              => l_adr_value_type_code
45704   , p_transaction_coa_id           => l_adr_transaction_coa_id
45705   , p_accounting_coa_id            => l_adr_accounting_coa_id
45706   , p_adr_code                     => 'FV_ACCOUNT_RULE'
45707   , p_adr_type_code                => 'S'
45708   , p_component_type               => l_component_type
45709   , p_component_code               => l_component_code
45710   , p_component_type_code          => l_component_type_code
45711   , p_component_appl_id            => l_component_appl_id
45712   , p_amb_context_code             => l_amb_context_code
45713   , p_side                         => 'NA'
45714   );
45715 
45716 
45717    l_segment := AcctDerRule_5(
45718            p_application_id           => p_application_id
45719          , p_ae_header_id             => l_ae_header_id 
45720 , p_source_7 => p_source_7
45721 , p_source_8 => p_source_8
45722          , x_transaction_coa_id       => l_adr_transaction_coa_id
45723          , x_accounting_coa_id        => l_adr_accounting_coa_id
45724          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
45725          , x_flex_value_set_id        => l_adr_flex_value_set_id
45726          , x_value_type_code          => l_adr_value_type_code
45727          , x_value_combination_id     => l_adr_value_combination_id
45728          , x_value_segment_code       => l_adr_value_segment_code
45729          , p_side                     => 'NA'
45730          , p_override_seg_flag        => 'Y'
45731    );
45732 
45733    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
45734 
45735       xla_ae_lines_pkg.set_segment(
45736           p_to_segment_code         => 'GL_ACCOUNT'
45737         , p_segment_value           => l_segment
45738         , p_from_segment_code       => l_adr_value_segment_code
45739         , p_from_combination_id     => l_adr_value_combination_id
45740         , p_value_type_code         => l_adr_value_type_code
45741         , p_transaction_coa_id      => l_adr_transaction_coa_id
45742         , p_accounting_coa_id       => l_adr_accounting_coa_id
45743         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
45744         , p_flex_value_set_id       => l_adr_flex_value_set_id
45745         , p_adr_code                => 'FV_46X002'
45746         , p_adr_type_code           => 'S'
45747         , p_component_type          => l_component_type
45748         , p_component_code          => l_component_code
45749         , p_component_type_code     => l_component_type_code
45750         , p_component_appl_id       => l_component_appl_id
45751         , p_amb_context_code        => l_amb_context_code
45752         , p_entity_code             => 'REQUISITION'
45753         , p_event_class_code        => 'REQUISITION'
45754         , p_side                    => 'NA'
45755         );
45756 
45757   END IF;
45758 
45759    --
45760    --
45761    END IF;
45762    --
45763    -- Bug 4922099
45764    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45765           (NVL(l_enc_upg_option, 'N') = 'O')
45766         ) AND
45767         (l_bflow_method_code = 'PRIOR_ENTRY')
45768       )
45769    THEN
45770       IF
45771       --
45772       1 = 2
45773       --
45774       THEN
45775       xla_accounting_err_pkg.build_message
45776                                     (p_appli_s_name            => 'XLA'
45777                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45778                                     ,p_token_1                 => 'LINE_NUMBER'
45779                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45780                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45781                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45782                                                                              l_component_type
45783                                                                             ,l_component_code
45784                                                                             ,l_component_type_code
45785                                                                             ,l_component_appl_id
45786                                                                             ,l_amb_context_code
45787                                                                             ,l_entity_code
45788                                                                             ,l_event_class_code
45789                                                                            )
45790                                     ,p_token_3                 => 'OWNER'
45791                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45792                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45793                                                                           ,p_lookup_code    => l_component_type_code
45794                                                                          )
45795                                     ,p_token_4                 => 'PRODUCT_NAME'
45796                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45797                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45798                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45799                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45800                                     ,p_ae_header_id            =>  NULL
45801                                        );
45802 
45803         IF (C_LEVEL_ERROR>= g_log_level) THEN
45804                  trace
45805                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45806                       ,p_level    => C_LEVEL_ERROR
45807                       ,p_module   => l_log_module);
45808         END IF;
45809       END IF;
45810    END IF;
45811    --
45812    --
45813    ------------------------------------------------------------------------------------------------
45814    -- 4219869 Business Flow
45815    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45816    -- Prior Entry.  Currently, the following code is always generated.
45817    ------------------------------------------------------------------------------------------------
45818    XLA_AE_LINES_PKG.ValidateCurrentLine;
45819 
45820    ------------------------------------------------------------------------------------
45821    -- 4219869 Business Flow
45822    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45823    ------------------------------------------------------------------------------------
45824    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45825 
45826    ----------------------------------------------------------------------------------
45827    -- 4219869 Business Flow
45828    -- Update journal entry status -- Need to generate this within IF <condition>
45829    ----------------------------------------------------------------------------------
45830    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45831          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45832          ,p_balance_type_code => l_balance_type_code
45833          );
45834 
45835    -------------------------------------------------------------------------------------------
45836    -- 4262811 - Generate the Accrual Reversal lines
45837    -------------------------------------------------------------------------------------------
45838    BEGIN
45839       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45840                               (g_array_event(p_event_id).array_value_num('header_index'));
45841       IF l_acc_rev_flag IS NULL THEN
45842          l_acc_rev_flag := 'N';
45843       END IF;
45844    EXCEPTION
45845       WHEN OTHERS THEN
45846          l_acc_rev_flag := 'N';
45847    END;
45848    --
45849    IF (l_acc_rev_flag = 'Y') THEN
45850 
45851        -- 4645092  ------------------------------------------------------------------------------
45852        -- To allow MPA report to determine if it should generate report process
45853        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45854        ------------------------------------------------------------------------------------------
45855 
45856        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45857        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45858 
45859        --
45860        -- Update the line information that should be overwritten
45861        --
45862        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45863                                          p_header_num   => 1);
45864        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45865 
45866        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45867 
45868        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45869           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45870        END IF;
45871 
45872       --
45873       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45874       --
45875       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45876           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45877       ELSE
45878           ---------------------------------------------------------------------------------------------------
45879           -- 4262811a Switch Sign
45880           ---------------------------------------------------------------------------------------------------
45881           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45882           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45883                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45884           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45885                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45886           -- 5132302
45887           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45888                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45889 
45890       END IF;
45891 
45892       -- 4955764
45893       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45894       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45895 
45896 
45897       XLA_AE_LINES_PKG.ValidateCurrentLine;
45898       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45899 
45900       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45901                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45902                ,p_balance_type_code => l_balance_type_code);
45903 
45904    END IF;
45905 
45906    -----------------------------------------------------------------------------------------
45907    -- 4262811 Multiperiod Accounting
45908    -----------------------------------------------------------------------------------------
45909      -- No MPA option is assigned.
45910 
45911 
45912 END IF;
45913 END IF;
45914 --
45915 
45916 --
45917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45918    trace
45919       (p_msg      => 'END of AcctLineType_83'
45920       ,p_level    => C_LEVEL_PROCEDURE
45921       ,p_module   => l_log_module);
45922 END IF;
45923 --
45924 EXCEPTION
45925   WHEN xla_exceptions_pkg.application_exception THEN
45926       RAISE;
45927   WHEN OTHERS THEN
45928        xla_exceptions_pkg.raise_message
45929            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_83');
45930 END AcctLineType_83;
45931 --
45932 
45933 ---------------------------------------
45934 --
45935 -- PRIVATE FUNCTION
45936 --         AcctLineType_84
45937 --
45938 ---------------------------------------
45939 PROCEDURE AcctLineType_84 (
45940   p_application_id        IN NUMBER
45941  ,p_event_id              IN NUMBER
45942  ,p_calculate_acctd_flag  IN VARCHAR2
45943  ,p_calculate_g_l_flag    IN VARCHAR2
45944  ,p_actual_flag           IN OUT VARCHAR2
45945  ,p_balance_type_code     OUT VARCHAR2
45946  ,p_gain_or_loss_ref      OUT VARCHAR2
45947  
45948 --Budget Account
45949  , p_source_9            IN NUMBER
45950 --Main Or Backing Code
45951  , p_source_13            IN VARCHAR2
45952 --Accounting Reversal Flag
45953  , p_source_15            IN VARCHAR2
45954 --Distribution Link Type
45955  , p_source_17            IN VARCHAR2
45956 --Applied To Application Identifier
45957  , p_source_21            IN NUMBER
45958 --Applied To Distribution Link Type
45959  , p_source_22            IN VARCHAR2
45960 --Applied To Entity Code
45961  , p_source_23            IN VARCHAR2
45962 --Applied To Distribution Identifier 1
45963  , p_source_24            IN NUMBER
45964 --Applied To Header Identifier 1
45965  , p_source_25            IN NUMBER
45966 --Entered Amount
45967  , p_source_26            IN NUMBER
45968 --Currency Code
45969  , p_source_27            IN VARCHAR2
45970 --Accounted Amount
45971  , p_source_28            IN NUMBER
45972 --JFMIP Reference
45973  , p_source_31            IN VARCHAR2
45974 --Requisition Distribution Identifier
45975  , p_source_43            IN NUMBER
45976 --Requisition Identifier
45977  , p_source_44            IN NUMBER
45978 --Requisition Encumbrance Upgrade Option
45979  , p_source_45            IN VARCHAR2
45980 --Requisition Upgrade Encumbrance Type Identifier
45981  , p_source_46            IN NUMBER
45982 --Adjustment Status
45983  , p_source_47            IN VARCHAR2
45984 )
45985 IS
45986 
45987 l_component_type              VARCHAR2(80);
45988 l_component_code              VARCHAR2(30);
45989 l_component_type_code         VARCHAR2(1);
45990 l_component_appl_id           INTEGER;
45991 l_amb_context_code            VARCHAR2(30);
45992 l_entity_code                 VARCHAR2(30);
45993 l_event_class_code            VARCHAR2(30);
45994 l_ae_header_id                NUMBER;
45995 l_event_type_code             VARCHAR2(30);
45996 l_line_definition_code        VARCHAR2(30);
45997 l_line_definition_owner_code  VARCHAR2(1);
45998 --
45999 -- adr variables
46000 l_segment                     VARCHAR2(30);
46001 l_ccid                        NUMBER;
46002 l_adr_transaction_coa_id      NUMBER;
46003 l_adr_accounting_coa_id       NUMBER;
46004 l_adr_flexfield_segment_code  VARCHAR2(30);
46005 l_adr_flex_value_set_id       NUMBER;
46006 l_adr_value_type_code         VARCHAR2(30);
46007 l_adr_value_combination_id    NUMBER;
46008 l_adr_value_segment_code      VARCHAR2(30);
46009 
46010 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46011 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46012 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46013 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46014 
46015 -- 4262811 Variables ------------------------------------------------------------------------------------------
46016 l_entered_amt_idx             NUMBER;
46017 l_accted_amt_idx              NUMBER;
46018 l_acc_rev_flag                VARCHAR2(1);
46019 l_accrual_line_num            NUMBER;
46020 l_tmp_amt                     NUMBER;
46021 l_acc_rev_natural_side_code   VARCHAR2(1);
46022 
46023 l_num_entries                 NUMBER;
46024 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46025 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46026 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46027 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46028 l_recog_line_1                NUMBER;
46029 l_recog_line_2                NUMBER;
46030 
46031 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46032 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46033 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46034 
46035 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46036 
46037 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46038 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46039 
46040 ---------------------------------------------------------------------------------------------------------------
46041 
46042 
46043 --
46044 -- bulk performance
46045 --
46046 l_balance_type_code           VARCHAR2(1);
46047 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46048 l_log_module                  VARCHAR2(240);
46049 
46050 --
46051 -- Upgrade strategy
46052 --
46053 l_actual_upg_option           VARCHAR2(1);
46054 l_enc_upg_option           VARCHAR2(1);
46055 
46056 --
46057 BEGIN
46058 --
46059 IF g_log_enabled THEN
46060       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
46061 END IF;
46062 --
46063 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46064 
46065       trace
46066          (p_msg      => 'BEGIN of AcctLineType_84'
46067          ,p_level    => C_LEVEL_PROCEDURE
46068          ,p_module   => l_log_module);
46069 
46070 END IF;
46071 --
46072 l_component_type             := 'AMB_JLT';
46073 l_component_code             := 'FV_REQ_UNRESERVE_CR';
46074 l_component_type_code        := 'S';
46075 l_component_appl_id          :=  201;
46076 l_amb_context_code           := 'DEFAULT';
46077 l_entity_code                := 'REQUISITION';
46078 l_event_class_code           := 'REQUISITION';
46079 l_event_type_code            := 'REQUISITION_ALL';
46080 l_line_definition_owner_code := 'S';
46081 l_line_definition_code       := 'FV_REQ_ALL';
46082 --
46083 l_balance_type_code          := 'A';
46084 l_segment                     := NULL;
46085 l_ccid                        := NULL;
46086 l_adr_transaction_coa_id      := NULL;
46087 l_adr_accounting_coa_id       := NULL;
46088 l_adr_flexfield_segment_code  := NULL;
46089 l_adr_flex_value_set_id       := NULL;
46090 l_adr_value_type_code         := NULL;
46091 l_adr_value_combination_id    := NULL;
46092 l_adr_value_segment_code      := NULL;
46093 
46094 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
46095 l_bflow_class_code           := 'FV_REQ_DR';    -- 4219869 Business Flow
46096 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
46097 l_budgetary_control_flag     := 'Y';
46098 
46099 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46100 l_bflow_applied_to_amt       := NULL; -- 5132302
46101 l_entered_amt_idx            := NULL;          -- 4262811
46102 l_accted_amt_idx             := NULL;          -- 4262811
46103 l_acc_rev_flag               := NULL;          -- 4262811
46104 l_accrual_line_num           := NULL;          -- 4262811
46105 l_tmp_amt                    := NULL;          -- 4262811
46106 --
46107  
46108 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46109     l_balance_type_code <> 'B' THEN
46110 IF (NVL(
46111 xla_ae_sources_pkg.GetSystemSourceChar(
46112    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46113  , p_source_type_code      => 'Y'
46114  , p_source_application_id =>  602
46115 ),'
46116 ') =  'REQ_UNRESERVED' OR 
46117 NVL(
46118 xla_ae_sources_pkg.GetSystemSourceChar(
46119    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46120  , p_source_type_code      => 'Y'
46121  , p_source_application_id =>  602
46122 ),'
46123 ') =  'REQ_FINAL_CLOSED' OR 
46124 (NVL(
46125 xla_ae_sources_pkg.GetSystemSourceChar(
46126    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46127  , p_source_type_code      => 'Y'
46128  , p_source_application_id =>  602
46129 ),'
46130 ') =  'REQ_ADJUSTED' AND 
46131 NVL(p_source_47,'
46132 ') =  'OLD') OR 
46133 NVL(
46134 xla_ae_sources_pkg.GetSystemSourceChar(
46135    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46136  , p_source_type_code      => 'Y'
46137  , p_source_application_id =>  602
46138 ),'
46139 ') =  'REQ_REJECTED' OR 
46140 NVL(
46141 xla_ae_sources_pkg.GetSystemSourceChar(
46142    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46143  , p_source_type_code      => 'Y'
46144  , p_source_application_id =>  602
46145 ),'
46146 ') =  'REQ_RETURNED') AND 
46147 NVL(p_source_13,'
46148 ') =  'M'
46149  THEN 
46150 
46151    --
46152    XLA_AE_LINES_PKG.SetNewLine;
46153 
46154    p_balance_type_code          := l_balance_type_code;
46155    -- set the flag so later we will know whether the gain loss line needs to be created
46156    
46157    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46158      p_actual_flag :='A';
46159    END IF;
46160 
46161    --
46162    -- bulk performance
46163    --
46164    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46165                                       p_header_num   => 0); -- 4262811
46166    --
46167    -- set accounting line options
46168    --
46169    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46170            p_natural_side_code          => 'C'
46171          , p_gain_or_loss_flag          => 'N'
46172          , p_gl_transfer_mode_code      => 'S'
46173          , p_acct_entry_type_code       => 'A'
46174          , p_switch_side_flag           => 'N'
46175          , p_merge_duplicate_code       => 'N'
46176          );
46177    --
46178    l_acc_rev_natural_side_code := 'D';  -- 4262811
46179    -- 
46180    --
46181    -- set accounting line type info
46182    --
46183    xla_ae_lines_pkg.SetAcctLineType
46184       (p_component_type             => l_component_type
46185       ,p_event_type_code            => l_event_type_code
46186       ,p_line_definition_owner_code => l_line_definition_owner_code
46187       ,p_line_definition_code       => l_line_definition_code
46188       ,p_accounting_line_code       => l_component_code
46189       ,p_accounting_line_type_code  => l_component_type_code
46190       ,p_accounting_line_appl_id    => l_component_appl_id
46191       ,p_amb_context_code           => l_amb_context_code
46192       ,p_entity_code                => l_entity_code
46193       ,p_event_class_code           => l_event_class_code);
46194    --
46195    -- set accounting class
46196    --
46197    xla_ae_lines_pkg.SetAcctClass(
46198            p_accounting_class_code  => 'REQUISITION'
46199          , p_ae_header_id           => l_ae_header_id
46200          );
46201 
46202    --
46203    -- set rounding class
46204    --
46205    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46206                       'REQUISITION';
46207 
46208    --
46209    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46210    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46211    --
46212    -- bulk performance
46213    --
46214    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46215 
46216    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46217       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46218 
46219    -- 4955764
46220    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46221       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46222 
46223    -- 4458381 Public Sector Enh
46224    
46225    --
46226    -- set accounting attributes for the line type
46227    --
46228    l_entered_amt_idx := 23;
46229    l_accted_amt_idx  := 25;
46230    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46231    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46232    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
46233    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
46234    l_rec_acct_attrs.array_num_value(2)  := 
46235 xla_ae_sources_pkg.GetSystemSourceNum(
46236    p_source_code           => 'XLA_EVENT_APPL_ID'
46237  , p_source_type_code      => 'Y'
46238  , p_source_application_id =>  602
46239 );
46240    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
46241    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
46242    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
46243    l_rec_acct_attrs.array_char_value(4)  := 
46244 xla_ae_sources_pkg.GetSystemSourceChar(
46245    p_source_code           => 'XLA_ENTITY_CODE'
46246  , p_source_type_code      => 'Y'
46247  , p_source_application_id =>  602
46248 );
46249    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
46250    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_43);
46251    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
46252    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_44);
46253    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
46254    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
46255    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46256    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
46257    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
46258    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
46259    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
46260    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
46261    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46262    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
46263    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
46264    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_43);
46265    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
46266    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
46267    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
46268    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
46269    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
46270    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
46271    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
46272    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
46273    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
46274    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
46275    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
46276    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
46277    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
46278    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
46279    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
46280    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
46281    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
46282    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
46283    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
46284    l_rec_acct_attrs.array_char_value(22)  := p_source_45;
46285    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
46286    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
46287    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
46288    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
46289    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
46290    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
46291    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
46292    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
46293    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
46294    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
46295    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
46296    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
46297    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
46298    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_43);
46299    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
46300    l_rec_acct_attrs.array_num_value(30)  := p_source_46;
46301    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
46302    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
46303 
46304    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46305    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46306 
46307    ---------------------------------------------------------------------------------------------------------------
46308    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46309    ---------------------------------------------------------------------------------------------------------------
46310    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46311 
46312    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46313    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46314 
46315    IF xla_accounting_cache_pkg.GetValueChar
46316          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46317          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46318    AND l_bflow_method_code = 'PRIOR_ENTRY'
46319 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46320    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46321          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46322        )
46323    THEN
46324          xla_ae_lines_pkg.BflowUpgEntry
46325            (p_business_method_code    => l_bflow_method_code
46326            ,p_business_class_code     => l_bflow_class_code
46327            ,p_balance_type            => l_balance_type_code);
46328    ELSE
46329       NULL;
46330 XLA_AE_LINES_PKG.business_flow_validation(
46331                                 p_business_method_code     => l_bflow_method_code
46332                                ,p_business_class_code      => l_bflow_class_code
46333                                ,p_inherit_description_flag => l_inherit_desc_flag);
46334    END IF;
46335 
46336    --
46337    -- call analytical criteria
46338    --
46339    -- Inherited Analytical Criteria for business flow method of Prior Entry.
46340    --
46341    -- call description
46342    --
46343    -- No description or it is inherited.
46344    --
46345    -- call ADRs
46346    -- Bug 4922099
46347    --
46348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46349         (NVL(l_actual_upg_option, 'N') = 'O') OR
46350         (NVL(l_enc_upg_option, 'N') = 'O')
46351       )
46352    THEN
46353    NULL;
46354    --
46355    --
46356    
46357    --
46358    --
46359    END IF;
46360    --
46361    -- Bug 4922099
46362    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46363           (NVL(l_enc_upg_option, 'N') = 'O')
46364         ) AND
46365         (l_bflow_method_code = 'PRIOR_ENTRY')
46366       )
46367    THEN
46368       IF
46369       --
46370       1 = 1
46371       --
46372       THEN
46373       xla_accounting_err_pkg.build_message
46374                                     (p_appli_s_name            => 'XLA'
46375                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46376                                     ,p_token_1                 => 'LINE_NUMBER'
46377                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46378                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46379                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46380                                                                              l_component_type
46381                                                                             ,l_component_code
46382                                                                             ,l_component_type_code
46383                                                                             ,l_component_appl_id
46384                                                                             ,l_amb_context_code
46385                                                                             ,l_entity_code
46386                                                                             ,l_event_class_code
46387                                                                            )
46388                                     ,p_token_3                 => 'OWNER'
46389                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46390                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46391                                                                           ,p_lookup_code    => l_component_type_code
46392                                                                          )
46393                                     ,p_token_4                 => 'PRODUCT_NAME'
46394                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46395                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46396                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46397                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46398                                     ,p_ae_header_id            =>  NULL
46399                                        );
46400 
46401         IF (C_LEVEL_ERROR>= g_log_level) THEN
46402                  trace
46403                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46404                       ,p_level    => C_LEVEL_ERROR
46405                       ,p_module   => l_log_module);
46406         END IF;
46407       END IF;
46408    END IF;
46409    --
46410    --
46411    ------------------------------------------------------------------------------------------------
46412    -- 4219869 Business Flow
46413    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46414    -- Prior Entry.  Currently, the following code is always generated.
46415    ------------------------------------------------------------------------------------------------
46416    -- No ValidateCurrentLine for business flow method of Prior Entry
46417 
46418    ------------------------------------------------------------------------------------
46419    -- 4219869 Business Flow
46420    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46421    ------------------------------------------------------------------------------------
46422    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46423 
46424    ----------------------------------------------------------------------------------
46425    -- 4219869 Business Flow
46426    -- Update journal entry status -- Need to generate this within IF <condition>
46427    ----------------------------------------------------------------------------------
46428    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46429          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46430          ,p_balance_type_code => l_balance_type_code
46431          );
46432 
46433    -------------------------------------------------------------------------------------------
46434    -- 4262811 - Generate the Accrual Reversal lines
46435    -------------------------------------------------------------------------------------------
46436    BEGIN
46437       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46438                               (g_array_event(p_event_id).array_value_num('header_index'));
46439       IF l_acc_rev_flag IS NULL THEN
46440          l_acc_rev_flag := 'N';
46441       END IF;
46442    EXCEPTION
46443       WHEN OTHERS THEN
46444          l_acc_rev_flag := 'N';
46445    END;
46446    --
46447    IF (l_acc_rev_flag = 'Y') THEN
46448 
46449        -- 4645092  ------------------------------------------------------------------------------
46450        -- To allow MPA report to determine if it should generate report process
46451        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46452        ------------------------------------------------------------------------------------------
46453 
46454        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46455        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46456 
46457        --
46458        -- Update the line information that should be overwritten
46459        --
46460        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46461                                          p_header_num   => 1);
46462        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46463 
46464        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46465 
46466        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46467           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46468        END IF;
46469 
46470       --
46471       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46472       --
46473       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46474           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46475       ELSE
46476           ---------------------------------------------------------------------------------------------------
46477           -- 4262811a Switch Sign
46478           ---------------------------------------------------------------------------------------------------
46479           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46480           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46481                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46482           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46483                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46484           -- 5132302
46485           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46486                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46487 
46488       END IF;
46489 
46490       -- 4955764
46491       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46492       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46493 
46494 
46495       XLA_AE_LINES_PKG.ValidateCurrentLine;
46496       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46497 
46498       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46499                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46500                ,p_balance_type_code => l_balance_type_code);
46501 
46502    END IF;
46503 
46504    -----------------------------------------------------------------------------------------
46505    -- 4262811 Multiperiod Accounting
46506    -----------------------------------------------------------------------------------------
46507      -- No MPA option is assigned.
46508 
46509 
46510 END IF;
46511 END IF;
46512 --
46513 
46514 --
46515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46516    trace
46517       (p_msg      => 'END of AcctLineType_84'
46518       ,p_level    => C_LEVEL_PROCEDURE
46519       ,p_module   => l_log_module);
46520 END IF;
46521 --
46522 EXCEPTION
46523   WHEN xla_exceptions_pkg.application_exception THEN
46524       RAISE;
46525   WHEN OTHERS THEN
46526        xla_exceptions_pkg.raise_message
46527            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_84');
46528 END AcctLineType_84;
46529 --
46530 
46531 ---------------------------------------
46532 --
46533 -- PRIVATE FUNCTION
46534 --         AcctLineType_85
46535 --
46536 ---------------------------------------
46537 PROCEDURE AcctLineType_85 (
46538   p_application_id        IN NUMBER
46539  ,p_event_id              IN NUMBER
46540  ,p_calculate_acctd_flag  IN VARCHAR2
46541  ,p_calculate_g_l_flag    IN VARCHAR2
46542  ,p_actual_flag           IN OUT VARCHAR2
46543  ,p_balance_type_code     OUT VARCHAR2
46544  ,p_gain_or_loss_ref      OUT VARCHAR2
46545  
46546 --Budget Account
46547  , p_source_9            IN NUMBER
46548 --Main Or Backing Code
46549  , p_source_13            IN VARCHAR2
46550 --Accounting Reversal Flag
46551  , p_source_15            IN VARCHAR2
46552 --Distribution Link Type
46553  , p_source_17            IN VARCHAR2
46554 --Applied To Application Identifier
46555  , p_source_21            IN NUMBER
46556 --Applied To Distribution Link Type
46557  , p_source_22            IN VARCHAR2
46558 --Applied To Entity Code
46559  , p_source_23            IN VARCHAR2
46560 --Applied To Distribution Identifier 1
46561  , p_source_24            IN NUMBER
46562 --Applied To Header Identifier 1
46563  , p_source_25            IN NUMBER
46564 --Entered Amount
46565  , p_source_26            IN NUMBER
46566 --Currency Code
46567  , p_source_27            IN VARCHAR2
46568 --Accounted Amount
46569  , p_source_28            IN NUMBER
46570 --JFMIP Reference
46571  , p_source_31            IN VARCHAR2
46572 --Requisition Distribution Identifier
46573  , p_source_43            IN NUMBER
46574 --Requisition Identifier
46575  , p_source_44            IN NUMBER
46576 --Requisition Encumbrance Upgrade Option
46577  , p_source_45            IN VARCHAR2
46578 --Requisition Upgrade Encumbrance Type Identifier
46579  , p_source_46            IN NUMBER
46580 --Adjustment Status
46581  , p_source_47            IN VARCHAR2
46582 )
46583 IS
46584 
46585 l_component_type              VARCHAR2(80);
46586 l_component_code              VARCHAR2(30);
46587 l_component_type_code         VARCHAR2(1);
46588 l_component_appl_id           INTEGER;
46589 l_amb_context_code            VARCHAR2(30);
46590 l_entity_code                 VARCHAR2(30);
46591 l_event_class_code            VARCHAR2(30);
46592 l_ae_header_id                NUMBER;
46593 l_event_type_code             VARCHAR2(30);
46594 l_line_definition_code        VARCHAR2(30);
46595 l_line_definition_owner_code  VARCHAR2(1);
46596 --
46597 -- adr variables
46598 l_segment                     VARCHAR2(30);
46599 l_ccid                        NUMBER;
46600 l_adr_transaction_coa_id      NUMBER;
46601 l_adr_accounting_coa_id       NUMBER;
46602 l_adr_flexfield_segment_code  VARCHAR2(30);
46603 l_adr_flex_value_set_id       NUMBER;
46604 l_adr_value_type_code         VARCHAR2(30);
46605 l_adr_value_combination_id    NUMBER;
46606 l_adr_value_segment_code      VARCHAR2(30);
46607 
46608 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46609 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46610 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46611 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46612 
46613 -- 4262811 Variables ------------------------------------------------------------------------------------------
46614 l_entered_amt_idx             NUMBER;
46615 l_accted_amt_idx              NUMBER;
46616 l_acc_rev_flag                VARCHAR2(1);
46617 l_accrual_line_num            NUMBER;
46618 l_tmp_amt                     NUMBER;
46619 l_acc_rev_natural_side_code   VARCHAR2(1);
46620 
46621 l_num_entries                 NUMBER;
46622 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46623 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46624 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46625 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46626 l_recog_line_1                NUMBER;
46627 l_recog_line_2                NUMBER;
46628 
46629 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46630 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46631 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46632 
46633 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46634 
46635 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46636 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46637 
46638 ---------------------------------------------------------------------------------------------------------------
46639 
46640 
46641 --
46642 -- bulk performance
46643 --
46644 l_balance_type_code           VARCHAR2(1);
46645 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46646 l_log_module                  VARCHAR2(240);
46647 
46648 --
46649 -- Upgrade strategy
46650 --
46651 l_actual_upg_option           VARCHAR2(1);
46652 l_enc_upg_option           VARCHAR2(1);
46653 
46654 --
46655 BEGIN
46656 --
46657 IF g_log_enabled THEN
46658       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
46659 END IF;
46660 --
46661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46662 
46663       trace
46664          (p_msg      => 'BEGIN of AcctLineType_85'
46665          ,p_level    => C_LEVEL_PROCEDURE
46666          ,p_module   => l_log_module);
46667 
46668 END IF;
46669 --
46670 l_component_type             := 'AMB_JLT';
46671 l_component_code             := 'FV_REQ_UNRESERVE_DR';
46672 l_component_type_code        := 'S';
46673 l_component_appl_id          :=  201;
46674 l_amb_context_code           := 'DEFAULT';
46675 l_entity_code                := 'REQUISITION';
46676 l_event_class_code           := 'REQUISITION';
46677 l_event_type_code            := 'REQUISITION_ALL';
46678 l_line_definition_owner_code := 'S';
46679 l_line_definition_code       := 'FV_REQ_ALL';
46680 --
46681 l_balance_type_code          := 'A';
46682 l_segment                     := NULL;
46683 l_ccid                        := NULL;
46684 l_adr_transaction_coa_id      := NULL;
46685 l_adr_accounting_coa_id       := NULL;
46686 l_adr_flexfield_segment_code  := NULL;
46687 l_adr_flex_value_set_id       := NULL;
46688 l_adr_value_type_code         := NULL;
46689 l_adr_value_combination_id    := NULL;
46690 l_adr_value_segment_code      := NULL;
46691 
46692 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
46693 l_bflow_class_code           := 'FV_REQ_CR';    -- 4219869 Business Flow
46694 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
46695 l_budgetary_control_flag     := 'Y';
46696 
46697 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46698 l_bflow_applied_to_amt       := NULL; -- 5132302
46699 l_entered_amt_idx            := NULL;          -- 4262811
46700 l_accted_amt_idx             := NULL;          -- 4262811
46701 l_acc_rev_flag               := NULL;          -- 4262811
46702 l_accrual_line_num           := NULL;          -- 4262811
46703 l_tmp_amt                    := NULL;          -- 4262811
46704 --
46705  
46706 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46707     l_balance_type_code <> 'B' THEN
46708 IF (NVL(
46709 xla_ae_sources_pkg.GetSystemSourceChar(
46710    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46711  , p_source_type_code      => 'Y'
46712  , p_source_application_id =>  602
46713 ),'
46714 ') =  'REQ_UNRESERVED' OR 
46715 NVL(
46716 xla_ae_sources_pkg.GetSystemSourceChar(
46717    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46718  , p_source_type_code      => 'Y'
46719  , p_source_application_id =>  602
46720 ),'
46721 ') =  'REQ_FINAL_CLOSED' OR 
46722 (NVL(
46723 xla_ae_sources_pkg.GetSystemSourceChar(
46724    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46725  , p_source_type_code      => 'Y'
46726  , p_source_application_id =>  602
46727 ),'
46728 ') =  'REQ_ADJUSTED' AND 
46729 NVL(p_source_47,'
46730 ') =  'OLD') OR 
46731 NVL(
46732 xla_ae_sources_pkg.GetSystemSourceChar(
46733    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46734  , p_source_type_code      => 'Y'
46735  , p_source_application_id =>  602
46736 ),'
46737 ') =  'REQ_REJECTED' OR 
46738 NVL(
46739 xla_ae_sources_pkg.GetSystemSourceChar(
46740    p_source_code           => 'XLA_EVENT_TYPE_CODE'
46741  , p_source_type_code      => 'Y'
46742  , p_source_application_id =>  602
46743 ),'
46744 ') =  'REQ_RETURNED') AND 
46745 NVL(p_source_13,'
46746 ') =  'M'
46747  THEN 
46748 
46749    --
46750    XLA_AE_LINES_PKG.SetNewLine;
46751 
46752    p_balance_type_code          := l_balance_type_code;
46753    -- set the flag so later we will know whether the gain loss line needs to be created
46754    
46755    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46756      p_actual_flag :='A';
46757    END IF;
46758 
46759    --
46760    -- bulk performance
46761    --
46762    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46763                                       p_header_num   => 0); -- 4262811
46764    --
46765    -- set accounting line options
46766    --
46767    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46768            p_natural_side_code          => 'D'
46769          , p_gain_or_loss_flag          => 'N'
46770          , p_gl_transfer_mode_code      => 'S'
46771          , p_acct_entry_type_code       => 'A'
46772          , p_switch_side_flag           => 'N'
46773          , p_merge_duplicate_code       => 'N'
46774          );
46775    --
46776    l_acc_rev_natural_side_code := 'C';  -- 4262811
46777    -- 
46778    --
46779    -- set accounting line type info
46780    --
46781    xla_ae_lines_pkg.SetAcctLineType
46782       (p_component_type             => l_component_type
46783       ,p_event_type_code            => l_event_type_code
46784       ,p_line_definition_owner_code => l_line_definition_owner_code
46785       ,p_line_definition_code       => l_line_definition_code
46786       ,p_accounting_line_code       => l_component_code
46787       ,p_accounting_line_type_code  => l_component_type_code
46788       ,p_accounting_line_appl_id    => l_component_appl_id
46789       ,p_amb_context_code           => l_amb_context_code
46790       ,p_entity_code                => l_entity_code
46791       ,p_event_class_code           => l_event_class_code);
46792    --
46793    -- set accounting class
46794    --
46795    xla_ae_lines_pkg.SetAcctClass(
46796            p_accounting_class_code  => 'REQUISITION'
46797          , p_ae_header_id           => l_ae_header_id
46798          );
46799 
46800    --
46801    -- set rounding class
46802    --
46803    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46804                       'REQUISITION';
46805 
46806    --
46807    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46808    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46809    --
46810    -- bulk performance
46811    --
46812    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46813 
46814    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46815       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46816 
46817    -- 4955764
46818    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46819       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46820 
46821    -- 4458381 Public Sector Enh
46822    
46823    --
46824    -- set accounting attributes for the line type
46825    --
46826    l_entered_amt_idx := 23;
46827    l_accted_amt_idx  := 25;
46828    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46829    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46830    l_rec_acct_attrs.array_char_value(1)  := p_source_15;
46831    l_rec_acct_attrs.array_acct_attr_code(2) := 'ALLOC_TO_APPLICATION_ID';
46832    l_rec_acct_attrs.array_num_value(2)  := 
46833 xla_ae_sources_pkg.GetSystemSourceNum(
46834    p_source_code           => 'XLA_EVENT_APPL_ID'
46835  , p_source_type_code      => 'Y'
46836  , p_source_application_id =>  602
46837 );
46838    l_rec_acct_attrs.array_acct_attr_code(3) := 'ALLOC_TO_DISTRIBUTION_TYPE';
46839    l_rec_acct_attrs.array_char_value(3)  := p_source_17;
46840    l_rec_acct_attrs.array_acct_attr_code(4) := 'ALLOC_TO_ENTITY_CODE';
46841    l_rec_acct_attrs.array_char_value(4)  := 
46842 xla_ae_sources_pkg.GetSystemSourceChar(
46843    p_source_code           => 'XLA_ENTITY_CODE'
46844  , p_source_type_code      => 'Y'
46845  , p_source_application_id =>  602
46846 );
46847    l_rec_acct_attrs.array_acct_attr_code(5) := 'ALLOC_TO_FIRST_DIST_ID';
46848    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_43);
46849    l_rec_acct_attrs.array_acct_attr_code(6) := 'ALLOC_TO_FIRST_SYS_TRAN_ID';
46850    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_44);
46851    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_APPLICATION_ID';
46852    l_rec_acct_attrs.array_num_value(7)  := p_source_21;
46853    l_rec_acct_attrs.array_acct_attr_code(8) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46854    l_rec_acct_attrs.array_char_value(8)  := p_source_22;
46855    l_rec_acct_attrs.array_acct_attr_code(9) := 'APPLIED_TO_ENTITY_CODE';
46856    l_rec_acct_attrs.array_char_value(9)  := p_source_23;
46857    l_rec_acct_attrs.array_acct_attr_code(10) := 'APPLIED_TO_FIRST_DIST_ID';
46858    l_rec_acct_attrs.array_num_value(10)  :=  to_char(p_source_24);
46859    l_rec_acct_attrs.array_acct_attr_code(11) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46860    l_rec_acct_attrs.array_num_value(11)  :=  to_char(p_source_25);
46861    l_rec_acct_attrs.array_acct_attr_code(12) := 'DISTRIBUTION_IDENTIFIER_1';
46862    l_rec_acct_attrs.array_num_value(12)  :=  to_char(p_source_43);
46863    l_rec_acct_attrs.array_acct_attr_code(13) := 'DISTRIBUTION_TYPE';
46864    l_rec_acct_attrs.array_char_value(13)  := p_source_17;
46865    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_CR_CCID';
46866    l_rec_acct_attrs.array_num_value(14)  := TO_NUMBER(p_source_9);
46867    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_CR_ENTERED_AMT';
46868    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
46869    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_CR_ENTERED_CURR';
46870    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
46871    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENC_UPG_CR_LEDGER_AMT';
46872    l_rec_acct_attrs.array_num_value(17)  := p_source_28;
46873    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENC_UPG_DR_CCID';
46874    l_rec_acct_attrs.array_num_value(18)  := TO_NUMBER(p_source_9);
46875    l_rec_acct_attrs.array_acct_attr_code(19) := 'ENC_UPG_DR_ENTERED_AMT';
46876    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
46877    l_rec_acct_attrs.array_acct_attr_code(20) := 'ENC_UPG_DR_ENTERED_CURR';
46878    l_rec_acct_attrs.array_char_value(20)  := p_source_27;
46879    l_rec_acct_attrs.array_acct_attr_code(21) := 'ENC_UPG_DR_LEDGER_AMT';
46880    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
46881    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENC_UPG_OPTION';
46882    l_rec_acct_attrs.array_char_value(22)  := p_source_45;
46883    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_AMOUNT';
46884    l_rec_acct_attrs.array_num_value(23)  := p_source_26;
46885    l_rec_acct_attrs.array_acct_attr_code(24) := 'ENTERED_CURRENCY_CODE';
46886    l_rec_acct_attrs.array_char_value(24)  := p_source_27;
46887    l_rec_acct_attrs.array_acct_attr_code(25) := 'LEDGER_AMOUNT';
46888    l_rec_acct_attrs.array_num_value(25)  := p_source_28;
46889    l_rec_acct_attrs.array_acct_attr_code(26) := 'RECON_REF';
46890    l_rec_acct_attrs.array_char_value(26)  := p_source_31;
46891    l_rec_acct_attrs.array_acct_attr_code(27) := 'REVERSED_DISTRIBUTION_ID1';
46892    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_24);
46893    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_TYPE';
46894    l_rec_acct_attrs.array_char_value(28)  := p_source_22;
46895    l_rec_acct_attrs.array_acct_attr_code(29) := 'TRX_ROUNDING_REF';
46896    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_43);
46897    l_rec_acct_attrs.array_acct_attr_code(30) := 'UPG_CR_ENC_TYPE_ID';
46898    l_rec_acct_attrs.array_num_value(30)  := p_source_46;
46899    l_rec_acct_attrs.array_acct_attr_code(31) := 'UPG_DR_ENC_TYPE_ID';
46900    l_rec_acct_attrs.array_num_value(31)  := p_source_46;
46901 
46902    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46903    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46904 
46905    ---------------------------------------------------------------------------------------------------------------
46906    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46907    ---------------------------------------------------------------------------------------------------------------
46908    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46909 
46910    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46911    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46912 
46913    IF xla_accounting_cache_pkg.GetValueChar
46914          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46915          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46916    AND l_bflow_method_code = 'PRIOR_ENTRY'
46917 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46918    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46919          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46920        )
46921    THEN
46922          xla_ae_lines_pkg.BflowUpgEntry
46923            (p_business_method_code    => l_bflow_method_code
46924            ,p_business_class_code     => l_bflow_class_code
46925            ,p_balance_type            => l_balance_type_code);
46926    ELSE
46927       NULL;
46928 XLA_AE_LINES_PKG.business_flow_validation(
46929                                 p_business_method_code     => l_bflow_method_code
46930                                ,p_business_class_code      => l_bflow_class_code
46931                                ,p_inherit_description_flag => l_inherit_desc_flag);
46932    END IF;
46933 
46934    --
46935    -- call analytical criteria
46936    --
46937    -- Inherited Analytical Criteria for business flow method of Prior Entry.
46938    --
46939    -- call description
46940    --
46941    -- No description or it is inherited.
46942    --
46943    -- call ADRs
46944    -- Bug 4922099
46945    --
46946    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46947         (NVL(l_actual_upg_option, 'N') = 'O') OR
46948         (NVL(l_enc_upg_option, 'N') = 'O')
46949       )
46950    THEN
46951    NULL;
46952    --
46953    --
46954    
46955    --
46956    --
46957    END IF;
46958    --
46959    -- Bug 4922099
46960    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46961           (NVL(l_enc_upg_option, 'N') = 'O')
46962         ) AND
46963         (l_bflow_method_code = 'PRIOR_ENTRY')
46964       )
46965    THEN
46966       IF
46967       --
46968       1 = 1
46969       --
46970       THEN
46971       xla_accounting_err_pkg.build_message
46972                                     (p_appli_s_name            => 'XLA'
46973                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46974                                     ,p_token_1                 => 'LINE_NUMBER'
46975                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46976                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46977                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46978                                                                              l_component_type
46979                                                                             ,l_component_code
46980                                                                             ,l_component_type_code
46981                                                                             ,l_component_appl_id
46982                                                                             ,l_amb_context_code
46983                                                                             ,l_entity_code
46984                                                                             ,l_event_class_code
46985                                                                            )
46986                                     ,p_token_3                 => 'OWNER'
46987                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46988                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46989                                                                           ,p_lookup_code    => l_component_type_code
46990                                                                          )
46991                                     ,p_token_4                 => 'PRODUCT_NAME'
46992                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46993                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46994                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46995                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46996                                     ,p_ae_header_id            =>  NULL
46997                                        );
46998 
46999         IF (C_LEVEL_ERROR>= g_log_level) THEN
47000                  trace
47001                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47002                       ,p_level    => C_LEVEL_ERROR
47003                       ,p_module   => l_log_module);
47004         END IF;
47005       END IF;
47006    END IF;
47007    --
47008    --
47009    ------------------------------------------------------------------------------------------------
47010    -- 4219869 Business Flow
47011    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47012    -- Prior Entry.  Currently, the following code is always generated.
47013    ------------------------------------------------------------------------------------------------
47014    -- No ValidateCurrentLine for business flow method of Prior Entry
47015 
47016    ------------------------------------------------------------------------------------
47017    -- 4219869 Business Flow
47018    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47019    ------------------------------------------------------------------------------------
47020    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47021 
47022    ----------------------------------------------------------------------------------
47023    -- 4219869 Business Flow
47024    -- Update journal entry status -- Need to generate this within IF <condition>
47025    ----------------------------------------------------------------------------------
47026    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47027          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47028          ,p_balance_type_code => l_balance_type_code
47029          );
47030 
47031    -------------------------------------------------------------------------------------------
47032    -- 4262811 - Generate the Accrual Reversal lines
47033    -------------------------------------------------------------------------------------------
47034    BEGIN
47035       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47036                               (g_array_event(p_event_id).array_value_num('header_index'));
47037       IF l_acc_rev_flag IS NULL THEN
47038          l_acc_rev_flag := 'N';
47039       END IF;
47040    EXCEPTION
47041       WHEN OTHERS THEN
47042          l_acc_rev_flag := 'N';
47043    END;
47044    --
47045    IF (l_acc_rev_flag = 'Y') THEN
47046 
47047        -- 4645092  ------------------------------------------------------------------------------
47048        -- To allow MPA report to determine if it should generate report process
47049        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47050        ------------------------------------------------------------------------------------------
47051 
47052        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47053        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47054 
47055        --
47056        -- Update the line information that should be overwritten
47057        --
47058        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47059                                          p_header_num   => 1);
47060        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47061 
47062        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47063 
47064        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47065           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47066        END IF;
47067 
47068       --
47069       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47070       --
47071       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47072           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47073       ELSE
47074           ---------------------------------------------------------------------------------------------------
47075           -- 4262811a Switch Sign
47076           ---------------------------------------------------------------------------------------------------
47077           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47078           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47079                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47080           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47081                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47082           -- 5132302
47083           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47084                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47085 
47086       END IF;
47087 
47088       -- 4955764
47089       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47091 
47092 
47093       XLA_AE_LINES_PKG.ValidateCurrentLine;
47094       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47095 
47096       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47097                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47098                ,p_balance_type_code => l_balance_type_code);
47099 
47100    END IF;
47101 
47102    -----------------------------------------------------------------------------------------
47103    -- 4262811 Multiperiod Accounting
47104    -----------------------------------------------------------------------------------------
47105      -- No MPA option is assigned.
47106 
47107 
47108 END IF;
47109 END IF;
47110 --
47111 
47112 --
47113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47114    trace
47115       (p_msg      => 'END of AcctLineType_85'
47116       ,p_level    => C_LEVEL_PROCEDURE
47117       ,p_module   => l_log_module);
47118 END IF;
47119 --
47120 EXCEPTION
47121   WHEN xla_exceptions_pkg.application_exception THEN
47122       RAISE;
47123   WHEN OTHERS THEN
47124        xla_exceptions_pkg.raise_message
47125            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.AcctLineType_85');
47126 END AcctLineType_85;
47127 --
47128 
47129 ---------------------------------------
47130 --
47131 -- PRIVATE PROCEDURE
47132 --         insert_sources_86
47133 --
47134 ----------------------------------------
47135 --
47136 PROCEDURE insert_sources_86(
47137                                 p_target_ledger_id       IN NUMBER
47138                               , p_language               IN VARCHAR2
47139                               , p_sla_ledger_id          IN NUMBER
47140                               , p_pad_start_date         IN DATE
47141                               , p_pad_end_date           IN DATE
47142                          )
47143 IS
47144 
47145 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_PA_ALL';
47146 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PO_PA';
47147 p_apps_owner                   VARCHAR2(30);
47148 l_log_module                   VARCHAR2(240);
47149 BEGIN
47150 IF g_log_enabled THEN
47151       l_log_module := C_DEFAULT_MODULE||'.insert_sources_86';
47152 END IF;
47153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47154 
47155       trace
47156          (p_msg      => 'BEGIN of insert_sources_86'
47157          ,p_level    => C_LEVEL_PROCEDURE
47158          ,p_module   => l_log_module);
47159 
47160 END IF;
47161 
47162 -- select APPS owner
47163 SELECT oracle_username
47164   INTO p_apps_owner
47165   FROM fnd_oracle_userid
47166  WHERE read_only_flag = 'U'
47167 ;
47168 
47169 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
47170       trace
47171          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
47172                         ' - p_language = '||p_language||
47173                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
47174                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
47175                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
47176                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
47177          ,p_level    => C_LEVEL_STATEMENT
47178          ,p_module   => l_log_module);
47179 END IF;
47180 
47181 
47182 --
47183 INSERT INTO xla_diag_sources --hdr2
47184 (
47185         event_id
47186       , ledger_id
47187       , sla_ledger_id
47188       , description_language
47189       , object_name
47190       , object_type_code
47191       , line_number
47192       , source_application_id
47193       , source_type_code
47194       , source_code
47195       , source_value
47196       , source_meaning
47197       , created_by
47198       , creation_date
47199       , last_update_date
47200       , last_updated_by
47201       , last_update_login
47202       , program_update_date
47203       , program_application_id
47204       , program_id
47205       , request_id
47206 )
47207 SELECT
47208         event_id
47209       , p_target_ledger_id
47210       , p_sla_ledger_id
47211       , p_language
47212       , object_name
47213       , object_type_code
47214       , line_number
47215       , source_application_id
47216       , source_type_code
47217       , source_code
47218       , SUBSTR(source_value ,1,1996)
47219       , SUBSTR(source_meaning ,1,200)
47220       , xla_environment_pkg.g_Usr_Id
47221       , TRUNC(SYSDATE)
47222       , TRUNC(SYSDATE)
47223       , xla_environment_pkg.g_Usr_Id
47224       , xla_environment_pkg.g_Login_Id
47225       , TRUNC(SYSDATE)
47226       , xla_environment_pkg.g_Prog_Appl_Id
47227       , xla_environment_pkg.g_Prog_Id
47228       , xla_environment_pkg.g_Req_Id
47229   FROM (
47230        SELECT xet.event_id                  event_id
47231             , 0                          line_number
47232             , CASE r
47233                WHEN 1 THEN 'PO_EXTRACT_HEADER_V' 
47234                 WHEN 2 THEN 'PO_EXTRACT_HEADER_V' 
47235                 WHEN 3 THEN 'PO_EXTRACT_HEADER_V' 
47236                 WHEN 4 THEN 'PO_EXTRACT_HEADER_V' 
47237                 WHEN 5 THEN 'PO_EXTRACT_HEADER_V' 
47238                 
47239                ELSE null
47240               END                           object_name
47241             , CASE r
47242                 WHEN 1 THEN 'HEADER' 
47243                 WHEN 2 THEN 'HEADER' 
47244                 WHEN 3 THEN 'HEADER' 
47245                 WHEN 4 THEN 'HEADER' 
47246                 WHEN 5 THEN 'HEADER' 
47247                 
47248                 ELSE null
47249               END                           object_type_code
47250             , CASE r
47251                 WHEN 1 THEN '201' 
47252                 WHEN 2 THEN '201' 
47253                 WHEN 3 THEN '201' 
47254                 WHEN 4 THEN '201' 
47255                 WHEN 5 THEN '201' 
47256                 
47257                 ELSE null
47258               END                           source_application_id
47259             , 'S'             source_type_code
47260             , CASE r
47261                 WHEN 1 THEN 'PO_TYPE' 
47262                 WHEN 2 THEN 'PO_NUMBER' 
47263                 WHEN 3 THEN 'PO_HEADER_ID' 
47264                 WHEN 4 THEN 'ENCUMBRANCE_TYPE_ID' 
47265                 WHEN 5 THEN 'GL_DATE' 
47266                 
47267                 ELSE null
47268               END                           source_code
47269             , CASE r
47270                 WHEN 1 THEN TO_CHAR(h4.PO_TYPE)
47271                 WHEN 2 THEN TO_CHAR(h4.PO_NUMBER)
47272                 WHEN 3 THEN TO_CHAR(h4.PO_HEADER_ID)
47273                 WHEN 4 THEN TO_CHAR(h4.ENCUMBRANCE_TYPE_ID)
47274                 WHEN 5 THEN TO_CHAR(h4.GL_DATE)
47275                 
47276                 ELSE null
47277               END                           source_value
47278             , null              source_meaning
47279          FROM xla_events_gt     xet  
47280       , PO_EXTRACT_HEADER_V  h4
47281              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
47282          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
47283            AND xet.event_class_code = C_EVENT_CLASS_CODE
47284               AND h4.event_id = xet.event_id
47285 
47286 )
47287 ;
47288 --
47289 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
47290 
47291       trace
47292          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
47293          ,p_level    => C_LEVEL_STATEMENT
47294          ,p_module   => l_log_module);
47295 
47296 END IF;
47297 --
47298 
47299 
47300 
47301 --
47302 INSERT INTO xla_diag_sources  --line2
47303 (
47304         event_id
47305       , ledger_id
47306       , sla_ledger_id
47307       , description_language
47308       , object_name
47309       , object_type_code
47310       , line_number
47311       , source_application_id
47312       , source_type_code
47313       , source_code
47314       , source_value
47315       , source_meaning
47316       , created_by
47317       , creation_date
47318       , last_update_date
47319       , last_updated_by
47320       , last_update_login
47321       , program_update_date
47322       , program_application_id
47323       , program_id
47324       , request_id
47325 )
47326 SELECT  event_id
47327       , p_target_ledger_id
47328       , p_sla_ledger_id
47329       , p_language
47330       , object_name
47331       , object_type_code
47332       , line_number
47333       , source_application_id
47334       , source_type_code
47335       , source_code
47336       , SUBSTR(source_value,1,1996)
47337       , SUBSTR(source_meaning ,1,200)
47338       , xla_environment_pkg.g_Usr_Id
47339       , TRUNC(SYSDATE)
47340       , TRUNC(SYSDATE)
47341       , xla_environment_pkg.g_Usr_Id
47342       , xla_environment_pkg.g_Login_Id
47343       , TRUNC(SYSDATE)
47344       , xla_environment_pkg.g_Prog_Appl_Id
47345       , xla_environment_pkg.g_Prog_Id
47346       , xla_environment_pkg.g_Req_Id
47347   FROM (
47348        SELECT xet.event_id                  event_id
47349             , l3.line_number                 line_number
47350             , CASE r
47351                WHEN 1 THEN 'PO_EXTRACT_DETAIL_V' 
47352                 WHEN 2 THEN 'FV_XLA_PO_REF_V' 
47353                 WHEN 3 THEN 'FV_XLA_PO_REF_V' 
47354                 WHEN 4 THEN 'PO_EXTRACT_DETAIL_V' 
47355                 WHEN 5 THEN 'FV_XLA_PO_REF_V' 
47356                 WHEN 6 THEN 'FV_XLA_PO_REF_V' 
47357                 WHEN 7 THEN 'PO_EXTRACT_DETAIL_V' 
47358                 WHEN 8 THEN 'PO_EXTRACT_DETAIL_V' 
47359                 WHEN 9 THEN 'PO_EXTRACT_DETAIL_V' 
47360                 WHEN 10 THEN 'PO_EXTRACT_DETAIL_V' 
47361                 WHEN 11 THEN 'PO_EXTRACT_DETAIL_V' 
47362                 WHEN 12 THEN 'PO_EXTRACT_DETAIL_V' 
47363                 WHEN 13 THEN 'PO_EXTRACT_DETAIL_V' 
47364                 WHEN 14 THEN 'PO_EXTRACT_DETAIL_V' 
47365                 WHEN 15 THEN 'PO_EXTRACT_DETAIL_V' 
47366                 WHEN 16 THEN 'PO_EXTRACT_DETAIL_V' 
47367                 WHEN 17 THEN 'PO_EXTRACT_DETAIL_V' 
47368                 WHEN 18 THEN 'PO_EXTRACT_DETAIL_V' 
47369                 WHEN 19 THEN 'PO_EXTRACT_DETAIL_V' 
47370                 WHEN 20 THEN 'PO_EXTRACT_DETAIL_V' 
47371                 WHEN 21 THEN 'FV_XLA_PO_REF_V' 
47372                 WHEN 22 THEN 'PO_EXTRACT_DETAIL_V' 
47373                 WHEN 23 THEN 'PO_EXTRACT_DETAIL_V' 
47374                 WHEN 24 THEN 'PO_EXTRACT_DETAIL_V' 
47375                 WHEN 25 THEN 'PO_EXTRACT_DETAIL_V' 
47376                 WHEN 26 THEN 'PO_DISTS_REF_V' 
47377                 WHEN 27 THEN 'PO_DISTS_REF_V' 
47378                 WHEN 28 THEN 'PO_DISTS_REF_V' 
47379                 WHEN 29 THEN 'FV_XLA_PO_REF_V' 
47380                 WHEN 30 THEN 'FV_XLA_PO_REF_V' 
47381                 WHEN 31 THEN 'FV_XLA_PO_REF_V' 
47382                 
47383                ELSE null
47384               END                           object_name
47385             , CASE r
47386                 WHEN 1 THEN 'LINE' 
47387                 WHEN 2 THEN 'LINE' 
47388                 WHEN 3 THEN 'LINE' 
47389                 WHEN 4 THEN 'LINE' 
47390                 WHEN 5 THEN 'LINE' 
47391                 WHEN 6 THEN 'LINE' 
47392                 WHEN 7 THEN 'LINE' 
47393                 WHEN 8 THEN 'LINE' 
47394                 WHEN 9 THEN 'LINE' 
47395                 WHEN 10 THEN 'LINE' 
47396                 WHEN 11 THEN 'LINE' 
47397                 WHEN 12 THEN 'LINE' 
47398                 WHEN 13 THEN 'LINE' 
47399                 WHEN 14 THEN 'LINE' 
47400                 WHEN 15 THEN 'LINE' 
47401                 WHEN 16 THEN 'LINE' 
47402                 WHEN 17 THEN 'LINE' 
47403                 WHEN 18 THEN 'LINE' 
47404                 WHEN 19 THEN 'LINE' 
47405                 WHEN 20 THEN 'LINE' 
47406                 WHEN 21 THEN 'LINE' 
47407                 WHEN 22 THEN 'LINE' 
47408                 WHEN 23 THEN 'LINE' 
47409                 WHEN 24 THEN 'LINE' 
47410                 WHEN 25 THEN 'LINE' 
47411                 WHEN 26 THEN 'LINE' 
47412                 WHEN 27 THEN 'LINE' 
47413                 WHEN 28 THEN 'LINE' 
47414                 WHEN 29 THEN 'LINE' 
47415                 WHEN 30 THEN 'LINE' 
47416                 WHEN 31 THEN 'LINE' 
47417                 
47418                 ELSE null
47419               END                           object_type_code
47420             , CASE r
47421                 WHEN 1 THEN '201' 
47422                 WHEN 2 THEN '8901' 
47423                 WHEN 3 THEN '8901' 
47424                 WHEN 4 THEN '201' 
47425                 WHEN 5 THEN '8901' 
47426                 WHEN 6 THEN '8901' 
47427                 WHEN 7 THEN '201' 
47428                 WHEN 8 THEN '201' 
47429                 WHEN 9 THEN '201' 
47430                 WHEN 10 THEN '201' 
47431                 WHEN 11 THEN '201' 
47432                 WHEN 12 THEN '201' 
47433                 WHEN 13 THEN '201' 
47434                 WHEN 14 THEN '201' 
47435                 WHEN 15 THEN '201' 
47436                 WHEN 16 THEN '201' 
47437                 WHEN 17 THEN '201' 
47438                 WHEN 18 THEN '201' 
47439                 WHEN 19 THEN '201' 
47440                 WHEN 20 THEN '201' 
47441                 WHEN 21 THEN '8901' 
47442                 WHEN 22 THEN '201' 
47443                 WHEN 23 THEN '201' 
47444                 WHEN 24 THEN '201' 
47445                 WHEN 25 THEN '201' 
47446                 WHEN 26 THEN '201' 
47447                 WHEN 27 THEN '201' 
47448                 WHEN 28 THEN '201' 
47449                 WHEN 29 THEN '8901' 
47450                 WHEN 30 THEN '8901' 
47451                 WHEN 31 THEN '8901' 
47452                 
47453                 ELSE null
47454               END                           source_application_id
47455             , 'S'             source_type_code
47456             , CASE r
47457                 WHEN 1 THEN 'JE_LINE_DESCRIPTION' 
47458                 WHEN 2 THEN 'FEDERAL_FUND_CATEGORY' 
47459                 WHEN 3 THEN 'FEDERAL_FUND_EXPIRED_STATUS' 
47460                 WHEN 4 THEN 'BUDGET_ACCOUNT' 
47461                 WHEN 5 THEN 'FEDERAL_PRIOR_YEAR_FLAG' 
47462                 WHEN 6 THEN 'FEDERAL_NET_PYA_ADJ_AMT' 
47463                 WHEN 7 THEN 'MAIN_OR_BACKING_CODE' 
47464                 WHEN 8 THEN 'PO_DISTRIBUTION_TYPE' 
47465                 WHEN 9 THEN 'ACCOUNTING_REVERSAL_FLAG' 
47466                 WHEN 10 THEN 'DISTRIBUTION_LINK_TYPE' 
47467                 WHEN 11 THEN 'PO_DISTRIBUTION_ID' 
47468                 WHEN 12 THEN 'APPLIED_TO_APPL_ID' 
47469                 WHEN 13 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
47470                 WHEN 14 THEN 'APPLIED_TO_ENTITY_CODE' 
47471                 WHEN 15 THEN 'APPLIED_TO_DIST_ID_1' 
47472                 WHEN 16 THEN 'APPLIED_TO_HEADER_ID_1' 
47473                 WHEN 17 THEN 'ENTERED_AMT' 
47474                 WHEN 18 THEN 'CURRENCY_CODE' 
47475                 WHEN 19 THEN 'ACCOUNTED_AMT' 
47476                 WHEN 20 THEN 'PO_ENCUM_UPG_OPTION' 
47477                 WHEN 21 THEN 'FEDERAL_UNANTICIPATED_AMT' 
47478                 WHEN 22 THEN 'JFMIP_REFERENCE' 
47479                 WHEN 23 THEN 'PO_UPG_ENC_TYPE_ID' 
47480                 WHEN 24 THEN 'ALLOC_TO_DISTRIBUTION_TYPE' 
47481                 WHEN 25 THEN 'ALLOC_TO_DIST_ID_1' 
47482                 WHEN 26 THEN 'CURRENCY_CONVERSION_DATE' 
47483                 WHEN 27 THEN 'CURRENCY_CONVERSION_RATE' 
47484                 WHEN 28 THEN 'CURRENCY_CONVERSION_TYPE' 
47485                 WHEN 29 THEN 'FEDERAL_PYA_DIFF_AMT' 
47486                 WHEN 30 THEN 'FEDERAL_ANTICIPATED_AMT' 
47487                 WHEN 31 THEN 'FEDERAL_PYA_AMT' 
47488                 
47489                 ELSE null
47490               END                           source_code
47491             , CASE r
47492                 WHEN 1 THEN TO_CHAR(l3.JE_LINE_DESCRIPTION)
47493                 WHEN 2 THEN TO_CHAR(l1.FEDERAL_FUND_CATEGORY)
47494                 WHEN 3 THEN TO_CHAR(l1.FEDERAL_FUND_EXPIRED_STATUS)
47495                 WHEN 4 THEN TO_CHAR(l3.BUDGET_ACCOUNT)
47496                 WHEN 5 THEN TO_CHAR(l1.FEDERAL_PRIOR_YEAR_FLAG)
47497                 WHEN 6 THEN TO_CHAR(l1.FEDERAL_NET_PYA_ADJ_AMT)
47498                 WHEN 7 THEN TO_CHAR(l3.MAIN_OR_BACKING_CODE)
47499                 WHEN 8 THEN TO_CHAR(l3.PO_DISTRIBUTION_TYPE)
47500                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTING_REVERSAL_FLAG)
47501                 WHEN 10 THEN TO_CHAR(l3.DISTRIBUTION_LINK_TYPE)
47502                 WHEN 11 THEN TO_CHAR(l3.PO_DISTRIBUTION_ID)
47503                 WHEN 12 THEN TO_CHAR(l3.APPLIED_TO_APPL_ID)
47504                 WHEN 13 THEN TO_CHAR(l3.APPLIED_TO_DIST_LINK_TYPE)
47505                 WHEN 14 THEN TO_CHAR(l3.APPLIED_TO_ENTITY_CODE)
47506                 WHEN 15 THEN TO_CHAR(l3.APPLIED_TO_DIST_ID_1)
47507                 WHEN 16 THEN TO_CHAR(l3.APPLIED_TO_HEADER_ID_1)
47508                 WHEN 17 THEN TO_CHAR(l3.ENTERED_AMT)
47509                 WHEN 18 THEN TO_CHAR(l3.CURRENCY_CODE)
47510                 WHEN 19 THEN TO_CHAR(l3.ACCOUNTED_AMT)
47511                 WHEN 20 THEN TO_CHAR(l3.PO_ENCUM_UPG_OPTION)
47512                 WHEN 21 THEN TO_CHAR(l1.FEDERAL_UNANTICIPATED_AMT)
47513                 WHEN 22 THEN TO_CHAR(l3.JFMIP_REFERENCE)
47514                 WHEN 23 THEN TO_CHAR(l3.PO_UPG_ENC_TYPE_ID)
47515                 WHEN 24 THEN TO_CHAR(l3.ALLOC_TO_DISTRIBUTION_TYPE)
47516                 WHEN 25 THEN TO_CHAR(l3.ALLOC_TO_DIST_ID_1)
47517                 WHEN 26 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
47518                 WHEN 27 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
47519                 WHEN 28 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
47520                 WHEN 29 THEN TO_CHAR(l1.FEDERAL_PYA_DIFF_AMT)
47521                 WHEN 30 THEN TO_CHAR(l1.FEDERAL_ANTICIPATED_AMT)
47522                 WHEN 31 THEN TO_CHAR(l1.FEDERAL_PYA_AMT)
47523                 
47524                 ELSE null
47525               END                           source_value
47526             , null              source_meaning
47527          FROM  xla_events_gt     xet  
47528         , FV_XLA_PO_REF_V  l1
47529         , PO_DISTS_REF_V  l2
47530         , PO_EXTRACT_DETAIL_V  l3
47531             , (select rownum r from all_objects where rownum <= 31 and owner = p_apps_owner)
47532         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
47533           AND xet.event_class_code = C_EVENT_CLASS_CODE
47534             AND l3.event_id          = xet.event_id
47535  AND l1.federal_event_id  (+) = l3.event_id  and l1.federal_line_number  (+) = l3.line_number AND l3.po_distribution_id = l2.po_distribution_id  (+)  and l3.po_distribution_type = l2.po_distribution_type (+) 
47536 )
47537 ;
47538 --
47539 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
47540 
47541       trace
47542          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
47543          ,p_level    => C_LEVEL_STATEMENT
47544          ,p_module   => l_log_module);
47545 
47546 END IF;
47547 
47548 
47549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47550       trace
47551          (p_msg      => 'END of insert_sources_86'
47552          ,p_level    => C_LEVEL_PROCEDURE
47553          ,p_module   => l_log_module);
47554 END IF;
47555 EXCEPTION
47556   WHEN xla_exceptions_pkg.application_exception THEN
47557       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
47558             trace
47559                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
47560                ,p_level    => C_LEVEL_EXCEPTION
47561                ,p_module   => l_log_module);
47562       END IF;
47563       RAISE;
47564   WHEN OTHERS THEN
47565       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
47566             trace
47567                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
47568                ,p_level    => C_LEVEL_EXCEPTION
47569                ,p_module   => l_log_module);
47570        END IF;
47571        xla_exceptions_pkg.raise_message
47572            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.insert_sources_86');
47573 END insert_sources_86;
47574 --
47575 
47576 ---------------------------------------
47577 --
47578 -- PRIVATE FUNCTION
47579 --         EventClass_86
47580 --
47581 ----------------------------------------
47582 --
47583 FUNCTION EventClass_86
47584        (p_application_id         IN NUMBER
47585        ,p_base_ledger_id         IN NUMBER
47586        ,p_target_ledger_id       IN NUMBER
47587        ,p_language               IN VARCHAR2
47588        ,p_currency_code          IN VARCHAR2
47589        ,p_sla_ledger_id          IN NUMBER
47590        ,p_pad_start_date         IN DATE
47591        ,p_pad_end_date           IN DATE
47592        ,p_primary_ledger_id      IN NUMBER)
47593 RETURN BOOLEAN IS
47594 --
47595 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_PA_ALL';
47596 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PO_PA';
47597 
47598 l_calculate_acctd_flag   VARCHAR2(1) :='N';
47599 l_calculate_g_l_flag     VARCHAR2(1) :='N';
47600 --
47601 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47602 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47603 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
47604 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
47605 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47606 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
47607 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
47608 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47609 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
47610 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
47611 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47612 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47613 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47614 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
47615 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
47616 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
47617 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
47618 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
47619 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
47620 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
47621 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
47622 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
47623 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
47624 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
47625 
47626 l_event_id                             NUMBER;
47627 l_previous_event_id                    NUMBER;
47628 l_first_event_id                       NUMBER;
47629 l_last_event_id                        NUMBER;
47630 
47631 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
47632 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
47633 --
47634 --
47635 l_result                    BOOLEAN := TRUE;
47636 l_rows                      NUMBER  := 1000;
47637 l_event_type_name           VARCHAR2(80) := 'All';
47638 l_event_class_name          VARCHAR2(80) := 'Purchase Order and Agreement';
47639 l_description               VARCHAR2(4000);
47640 l_transaction_reversal      NUMBER;
47641 l_ae_header_id              NUMBER;
47642 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
47643 l_log_module                VARCHAR2(240);
47644 --
47645 l_acct_reversal_source      VARCHAR2(30);
47646 l_trx_reversal_source       VARCHAR2(30);
47647 
47648 l_continue_with_lines       BOOLEAN := TRUE;
47649 --
47650 l_acc_rev_gl_date_source    DATE;                      -- 4262811
47651 --
47652 type t_array_event_id is table of number index by binary_integer;
47653 
47654 l_rec_array_event                    t_rec_array_event;
47655 l_null_rec_array_event               t_rec_array_event;
47656 l_array_ae_header_id                 xla_number_array_type;
47657 l_actual_flag                        VARCHAR2(1) := NULL;
47658 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
47659 l_balance_type_code                  VARCHAR2(1) :=NULL;
47660 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
47661 
47662 --
47663 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
47664 --
47665 
47666 TYPE t_array_source_1 IS TABLE OF PO_EXTRACT_HEADER_V.PO_TYPE%TYPE INDEX BY BINARY_INTEGER;
47667 TYPE t_array_source_2 IS TABLE OF PO_EXTRACT_HEADER_V.PO_NUMBER%TYPE INDEX BY BINARY_INTEGER;
47668 TYPE t_array_source_20 IS TABLE OF PO_EXTRACT_HEADER_V.PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
47669 TYPE t_array_source_48 IS TABLE OF PO_EXTRACT_HEADER_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
47670 TYPE t_array_source_49 IS TABLE OF PO_EXTRACT_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
47671 
47672 TYPE t_array_source_3 IS TABLE OF PO_EXTRACT_DETAIL_V.JE_LINE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
47673 TYPE t_array_source_7 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_FUND_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
47674 TYPE t_array_source_8 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_FUND_EXPIRED_STATUS%TYPE INDEX BY BINARY_INTEGER;
47675 TYPE t_array_source_9 IS TABLE OF PO_EXTRACT_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
47676 TYPE t_array_source_10 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_PRIOR_YEAR_FLAG%TYPE INDEX BY BINARY_INTEGER;
47677 TYPE t_array_source_11 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_NET_PYA_ADJ_AMT%TYPE INDEX BY BINARY_INTEGER;
47678 TYPE t_array_source_13 IS TABLE OF PO_EXTRACT_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
47679 TYPE t_array_source_14 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
47680 TYPE t_array_source_15 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
47681 TYPE t_array_source_17 IS TABLE OF PO_EXTRACT_DETAIL_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
47682 TYPE t_array_source_19 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
47683 TYPE t_array_source_21 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
47684 TYPE t_array_source_22 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
47685 TYPE t_array_source_23 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
47686 TYPE t_array_source_24 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
47687 TYPE t_array_source_25 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_HEADER_ID_1%TYPE INDEX BY BINARY_INTEGER;
47688 TYPE t_array_source_26 IS TABLE OF PO_EXTRACT_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
47689 TYPE t_array_source_27 IS TABLE OF PO_EXTRACT_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
47690 TYPE t_array_source_28 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
47691 TYPE t_array_source_29 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
47692 TYPE t_array_source_30 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_UNANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
47693 TYPE t_array_source_31 IS TABLE OF PO_EXTRACT_DETAIL_V.JFMIP_REFERENCE%TYPE INDEX BY BINARY_INTEGER;
47694 TYPE t_array_source_32 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
47695 TYPE t_array_source_33 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
47696 TYPE t_array_source_34 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
47697 TYPE t_array_source_35 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
47698 TYPE t_array_source_36 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
47699 TYPE t_array_source_37 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
47700 TYPE t_array_source_38 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_PYA_DIFF_AMT%TYPE INDEX BY BINARY_INTEGER;
47701 TYPE t_array_source_39 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_ANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
47702 TYPE t_array_source_40 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_PYA_AMT%TYPE INDEX BY BINARY_INTEGER;
47703 
47704 l_array_source_1              t_array_source_1;
47705 l_array_source_2              t_array_source_2;
47706 l_array_source_20              t_array_source_20;
47707 l_array_source_48              t_array_source_48;
47708 l_array_source_49              t_array_source_49;
47709 
47710 l_array_source_3      t_array_source_3;
47711 l_array_source_7      t_array_source_7;
47712 l_array_source_8      t_array_source_8;
47713 l_array_source_9      t_array_source_9;
47714 l_array_source_10      t_array_source_10;
47715 l_array_source_11      t_array_source_11;
47716 l_array_source_13      t_array_source_13;
47717 l_array_source_14      t_array_source_14;
47718 l_array_source_15      t_array_source_15;
47719 l_array_source_17      t_array_source_17;
47720 l_array_source_19      t_array_source_19;
47721 l_array_source_21      t_array_source_21;
47722 l_array_source_22      t_array_source_22;
47723 l_array_source_23      t_array_source_23;
47724 l_array_source_24      t_array_source_24;
47725 l_array_source_25      t_array_source_25;
47726 l_array_source_26      t_array_source_26;
47727 l_array_source_27      t_array_source_27;
47728 l_array_source_28      t_array_source_28;
47729 l_array_source_29      t_array_source_29;
47730 l_array_source_30      t_array_source_30;
47731 l_array_source_31      t_array_source_31;
47732 l_array_source_32      t_array_source_32;
47733 l_array_source_33      t_array_source_33;
47734 l_array_source_34      t_array_source_34;
47735 l_array_source_35      t_array_source_35;
47736 l_array_source_36      t_array_source_36;
47737 l_array_source_37      t_array_source_37;
47738 l_array_source_38      t_array_source_38;
47739 l_array_source_39      t_array_source_39;
47740 l_array_source_40      t_array_source_40;
47741 
47742 --
47743 CURSOR header_cur
47744 IS
47745 SELECT /*+ leading(xet) cardinality(xet,1) */
47746 -- Event Class Code: PO_PA
47747     xet.entity_id
47748    ,xet.legal_entity_id
47749    ,xet.entity_code
47750    ,xet.transaction_number
47751    ,xet.event_id
47752    ,xet.event_class_code
47753    ,xet.event_type_code
47754    ,xet.event_number
47755    ,xet.event_date
47756    ,xet.transaction_date
47757    ,xet.reference_num_1
47758    ,xet.reference_num_2
47759    ,xet.reference_num_3
47760    ,xet.reference_num_4
47761    ,xet.reference_char_1
47762    ,xet.reference_char_2
47763    ,xet.reference_char_3
47764    ,xet.reference_char_4
47765    ,xet.reference_date_1
47766    ,xet.reference_date_2
47767    ,xet.reference_date_3
47768    ,xet.reference_date_4
47769    ,xet.event_created_by
47770    ,xet.budgetary_control_flag 
47771   , h4.PO_TYPE    source_1
47772   , h4.PO_NUMBER    source_2
47773   , h4.PO_HEADER_ID    source_20
47774   , h4.ENCUMBRANCE_TYPE_ID    source_48
47775   , h4.GL_DATE    source_49
47776   FROM xla_events_gt     xet 
47777   , PO_EXTRACT_HEADER_V  h4
47778  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
47779    and xet.event_class_code = C_EVENT_CLASS_CODE
47780    and xet.event_status_code <> 'N'  AND h4.event_id = xet.event_id
47781 
47782  ORDER BY event_id
47783 ;
47784 
47785 
47786 --
47787 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
47788 IS
47789 SELECT  /*+ leading(xet) cardinality(xet,1) */
47790 -- Event Class Code: PO_PA
47791     xet.entity_id
47792    ,xet.legal_entity_id
47793    ,xet.entity_code
47794    ,xet.transaction_number
47795    ,xet.event_id
47796    ,xet.event_class_code
47797    ,xet.event_type_code
47798    ,xet.event_number
47799    ,xet.event_date
47800    ,xet.transaction_date
47801    ,xet.reference_num_1
47802    ,xet.reference_num_2
47803    ,xet.reference_num_3
47804    ,xet.reference_num_4
47805    ,xet.reference_char_1
47806    ,xet.reference_char_2
47807    ,xet.reference_char_3
47808    ,xet.reference_char_4
47809    ,xet.reference_date_1
47810    ,xet.reference_date_2
47811    ,xet.reference_date_3
47812    ,xet.reference_date_4
47813    ,xet.event_created_by
47814    ,xet.budgetary_control_flag
47815  , l3.LINE_NUMBER  
47816   , l3.JE_LINE_DESCRIPTION    source_3
47817   , l1.FEDERAL_FUND_CATEGORY    source_7
47818   , l1.FEDERAL_FUND_EXPIRED_STATUS    source_8
47819   , l3.BUDGET_ACCOUNT    source_9
47820   , l1.FEDERAL_PRIOR_YEAR_FLAG    source_10
47821   , l1.FEDERAL_NET_PYA_ADJ_AMT    source_11
47822   , l3.MAIN_OR_BACKING_CODE    source_13
47823   , l3.PO_DISTRIBUTION_TYPE    source_14
47824   , l3.ACCOUNTING_REVERSAL_FLAG    source_15
47825   , l3.DISTRIBUTION_LINK_TYPE    source_17
47826   , l3.PO_DISTRIBUTION_ID    source_19
47827   , l3.APPLIED_TO_APPL_ID    source_21
47828   , l3.APPLIED_TO_DIST_LINK_TYPE    source_22
47829   , l3.APPLIED_TO_ENTITY_CODE    source_23
47830   , l3.APPLIED_TO_DIST_ID_1    source_24
47831   , l3.APPLIED_TO_HEADER_ID_1    source_25
47832   , l3.ENTERED_AMT    source_26
47833   , l3.CURRENCY_CODE    source_27
47834   , l3.ACCOUNTED_AMT    source_28
47835   , l3.PO_ENCUM_UPG_OPTION    source_29
47836   , l1.FEDERAL_UNANTICIPATED_AMT    source_30
47837   , l3.JFMIP_REFERENCE    source_31
47838   , l3.PO_UPG_ENC_TYPE_ID    source_32
47839   , l3.ALLOC_TO_DISTRIBUTION_TYPE    source_33
47840   , l3.ALLOC_TO_DIST_ID_1    source_34
47841   , l2.CURRENCY_CONVERSION_DATE    source_35
47842   , l2.CURRENCY_CONVERSION_RATE    source_36
47843   , l2.CURRENCY_CONVERSION_TYPE    source_37
47844   , l1.FEDERAL_PYA_DIFF_AMT    source_38
47845   , l1.FEDERAL_ANTICIPATED_AMT    source_39
47846   , l1.FEDERAL_PYA_AMT    source_40
47847   FROM xla_events_gt     xet 
47848   , FV_XLA_PO_REF_V  l1
47849   , PO_DISTS_REF_V  l2
47850   , PO_EXTRACT_DETAIL_V  l3
47851  WHERE xet.event_id between x_first_event_id and x_last_event_id
47852    and xet.event_date between p_pad_start_date and p_pad_end_date
47853    and xet.event_class_code = C_EVENT_CLASS_CODE
47854    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
47855  AND l1.Federal_event_id  (+) = l3.event_id  AND l1.Federal_Line_Number  (+) = l3.Line_Number AND l3.po_distribution_id = l2.po_distribution_id  (+)  AND l3.po_distribution_type = l2.po_distribution_type (+) ;
47856 
47857 --
47858 BEGIN
47859 IF g_log_enabled THEN
47860    l_log_module := C_DEFAULT_MODULE||'.EventClass_86';
47861 END IF;
47862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47863    trace
47864       (p_msg      => 'BEGIN of EventClass_86'
47865       ,p_level    => C_LEVEL_PROCEDURE
47866       ,p_module   => l_log_module);
47867 END IF;
47868 
47869 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
47870    trace
47871       (p_msg      => 'p_application_id = '||p_application_id||
47872                      ' - p_base_ledger_id = '||p_base_ledger_id||
47873                      ' - p_target_ledger_id  = '||p_target_ledger_id||
47874                      ' - p_language = '||p_language||
47875                      ' - p_currency_code = '||p_currency_code||
47876                      ' - p_sla_ledger_id = '||p_sla_ledger_id
47877       ,p_level    => C_LEVEL_STATEMENT
47878       ,p_module   => l_log_module);
47879 END IF;
47880 --
47881 -- initialze arrays
47882 --
47883 g_array_event.DELETE;
47884 l_rec_array_event := l_null_rec_array_event;
47885 --
47886 --------------------------------------
47887 -- 4262811 Initialze MPA Line Number
47888 --------------------------------------
47889 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
47890 
47891 --
47892 
47893 --
47894 OPEN header_cur;
47895 --
47896 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
47897    trace
47898    (p_msg      => 'SQL - FETCH header_cur'
47899    ,p_level    => C_LEVEL_STATEMENT
47900    ,p_module   => l_log_module);
47901 END IF;
47902 --
47903 LOOP
47904 FETCH header_cur BULK COLLECT INTO
47905         l_array_entity_id
47906       , l_array_legal_entity_id
47907       , l_array_entity_code
47908       , l_array_transaction_num
47909       , l_array_event_id
47910       , l_array_class_code
47911       , l_array_event_type
47912       , l_array_event_number
47913       , l_array_event_date
47914       , l_array_transaction_date
47915       , l_array_reference_num_1
47916       , l_array_reference_num_2
47917       , l_array_reference_num_3
47918       , l_array_reference_num_4
47919       , l_array_reference_char_1
47920       , l_array_reference_char_2
47921       , l_array_reference_char_3
47922       , l_array_reference_char_4
47923       , l_array_reference_date_1
47924       , l_array_reference_date_2
47925       , l_array_reference_date_3
47926       , l_array_reference_date_4
47927       , l_array_event_created_by
47928       , l_array_budgetary_control_flag 
47929       , l_array_source_1
47930       , l_array_source_2
47931       , l_array_source_20
47932       , l_array_source_48
47933       , l_array_source_49
47934       LIMIT l_rows;
47935 --
47936 IF (C_LEVEL_EVENT >= g_log_level) THEN
47937    trace
47938    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
47939    ,p_level    => C_LEVEL_EVENT
47940    ,p_module   => l_log_module);
47941 END IF;
47942 --
47943 EXIT WHEN l_array_entity_id.COUNT = 0;
47944 
47945 -- initialize arrays
47946 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
47947 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
47948 
47949 --
47950 -- Bug 4458708
47951 --
47952 XLA_AE_LINES_PKG.g_LineNumber := 0;
47953 
47954 
47955 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
47956 g_last_hdr_idx := l_array_event_id.LAST;
47957 --
47958 -- loop for the headers. Each iteration is for each header extract row
47959 -- fetched in header cursor
47960 --
47961 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
47962 
47963 --
47964 -- set event info as cache for other routines to refer event attributes
47965 --
47966 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
47967    (p_application_id           => p_application_id
47968    ,p_primary_ledger_id        => p_primary_ledger_id
47969    ,p_base_ledger_id           => p_base_ledger_id
47970    ,p_target_ledger_id         => p_target_ledger_id
47971    ,p_entity_id                => l_array_entity_id(hdr_idx)
47972    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
47973    ,p_entity_code              => l_array_entity_code(hdr_idx)
47974    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
47975    ,p_event_id                 => l_array_event_id(hdr_idx)
47976    ,p_event_class_code         => l_array_class_code(hdr_idx)
47977    ,p_event_type_code          => l_array_event_type(hdr_idx)
47978    ,p_event_number             => l_array_event_number(hdr_idx)
47979    ,p_event_date               => l_array_event_date(hdr_idx)
47980    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
47981    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
47982    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
47983    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
47984    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
47985    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
47986    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
47987    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
47988    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
47989    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
47990    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
47991    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
47992    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
47993    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
47994    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
47995 
47996 --
47997 -- set the status of entry to C_VALID (0)
47998 --
47999 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
48000 
48001 --
48002 -- initialize a row for ae header
48003 --
48004 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
48005 
48006 l_event_id := l_array_event_id(hdr_idx);
48007 
48008 --
48009 -- storing the hdr_idx for event. May be used by line cursor.
48010 --
48011 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
48012 
48013 --
48014 -- store sources from header extract. This can be improved to
48015 -- store only those sources from header extract that may be used in lines
48016 --
48017 
48018 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
48019 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
48020 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
48021 g_array_event(l_event_id).array_value_num('source_48') := l_array_source_48(hdr_idx);
48022 g_array_event(l_event_id).array_value_date('source_49') := l_array_source_49(hdr_idx);
48023 
48024 --
48025 -- initilaize the status of ae headers for diffrent balance types
48026 -- the status is initialised to C_NOT_CREATED (2)
48027 --
48028 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
48029 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
48030 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
48031 
48032 --
48033 -- call api to validate and store accounting attributes for header
48034 --
48035 
48036 ------------------------------------------------------------
48037 -- Accrual Reversal : to get date for Standard Source (NONE)
48038 ------------------------------------------------------------
48039 l_acc_rev_gl_date_source := NULL;
48040 
48041      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
48042       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_48');
48043      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
48044       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_49');
48045 
48046 
48047 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
48048 
48049 XLA_AE_HEADER_PKG.SetJeCategoryName;
48050 
48051 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
48052 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
48053 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
48054 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
48055 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
48056 
48057 
48058 --
48059 xla_ae_header_pkg.SetHdrDescription(
48060    p_description => Description_1 (
48061    p_application_id => p_application_id 
48062  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
48063  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
48064    )
48065 );
48066 --
48067 
48068 -- No header level analytical criteria
48069 
48070 --
48071 --accounting attribute enhancement, bug 3612931
48072 --
48073 l_trx_reversal_source := SUBSTR(NULL, 1,30);
48074 
48075 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
48076    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
48077 
48078    xla_accounting_err_pkg.build_message
48079       (p_appli_s_name            => 'XLA'
48080       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
48081       ,p_token_1                 => 'ACCT_ATTR_NAME'
48082       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
48083       ,p_token_2                 => 'PRODUCT_NAME'
48084       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
48085       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
48086       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
48087       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
48088 
48089 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
48090    --
48091    -- following sets the accounting attributes needed to reverse
48092    -- accounting for a distributeion
48093    --
48094    xla_ae_lines_pkg.SetTrxReversalAttrs
48095       (p_event_id              => l_event_id
48096       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
48097       ,p_trx_reversal_source   => l_trx_reversal_source);
48098 
48099 END IF;
48100 
48101 
48102 ----------------------------------------------------------------
48103 -- 4262811 -  update the header statuses to invalid in need be
48104 ----------------------------------------------------------------
48105 --
48106 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
48107 
48108 
48109   -----------------------------------------------
48110   -- No accrual reversal for the event class/type
48111   -----------------------------------------------
48112 ----------------------------------------------------------------
48113 
48114 --
48115 -- this ends the header loop iteration for one bulk fetch
48116 --
48117 END LOOP;
48118 
48119 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
48120 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
48121 
48122 --
48123 -- insert dummy rows into lines gt table that were created due to
48124 -- transaction reversals
48125 --
48126 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
48127    l_result := XLA_AE_LINES_PKG.InsertLines;
48128 END IF;
48129 
48130 --
48131 -- reset the temp_line_num for each set of events fetched from header
48132 -- cursor rather than doing it for each new event in line cursor
48133 -- Bug 3939231
48134 --
48135 xla_ae_lines_pkg.g_temp_line_num := 0;
48136 
48137 
48138 
48139 --
48140 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
48141 --
48142 --
48143 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
48144 
48145       trace
48146          (p_msg      => 'SQL - FETCH line_cur'
48147          ,p_level    => C_LEVEL_STATEMENT
48148          ,p_module   => l_log_module);
48149 
48150 END IF;
48151 --
48152 --
48153 LOOP
48154   --
48155   FETCH line_cur BULK COLLECT INTO
48156         l_array_entity_id
48157       , l_array_legal_entity_id
48158       , l_array_entity_code
48159       , l_array_transaction_num
48160       , l_array_event_id
48161       , l_array_class_code
48162       , l_array_event_type
48163       , l_array_event_number
48164       , l_array_event_date
48165       , l_array_transaction_date
48166       , l_array_reference_num_1
48167       , l_array_reference_num_2
48168       , l_array_reference_num_3
48169       , l_array_reference_num_4
48170       , l_array_reference_char_1
48171       , l_array_reference_char_2
48172       , l_array_reference_char_3
48173       , l_array_reference_char_4
48174       , l_array_reference_date_1
48175       , l_array_reference_date_2
48176       , l_array_reference_date_3
48177       , l_array_reference_date_4
48178       , l_array_event_created_by
48179       , l_array_budgetary_control_flag
48180       , l_array_extract_line_num 
48181       , l_array_source_3
48182       , l_array_source_7
48183       , l_array_source_8
48184       , l_array_source_9
48185       , l_array_source_10
48186       , l_array_source_11
48187       , l_array_source_13
48188       , l_array_source_14
48189       , l_array_source_15
48190       , l_array_source_17
48191       , l_array_source_19
48192       , l_array_source_21
48193       , l_array_source_22
48194       , l_array_source_23
48195       , l_array_source_24
48196       , l_array_source_25
48197       , l_array_source_26
48198       , l_array_source_27
48199       , l_array_source_28
48200       , l_array_source_29
48201       , l_array_source_30
48202       , l_array_source_31
48203       , l_array_source_32
48204       , l_array_source_33
48205       , l_array_source_34
48206       , l_array_source_35
48207       , l_array_source_36
48208       , l_array_source_37
48209       , l_array_source_38
48210       , l_array_source_39
48211       , l_array_source_40
48212       LIMIT l_rows;
48213 
48214   --
48215   IF (C_LEVEL_EVENT >= g_log_level) THEN
48216             trace
48217                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
48218                ,p_level    => C_LEVEL_EVENT
48219                ,p_module   => l_log_module);
48220   END IF;
48221   --
48222   EXIT WHEN l_array_entity_id.count = 0;
48223 
48224   XLA_AE_LINES_PKG.g_rec_lines := null;
48225 
48226 --
48227 -- Bug 4458708
48228 --
48229 XLA_AE_LINES_PKG.g_LineNumber := 0;
48230 --
48231 --
48232 
48233 FOR Idx IN 1..l_array_event_id.count LOOP
48234    --
48235    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
48236    --
48237    l_event_id := l_array_event_id(idx);  -- 5648433
48238 
48239    --
48240    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
48241    --
48242 
48243    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
48244              (g_array_event(l_event_id).array_value_num('header_index'))
48245          ,'N'
48246          ) <> 'Y'
48247    THEN
48248       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
48249          trace
48250             (p_msg      => 'Trancaction revesal option is not Y '
48251             ,p_level    => C_LEVEL_STATEMENT
48252             ,p_module   => l_log_module);
48253       END IF;
48254 
48255 --
48256 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
48257 --
48258 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
48259 --
48260 -- set event info as cache for other routines to refer event attributes
48261 --
48262 
48263 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
48264    l_previous_event_id := l_event_id;
48265 
48266    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
48267       (p_application_id           => p_application_id
48268       ,p_primary_ledger_id        => p_primary_ledger_id
48269       ,p_base_ledger_id           => p_base_ledger_id
48270       ,p_target_ledger_id         => p_target_ledger_id
48271       ,p_entity_id                => l_array_entity_id(Idx)
48272       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
48273       ,p_entity_code              => l_array_entity_code(Idx)
48274       ,p_transaction_num          => l_array_transaction_num(Idx)
48275       ,p_event_id                 => l_array_event_id(Idx)
48276       ,p_event_class_code         => l_array_class_code(Idx)
48277       ,p_event_type_code          => l_array_event_type(Idx)
48278       ,p_event_number             => l_array_event_number(Idx)
48279       ,p_event_date               => l_array_event_date(Idx)
48280       ,p_transaction_date         => l_array_transaction_date(Idx)
48281       ,p_reference_num_1          => l_array_reference_num_1(Idx)
48282       ,p_reference_num_2          => l_array_reference_num_2(Idx)
48283       ,p_reference_num_3          => l_array_reference_num_3(Idx)
48284       ,p_reference_num_4          => l_array_reference_num_4(Idx)
48285       ,p_reference_char_1         => l_array_reference_char_1(Idx)
48286       ,p_reference_char_2         => l_array_reference_char_2(Idx)
48287       ,p_reference_char_3         => l_array_reference_char_3(Idx)
48288       ,p_reference_char_4         => l_array_reference_char_4(Idx)
48289       ,p_reference_date_1         => l_array_reference_date_1(Idx)
48290       ,p_reference_date_2         => l_array_reference_date_2(Idx)
48291       ,p_reference_date_3         => l_array_reference_date_3(Idx)
48292       ,p_reference_date_4         => l_array_reference_date_4(Idx)
48293       ,p_event_created_by         => l_array_event_created_by(Idx)
48294       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
48295        --
48296 END IF;
48297 
48298 
48299 
48300 --
48301 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
48302 
48303 l_acct_reversal_source := SUBSTR(l_array_source_15(Idx), 1,30);
48304 
48305 IF l_continue_with_lines THEN
48306    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
48307       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
48308 
48309       xla_accounting_err_pkg.build_message
48310          (p_appli_s_name            => 'XLA'
48311          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
48312          ,p_token_1                 => 'LINE_NUMBER'
48313          ,p_value_1                 => l_array_extract_line_num(Idx)
48314          ,p_token_2                 => 'PRODUCT_NAME'
48315          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
48316          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
48317          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
48318          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
48319 
48320    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
48321       --
48322       -- following sets the accounting attributes needed to reverse
48323       -- accounting for a distributeion
48324       --
48325 
48326       --
48327       -- 5217187
48328       --
48329       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
48330       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
48331                                        g_array_event(l_event_id).array_value_num('header_index'));
48332       --
48333       --
48334 
48335       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
48336       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_15(Idx);
48337       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
48338       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_19(Idx);
48339       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
48340       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_17(Idx);
48341       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
48342       l_rec_rev_acct_attrs.array_num_value(5)  := TO_NUMBER(l_array_source_9(Idx));
48343       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
48344       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_26(Idx);
48345       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
48346       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_27(Idx);
48347       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
48348       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_28(Idx);
48349       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
48350       l_rec_rev_acct_attrs.array_num_value(9)  := TO_NUMBER(l_array_source_9(Idx));
48351       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
48352       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_26(Idx);
48353       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
48354       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_27(Idx);
48355       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
48356       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_28(Idx);
48357       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
48358       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_29(Idx);
48359       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'REVERSED_DISTRIBUTION_ID1';
48360       l_rec_rev_acct_attrs.array_num_value(14)  := l_array_source_24(Idx);
48361       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_TYPE';
48362       l_rec_rev_acct_attrs.array_char_value(15)  := l_array_source_22(Idx);
48363       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'UPG_CR_ENC_TYPE_ID';
48364       l_rec_rev_acct_attrs.array_num_value(16)  := l_array_source_32(Idx);
48365       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'UPG_DR_ENC_TYPE_ID';
48366       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_32(Idx);
48367 
48368 
48369       xla_ae_lines_pkg.SetAcctReversalAttrs
48370          (p_event_id             => l_event_id
48371          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
48372          ,p_calculate_acctd_flag => l_calculate_acctd_flag
48373          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
48374    END IF;
48375 
48376    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
48377        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
48378 
48379 --
48380 AcctLineType_14 (
48381  p_application_id  => p_application_id
48382  ,p_event_id     => l_event_id
48383  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48384  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48385  ,p_actual_flag => l_actual_flag
48386  ,p_balance_type_code => l_balance_type_code
48387  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48388  
48389  , p_source_9 => l_array_source_9(Idx)
48390  , p_source_10 => l_array_source_10(Idx)
48391  , p_source_13 => l_array_source_13(Idx)
48392  , p_source_14 => l_array_source_14(Idx)
48393  , p_source_15 => l_array_source_15(Idx)
48394  , p_source_17 => l_array_source_17(Idx)
48395  , p_source_19 => l_array_source_19(Idx)
48396  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48397  , p_source_21 => l_array_source_21(Idx)
48398  , p_source_22 => l_array_source_22(Idx)
48399  , p_source_23 => l_array_source_23(Idx)
48400  , p_source_24 => l_array_source_24(Idx)
48401  , p_source_25 => l_array_source_25(Idx)
48402  , p_source_26 => l_array_source_26(Idx)
48403  , p_source_27 => l_array_source_27(Idx)
48404  , p_source_28 => l_array_source_28(Idx)
48405  , p_source_29 => l_array_source_29(Idx)
48406  , p_source_30 => l_array_source_30(Idx)
48407  , p_source_31 => l_array_source_31(Idx)
48408  , p_source_32 => l_array_source_32(Idx)
48409  );
48410 If(l_balance_type_code = 'A') THEN
48411   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48412 END IF;
48413 
48414 --
48415 
48416 
48417 --
48418 AcctLineType_15 (
48419  p_application_id  => p_application_id
48420  ,p_event_id     => l_event_id
48421  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48422  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48423  ,p_actual_flag => l_actual_flag
48424  ,p_balance_type_code => l_balance_type_code
48425  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48426  
48427  , p_source_9 => l_array_source_9(Idx)
48428  , p_source_10 => l_array_source_10(Idx)
48429  , p_source_13 => l_array_source_13(Idx)
48430  , p_source_14 => l_array_source_14(Idx)
48431  , p_source_15 => l_array_source_15(Idx)
48432  , p_source_17 => l_array_source_17(Idx)
48433  , p_source_19 => l_array_source_19(Idx)
48434  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48435  , p_source_21 => l_array_source_21(Idx)
48436  , p_source_22 => l_array_source_22(Idx)
48437  , p_source_23 => l_array_source_23(Idx)
48438  , p_source_24 => l_array_source_24(Idx)
48439  , p_source_25 => l_array_source_25(Idx)
48440  , p_source_26 => l_array_source_26(Idx)
48441  , p_source_27 => l_array_source_27(Idx)
48442  , p_source_28 => l_array_source_28(Idx)
48443  , p_source_29 => l_array_source_29(Idx)
48444  , p_source_31 => l_array_source_31(Idx)
48445  , p_source_32 => l_array_source_32(Idx)
48446  );
48447 If(l_balance_type_code = 'A') THEN
48448   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48449 END IF;
48450 
48451 --
48452 
48453 
48454 --
48455 AcctLineType_16 (
48456  p_application_id  => p_application_id
48457  ,p_event_id     => l_event_id
48458  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48459  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48460  ,p_actual_flag => l_actual_flag
48461  ,p_balance_type_code => l_balance_type_code
48462  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48463  
48464  , p_source_9 => l_array_source_9(Idx)
48465  , p_source_13 => l_array_source_13(Idx)
48466  , p_source_15 => l_array_source_15(Idx)
48467  , p_source_17 => l_array_source_17(Idx)
48468  , p_source_19 => l_array_source_19(Idx)
48469  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48470  , p_source_21 => l_array_source_21(Idx)
48471  , p_source_22 => l_array_source_22(Idx)
48472  , p_source_23 => l_array_source_23(Idx)
48473  , p_source_24 => l_array_source_24(Idx)
48474  , p_source_25 => l_array_source_25(Idx)
48475  , p_source_26 => l_array_source_26(Idx)
48476  , p_source_27 => l_array_source_27(Idx)
48477  , p_source_28 => l_array_source_28(Idx)
48478  , p_source_29 => l_array_source_29(Idx)
48479  , p_source_31 => l_array_source_31(Idx)
48480  , p_source_32 => l_array_source_32(Idx)
48481  , p_source_33 => l_array_source_33(Idx)
48482  , p_source_34 => l_array_source_34(Idx)
48483  );
48484 If(l_balance_type_code = 'A') THEN
48485   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48486 END IF;
48487 
48488 --
48489 
48490 
48491 --
48492 AcctLineType_17 (
48493  p_application_id  => p_application_id
48494  ,p_event_id     => l_event_id
48495  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48496  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48497  ,p_actual_flag => l_actual_flag
48498  ,p_balance_type_code => l_balance_type_code
48499  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48500  
48501  , p_source_9 => l_array_source_9(Idx)
48502  , p_source_13 => l_array_source_13(Idx)
48503  , p_source_15 => l_array_source_15(Idx)
48504  , p_source_17 => l_array_source_17(Idx)
48505  , p_source_19 => l_array_source_19(Idx)
48506  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48507  , p_source_21 => l_array_source_21(Idx)
48508  , p_source_22 => l_array_source_22(Idx)
48509  , p_source_23 => l_array_source_23(Idx)
48510  , p_source_24 => l_array_source_24(Idx)
48511  , p_source_25 => l_array_source_25(Idx)
48512  , p_source_26 => l_array_source_26(Idx)
48513  , p_source_27 => l_array_source_27(Idx)
48514  , p_source_28 => l_array_source_28(Idx)
48515  , p_source_29 => l_array_source_29(Idx)
48516  , p_source_31 => l_array_source_31(Idx)
48517  , p_source_32 => l_array_source_32(Idx)
48518  , p_source_33 => l_array_source_33(Idx)
48519  , p_source_34 => l_array_source_34(Idx)
48520  );
48521 If(l_balance_type_code = 'A') THEN
48522   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48523 END IF;
48524 
48525 --
48526 
48527 
48528 --
48529 AcctLineType_18 (
48530  p_application_id  => p_application_id
48531  ,p_event_id     => l_event_id
48532  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48533  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48534  ,p_actual_flag => l_actual_flag
48535  ,p_balance_type_code => l_balance_type_code
48536  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48537  
48538  , p_source_3 => l_array_source_3(Idx)
48539  , p_source_7 => l_array_source_7(Idx)
48540  , p_source_9 => l_array_source_9(Idx)
48541  , p_source_10 => l_array_source_10(Idx)
48542  , p_source_13 => l_array_source_13(Idx)
48543  , p_source_14 => l_array_source_14(Idx)
48544  , p_source_15 => l_array_source_15(Idx)
48545  , p_source_17 => l_array_source_17(Idx)
48546  , p_source_19 => l_array_source_19(Idx)
48547  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48548  , p_source_21 => l_array_source_21(Idx)
48549  , p_source_22 => l_array_source_22(Idx)
48550  , p_source_23 => l_array_source_23(Idx)
48551  , p_source_24 => l_array_source_24(Idx)
48552  , p_source_25 => l_array_source_25(Idx)
48553  , p_source_26 => l_array_source_26(Idx)
48554  , p_source_27 => l_array_source_27(Idx)
48555  , p_source_28 => l_array_source_28(Idx)
48556  , p_source_29 => l_array_source_29(Idx)
48557  , p_source_31 => l_array_source_31(Idx)
48558  , p_source_32 => l_array_source_32(Idx)
48559  , p_source_35 => l_array_source_35(Idx)
48560  , p_source_36 => l_array_source_36(Idx)
48561  , p_source_37 => l_array_source_37(Idx)
48562  );
48563 If(l_balance_type_code = 'A') THEN
48564   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48565 END IF;
48566 
48567 --
48568 
48569 
48570 --
48571 AcctLineType_19 (
48572  p_application_id  => p_application_id
48573  ,p_event_id     => l_event_id
48574  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48575  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48576  ,p_actual_flag => l_actual_flag
48577  ,p_balance_type_code => l_balance_type_code
48578  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48579  
48580  , p_source_3 => l_array_source_3(Idx)
48581  , p_source_7 => l_array_source_7(Idx)
48582  , p_source_8 => l_array_source_8(Idx)
48583  , p_source_9 => l_array_source_9(Idx)
48584  , p_source_10 => l_array_source_10(Idx)
48585  , p_source_13 => l_array_source_13(Idx)
48586  , p_source_14 => l_array_source_14(Idx)
48587  , p_source_15 => l_array_source_15(Idx)
48588  , p_source_17 => l_array_source_17(Idx)
48589  , p_source_19 => l_array_source_19(Idx)
48590  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48591  , p_source_21 => l_array_source_21(Idx)
48592  , p_source_22 => l_array_source_22(Idx)
48593  , p_source_23 => l_array_source_23(Idx)
48594  , p_source_24 => l_array_source_24(Idx)
48595  , p_source_25 => l_array_source_25(Idx)
48596  , p_source_26 => l_array_source_26(Idx)
48597  , p_source_27 => l_array_source_27(Idx)
48598  , p_source_28 => l_array_source_28(Idx)
48599  , p_source_29 => l_array_source_29(Idx)
48600  , p_source_31 => l_array_source_31(Idx)
48601  , p_source_32 => l_array_source_32(Idx)
48602  , p_source_35 => l_array_source_35(Idx)
48603  , p_source_36 => l_array_source_36(Idx)
48604  , p_source_37 => l_array_source_37(Idx)
48605  );
48606 If(l_balance_type_code = 'A') THEN
48607   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48608 END IF;
48609 
48610 --
48611 
48612 
48613 --
48614 AcctLineType_20 (
48615  p_application_id  => p_application_id
48616  ,p_event_id     => l_event_id
48617  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48618  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48619  ,p_actual_flag => l_actual_flag
48620  ,p_balance_type_code => l_balance_type_code
48621  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48622  
48623  , p_source_3 => l_array_source_3(Idx)
48624  , p_source_7 => l_array_source_7(Idx)
48625  , p_source_8 => l_array_source_8(Idx)
48626  , p_source_9 => l_array_source_9(Idx)
48627  , p_source_10 => l_array_source_10(Idx)
48628  , p_source_13 => l_array_source_13(Idx)
48629  , p_source_14 => l_array_source_14(Idx)
48630  , p_source_15 => l_array_source_15(Idx)
48631  , p_source_17 => l_array_source_17(Idx)
48632  , p_source_19 => l_array_source_19(Idx)
48633  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48634  , p_source_21 => l_array_source_21(Idx)
48635  , p_source_22 => l_array_source_22(Idx)
48636  , p_source_23 => l_array_source_23(Idx)
48637  , p_source_24 => l_array_source_24(Idx)
48638  , p_source_25 => l_array_source_25(Idx)
48639  , p_source_26 => l_array_source_26(Idx)
48640  , p_source_27 => l_array_source_27(Idx)
48641  , p_source_28 => l_array_source_28(Idx)
48642  , p_source_29 => l_array_source_29(Idx)
48643  , p_source_31 => l_array_source_31(Idx)
48644  , p_source_32 => l_array_source_32(Idx)
48645  , p_source_35 => l_array_source_35(Idx)
48646  , p_source_36 => l_array_source_36(Idx)
48647  , p_source_37 => l_array_source_37(Idx)
48648  );
48649 If(l_balance_type_code = 'A') THEN
48650   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48651 END IF;
48652 
48653 --
48654 
48655 
48656 --
48657 AcctLineType_21 (
48658  p_application_id  => p_application_id
48659  ,p_event_id     => l_event_id
48660  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48661  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48662  ,p_actual_flag => l_actual_flag
48663  ,p_balance_type_code => l_balance_type_code
48664  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48665  
48666  , p_source_3 => l_array_source_3(Idx)
48667  , p_source_7 => l_array_source_7(Idx)
48668  , p_source_9 => l_array_source_9(Idx)
48669  , p_source_10 => l_array_source_10(Idx)
48670  , p_source_13 => l_array_source_13(Idx)
48671  , p_source_14 => l_array_source_14(Idx)
48672  , p_source_15 => l_array_source_15(Idx)
48673  , p_source_17 => l_array_source_17(Idx)
48674  , p_source_19 => l_array_source_19(Idx)
48675  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48676  , p_source_21 => l_array_source_21(Idx)
48677  , p_source_22 => l_array_source_22(Idx)
48678  , p_source_23 => l_array_source_23(Idx)
48679  , p_source_24 => l_array_source_24(Idx)
48680  , p_source_25 => l_array_source_25(Idx)
48681  , p_source_26 => l_array_source_26(Idx)
48682  , p_source_27 => l_array_source_27(Idx)
48683  , p_source_28 => l_array_source_28(Idx)
48684  , p_source_29 => l_array_source_29(Idx)
48685  , p_source_31 => l_array_source_31(Idx)
48686  , p_source_32 => l_array_source_32(Idx)
48687  , p_source_35 => l_array_source_35(Idx)
48688  , p_source_36 => l_array_source_36(Idx)
48689  , p_source_37 => l_array_source_37(Idx)
48690  );
48691 If(l_balance_type_code = 'A') THEN
48692   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48693 END IF;
48694 
48695 --
48696 
48697 
48698 --
48699 AcctLineType_22 (
48700  p_application_id  => p_application_id
48701  ,p_event_id     => l_event_id
48702  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48703  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48704  ,p_actual_flag => l_actual_flag
48705  ,p_balance_type_code => l_balance_type_code
48706  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48707  
48708  , p_source_3 => l_array_source_3(Idx)
48709  , p_source_9 => l_array_source_9(Idx)
48710  , p_source_10 => l_array_source_10(Idx)
48711  , p_source_13 => l_array_source_13(Idx)
48712  , p_source_14 => l_array_source_14(Idx)
48713  , p_source_15 => l_array_source_15(Idx)
48714  , p_source_17 => l_array_source_17(Idx)
48715  , p_source_19 => l_array_source_19(Idx)
48716  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48717  , p_source_21 => l_array_source_21(Idx)
48718  , p_source_22 => l_array_source_22(Idx)
48719  , p_source_23 => l_array_source_23(Idx)
48720  , p_source_24 => l_array_source_24(Idx)
48721  , p_source_25 => l_array_source_25(Idx)
48722  , p_source_26 => l_array_source_26(Idx)
48723  , p_source_27 => l_array_source_27(Idx)
48724  , p_source_28 => l_array_source_28(Idx)
48725  , p_source_29 => l_array_source_29(Idx)
48726  , p_source_31 => l_array_source_31(Idx)
48727  , p_source_32 => l_array_source_32(Idx)
48728  , p_source_35 => l_array_source_35(Idx)
48729  , p_source_36 => l_array_source_36(Idx)
48730  , p_source_37 => l_array_source_37(Idx)
48731  );
48732 If(l_balance_type_code = 'A') THEN
48733   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48734 END IF;
48735 
48736 --
48737 
48738 
48739 --
48740 AcctLineType_23 (
48741  p_application_id  => p_application_id
48742  ,p_event_id     => l_event_id
48743  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48744  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48745  ,p_actual_flag => l_actual_flag
48746  ,p_balance_type_code => l_balance_type_code
48747  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48748  
48749  , p_source_3 => l_array_source_3(Idx)
48750  , p_source_7 => l_array_source_7(Idx)
48751  , p_source_8 => l_array_source_8(Idx)
48752  , p_source_9 => l_array_source_9(Idx)
48753  , p_source_10 => l_array_source_10(Idx)
48754  , p_source_13 => l_array_source_13(Idx)
48755  , p_source_14 => l_array_source_14(Idx)
48756  , p_source_15 => l_array_source_15(Idx)
48757  , p_source_17 => l_array_source_17(Idx)
48758  , p_source_19 => l_array_source_19(Idx)
48759  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48760  , p_source_21 => l_array_source_21(Idx)
48761  , p_source_22 => l_array_source_22(Idx)
48762  , p_source_23 => l_array_source_23(Idx)
48763  , p_source_24 => l_array_source_24(Idx)
48764  , p_source_25 => l_array_source_25(Idx)
48765  , p_source_26 => l_array_source_26(Idx)
48766  , p_source_27 => l_array_source_27(Idx)
48767  , p_source_28 => l_array_source_28(Idx)
48768  , p_source_29 => l_array_source_29(Idx)
48769  , p_source_31 => l_array_source_31(Idx)
48770  , p_source_32 => l_array_source_32(Idx)
48771  , p_source_35 => l_array_source_35(Idx)
48772  , p_source_36 => l_array_source_36(Idx)
48773  , p_source_37 => l_array_source_37(Idx)
48774  );
48775 If(l_balance_type_code = 'A') THEN
48776   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48777 END IF;
48778 
48779 --
48780 
48781 
48782 --
48783 AcctLineType_24 (
48784  p_application_id  => p_application_id
48785  ,p_event_id     => l_event_id
48786  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48787  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48788  ,p_actual_flag => l_actual_flag
48789  ,p_balance_type_code => l_balance_type_code
48790  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48791  
48792  , p_source_3 => l_array_source_3(Idx)
48793  , p_source_9 => l_array_source_9(Idx)
48794  , p_source_10 => l_array_source_10(Idx)
48795  , p_source_11 => l_array_source_11(Idx)
48796  , p_source_13 => l_array_source_13(Idx)
48797  , p_source_14 => l_array_source_14(Idx)
48798  , p_source_15 => l_array_source_15(Idx)
48799  , p_source_17 => l_array_source_17(Idx)
48800  , p_source_19 => l_array_source_19(Idx)
48801  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48802  , p_source_21 => l_array_source_21(Idx)
48803  , p_source_22 => l_array_source_22(Idx)
48804  , p_source_23 => l_array_source_23(Idx)
48805  , p_source_24 => l_array_source_24(Idx)
48806  , p_source_25 => l_array_source_25(Idx)
48807  , p_source_26 => l_array_source_26(Idx)
48808  , p_source_27 => l_array_source_27(Idx)
48809  , p_source_28 => l_array_source_28(Idx)
48810  , p_source_29 => l_array_source_29(Idx)
48811  , p_source_31 => l_array_source_31(Idx)
48812  , p_source_32 => l_array_source_32(Idx)
48813  , p_source_35 => l_array_source_35(Idx)
48814  , p_source_36 => l_array_source_36(Idx)
48815  , p_source_37 => l_array_source_37(Idx)
48816  , p_source_38 => l_array_source_38(Idx)
48817  );
48818 If(l_balance_type_code = 'A') THEN
48819   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48820 END IF;
48821 
48822 --
48823 
48824 
48825 --
48826 AcctLineType_25 (
48827  p_application_id  => p_application_id
48828  ,p_event_id     => l_event_id
48829  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48830  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48831  ,p_actual_flag => l_actual_flag
48832  ,p_balance_type_code => l_balance_type_code
48833  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48834  
48835  , p_source_3 => l_array_source_3(Idx)
48836  , p_source_7 => l_array_source_7(Idx)
48837  , p_source_8 => l_array_source_8(Idx)
48838  , p_source_9 => l_array_source_9(Idx)
48839  , p_source_10 => l_array_source_10(Idx)
48840  , p_source_11 => l_array_source_11(Idx)
48841  , p_source_13 => l_array_source_13(Idx)
48842  , p_source_14 => l_array_source_14(Idx)
48843  , p_source_15 => l_array_source_15(Idx)
48844  , p_source_17 => l_array_source_17(Idx)
48845  , p_source_19 => l_array_source_19(Idx)
48846  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48847  , p_source_21 => l_array_source_21(Idx)
48848  , p_source_22 => l_array_source_22(Idx)
48849  , p_source_23 => l_array_source_23(Idx)
48850  , p_source_24 => l_array_source_24(Idx)
48851  , p_source_25 => l_array_source_25(Idx)
48852  , p_source_26 => l_array_source_26(Idx)
48853  , p_source_27 => l_array_source_27(Idx)
48854  , p_source_28 => l_array_source_28(Idx)
48855  , p_source_29 => l_array_source_29(Idx)
48856  , p_source_31 => l_array_source_31(Idx)
48857  , p_source_32 => l_array_source_32(Idx)
48858  , p_source_35 => l_array_source_35(Idx)
48859  , p_source_36 => l_array_source_36(Idx)
48860  , p_source_37 => l_array_source_37(Idx)
48861  , p_source_38 => l_array_source_38(Idx)
48862  );
48863 If(l_balance_type_code = 'A') THEN
48864   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48865 END IF;
48866 
48867 --
48868 
48869 
48870 --
48871 AcctLineType_26 (
48872  p_application_id  => p_application_id
48873  ,p_event_id     => l_event_id
48874  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48875  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48876  ,p_actual_flag => l_actual_flag
48877  ,p_balance_type_code => l_balance_type_code
48878  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48879  
48880  , p_source_3 => l_array_source_3(Idx)
48881  , p_source_9 => l_array_source_9(Idx)
48882  , p_source_10 => l_array_source_10(Idx)
48883  , p_source_11 => l_array_source_11(Idx)
48884  , p_source_13 => l_array_source_13(Idx)
48885  , p_source_14 => l_array_source_14(Idx)
48886  , p_source_15 => l_array_source_15(Idx)
48887  , p_source_17 => l_array_source_17(Idx)
48888  , p_source_19 => l_array_source_19(Idx)
48889  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48890  , p_source_21 => l_array_source_21(Idx)
48891  , p_source_22 => l_array_source_22(Idx)
48892  , p_source_23 => l_array_source_23(Idx)
48893  , p_source_24 => l_array_source_24(Idx)
48894  , p_source_25 => l_array_source_25(Idx)
48895  , p_source_26 => l_array_source_26(Idx)
48896  , p_source_27 => l_array_source_27(Idx)
48897  , p_source_28 => l_array_source_28(Idx)
48898  , p_source_29 => l_array_source_29(Idx)
48899  , p_source_31 => l_array_source_31(Idx)
48900  , p_source_32 => l_array_source_32(Idx)
48901  , p_source_35 => l_array_source_35(Idx)
48902  , p_source_36 => l_array_source_36(Idx)
48903  , p_source_37 => l_array_source_37(Idx)
48904  , p_source_39 => l_array_source_39(Idx)
48905  );
48906 If(l_balance_type_code = 'A') THEN
48907   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48908 END IF;
48909 
48910 --
48911 
48912 
48913 --
48914 AcctLineType_27 (
48915  p_application_id  => p_application_id
48916  ,p_event_id     => l_event_id
48917  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48918  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48919  ,p_actual_flag => l_actual_flag
48920  ,p_balance_type_code => l_balance_type_code
48921  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48922  
48923  , p_source_3 => l_array_source_3(Idx)
48924  , p_source_8 => l_array_source_8(Idx)
48925  , p_source_9 => l_array_source_9(Idx)
48926  , p_source_10 => l_array_source_10(Idx)
48927  , p_source_11 => l_array_source_11(Idx)
48928  , p_source_13 => l_array_source_13(Idx)
48929  , p_source_14 => l_array_source_14(Idx)
48930  , p_source_15 => l_array_source_15(Idx)
48931  , p_source_17 => l_array_source_17(Idx)
48932  , p_source_19 => l_array_source_19(Idx)
48933  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48934  , p_source_21 => l_array_source_21(Idx)
48935  , p_source_22 => l_array_source_22(Idx)
48936  , p_source_23 => l_array_source_23(Idx)
48937  , p_source_24 => l_array_source_24(Idx)
48938  , p_source_25 => l_array_source_25(Idx)
48939  , p_source_26 => l_array_source_26(Idx)
48940  , p_source_27 => l_array_source_27(Idx)
48941  , p_source_28 => l_array_source_28(Idx)
48942  , p_source_29 => l_array_source_29(Idx)
48943  , p_source_30 => l_array_source_30(Idx)
48944  , p_source_31 => l_array_source_31(Idx)
48945  , p_source_32 => l_array_source_32(Idx)
48946  , p_source_35 => l_array_source_35(Idx)
48947  , p_source_36 => l_array_source_36(Idx)
48948  , p_source_37 => l_array_source_37(Idx)
48949  );
48950 If(l_balance_type_code = 'A') THEN
48951   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48952 END IF;
48953 
48954 --
48955 
48956 
48957 --
48958 AcctLineType_28 (
48959  p_application_id  => p_application_id
48960  ,p_event_id     => l_event_id
48961  ,p_calculate_acctd_flag => l_calculate_acctd_flag
48962  ,p_calculate_g_l_flag => l_calculate_g_l_flag
48963  ,p_actual_flag => l_actual_flag
48964  ,p_balance_type_code => l_balance_type_code
48965  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
48966  
48967  , p_source_3 => l_array_source_3(Idx)
48968  , p_source_8 => l_array_source_8(Idx)
48969  , p_source_9 => l_array_source_9(Idx)
48970  , p_source_10 => l_array_source_10(Idx)
48971  , p_source_13 => l_array_source_13(Idx)
48972  , p_source_14 => l_array_source_14(Idx)
48973  , p_source_15 => l_array_source_15(Idx)
48974  , p_source_17 => l_array_source_17(Idx)
48975  , p_source_19 => l_array_source_19(Idx)
48976  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
48977  , p_source_21 => l_array_source_21(Idx)
48978  , p_source_22 => l_array_source_22(Idx)
48979  , p_source_23 => l_array_source_23(Idx)
48980  , p_source_24 => l_array_source_24(Idx)
48981  , p_source_25 => l_array_source_25(Idx)
48982  , p_source_26 => l_array_source_26(Idx)
48983  , p_source_27 => l_array_source_27(Idx)
48984  , p_source_28 => l_array_source_28(Idx)
48985  , p_source_29 => l_array_source_29(Idx)
48986  , p_source_31 => l_array_source_31(Idx)
48987  , p_source_32 => l_array_source_32(Idx)
48988  , p_source_35 => l_array_source_35(Idx)
48989  , p_source_36 => l_array_source_36(Idx)
48990  , p_source_37 => l_array_source_37(Idx)
48991  );
48992 If(l_balance_type_code = 'A') THEN
48993   l_actual_gain_loss_ref := l_gain_or_loss_ref;
48994 END IF;
48995 
48996 --
48997 
48998 
48999 --
49000 AcctLineType_29 (
49001  p_application_id  => p_application_id
49002  ,p_event_id     => l_event_id
49003  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49004  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49005  ,p_actual_flag => l_actual_flag
49006  ,p_balance_type_code => l_balance_type_code
49007  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49008  
49009  , p_source_3 => l_array_source_3(Idx)
49010  , p_source_9 => l_array_source_9(Idx)
49011  , p_source_10 => l_array_source_10(Idx)
49012  , p_source_13 => l_array_source_13(Idx)
49013  , p_source_14 => l_array_source_14(Idx)
49014  , p_source_15 => l_array_source_15(Idx)
49015  , p_source_17 => l_array_source_17(Idx)
49016  , p_source_19 => l_array_source_19(Idx)
49017  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49018  , p_source_21 => l_array_source_21(Idx)
49019  , p_source_22 => l_array_source_22(Idx)
49020  , p_source_23 => l_array_source_23(Idx)
49021  , p_source_24 => l_array_source_24(Idx)
49022  , p_source_25 => l_array_source_25(Idx)
49023  , p_source_26 => l_array_source_26(Idx)
49024  , p_source_27 => l_array_source_27(Idx)
49025  , p_source_28 => l_array_source_28(Idx)
49026  , p_source_29 => l_array_source_29(Idx)
49027  , p_source_31 => l_array_source_31(Idx)
49028  , p_source_32 => l_array_source_32(Idx)
49029  , p_source_35 => l_array_source_35(Idx)
49030  , p_source_36 => l_array_source_36(Idx)
49031  , p_source_37 => l_array_source_37(Idx)
49032  );
49033 If(l_balance_type_code = 'A') THEN
49034   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49035 END IF;
49036 
49037 --
49038 
49039 
49040 --
49041 AcctLineType_30 (
49042  p_application_id  => p_application_id
49043  ,p_event_id     => l_event_id
49044  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49045  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49046  ,p_actual_flag => l_actual_flag
49047  ,p_balance_type_code => l_balance_type_code
49048  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49049  
49050  , p_source_3 => l_array_source_3(Idx)
49051  , p_source_9 => l_array_source_9(Idx)
49052  , p_source_10 => l_array_source_10(Idx)
49053  , p_source_13 => l_array_source_13(Idx)
49054  , p_source_14 => l_array_source_14(Idx)
49055  , p_source_15 => l_array_source_15(Idx)
49056  , p_source_17 => l_array_source_17(Idx)
49057  , p_source_19 => l_array_source_19(Idx)
49058  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49059  , p_source_21 => l_array_source_21(Idx)
49060  , p_source_22 => l_array_source_22(Idx)
49061  , p_source_23 => l_array_source_23(Idx)
49062  , p_source_24 => l_array_source_24(Idx)
49063  , p_source_25 => l_array_source_25(Idx)
49064  , p_source_26 => l_array_source_26(Idx)
49065  , p_source_27 => l_array_source_27(Idx)
49066  , p_source_28 => l_array_source_28(Idx)
49067  , p_source_29 => l_array_source_29(Idx)
49068  , p_source_31 => l_array_source_31(Idx)
49069  , p_source_32 => l_array_source_32(Idx)
49070  , p_source_35 => l_array_source_35(Idx)
49071  , p_source_36 => l_array_source_36(Idx)
49072  , p_source_37 => l_array_source_37(Idx)
49073  , p_source_40 => l_array_source_40(Idx)
49074  );
49075 If(l_balance_type_code = 'A') THEN
49076   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49077 END IF;
49078 
49079 --
49080 
49081 
49082 --
49083 AcctLineType_31 (
49084  p_application_id  => p_application_id
49085  ,p_event_id     => l_event_id
49086  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49087  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49088  ,p_actual_flag => l_actual_flag
49089  ,p_balance_type_code => l_balance_type_code
49090  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49091  
49092  , p_source_3 => l_array_source_3(Idx)
49093  , p_source_7 => l_array_source_7(Idx)
49094  , p_source_8 => l_array_source_8(Idx)
49095  , p_source_9 => l_array_source_9(Idx)
49096  , p_source_10 => l_array_source_10(Idx)
49097  , p_source_13 => l_array_source_13(Idx)
49098  , p_source_14 => l_array_source_14(Idx)
49099  , p_source_15 => l_array_source_15(Idx)
49100  , p_source_17 => l_array_source_17(Idx)
49101  , p_source_19 => l_array_source_19(Idx)
49102  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49103  , p_source_21 => l_array_source_21(Idx)
49104  , p_source_22 => l_array_source_22(Idx)
49105  , p_source_23 => l_array_source_23(Idx)
49106  , p_source_24 => l_array_source_24(Idx)
49107  , p_source_25 => l_array_source_25(Idx)
49108  , p_source_26 => l_array_source_26(Idx)
49109  , p_source_27 => l_array_source_27(Idx)
49110  , p_source_28 => l_array_source_28(Idx)
49111  , p_source_29 => l_array_source_29(Idx)
49112  , p_source_31 => l_array_source_31(Idx)
49113  , p_source_32 => l_array_source_32(Idx)
49114  , p_source_35 => l_array_source_35(Idx)
49115  , p_source_36 => l_array_source_36(Idx)
49116  , p_source_37 => l_array_source_37(Idx)
49117  , p_source_40 => l_array_source_40(Idx)
49118  );
49119 If(l_balance_type_code = 'A') THEN
49120   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49121 END IF;
49122 
49123 --
49124 
49125 
49126 --
49127 AcctLineType_32 (
49128  p_application_id  => p_application_id
49129  ,p_event_id     => l_event_id
49130  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49131  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49132  ,p_actual_flag => l_actual_flag
49133  ,p_balance_type_code => l_balance_type_code
49134  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49135  
49136  , p_source_3 => l_array_source_3(Idx)
49137  , p_source_8 => l_array_source_8(Idx)
49138  , p_source_9 => l_array_source_9(Idx)
49139  , p_source_10 => l_array_source_10(Idx)
49140  , p_source_13 => l_array_source_13(Idx)
49141  , p_source_14 => l_array_source_14(Idx)
49142  , p_source_15 => l_array_source_15(Idx)
49143  , p_source_17 => l_array_source_17(Idx)
49144  , p_source_19 => l_array_source_19(Idx)
49145  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49146  , p_source_21 => l_array_source_21(Idx)
49147  , p_source_22 => l_array_source_22(Idx)
49148  , p_source_23 => l_array_source_23(Idx)
49149  , p_source_24 => l_array_source_24(Idx)
49150  , p_source_25 => l_array_source_25(Idx)
49151  , p_source_26 => l_array_source_26(Idx)
49152  , p_source_27 => l_array_source_27(Idx)
49153  , p_source_28 => l_array_source_28(Idx)
49154  , p_source_29 => l_array_source_29(Idx)
49155  , p_source_31 => l_array_source_31(Idx)
49156  , p_source_32 => l_array_source_32(Idx)
49157  , p_source_35 => l_array_source_35(Idx)
49158  , p_source_36 => l_array_source_36(Idx)
49159  , p_source_37 => l_array_source_37(Idx)
49160  );
49161 If(l_balance_type_code = 'A') THEN
49162   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49163 END IF;
49164 
49165 --
49166 
49167 
49168 --
49169 AcctLineType_33 (
49170  p_application_id  => p_application_id
49171  ,p_event_id     => l_event_id
49172  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49173  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49174  ,p_actual_flag => l_actual_flag
49175  ,p_balance_type_code => l_balance_type_code
49176  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49177  
49178  , p_source_9 => l_array_source_9(Idx)
49179  , p_source_13 => l_array_source_13(Idx)
49180  , p_source_15 => l_array_source_15(Idx)
49181  , p_source_17 => l_array_source_17(Idx)
49182  , p_source_19 => l_array_source_19(Idx)
49183  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49184  , p_source_21 => l_array_source_21(Idx)
49185  , p_source_22 => l_array_source_22(Idx)
49186  , p_source_23 => l_array_source_23(Idx)
49187  , p_source_24 => l_array_source_24(Idx)
49188  , p_source_25 => l_array_source_25(Idx)
49189  , p_source_26 => l_array_source_26(Idx)
49190  , p_source_27 => l_array_source_27(Idx)
49191  , p_source_28 => l_array_source_28(Idx)
49192  , p_source_29 => l_array_source_29(Idx)
49193  , p_source_31 => l_array_source_31(Idx)
49194  , p_source_32 => l_array_source_32(Idx)
49195  , p_source_33 => l_array_source_33(Idx)
49196  , p_source_34 => l_array_source_34(Idx)
49197  );
49198 If(l_balance_type_code = 'A') THEN
49199   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49200 END IF;
49201 
49202 --
49203 
49204 
49205 --
49206 AcctLineType_34 (
49207  p_application_id  => p_application_id
49208  ,p_event_id     => l_event_id
49209  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49210  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49211  ,p_actual_flag => l_actual_flag
49212  ,p_balance_type_code => l_balance_type_code
49213  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49214  
49215  , p_source_9 => l_array_source_9(Idx)
49216  , p_source_13 => l_array_source_13(Idx)
49217  , p_source_15 => l_array_source_15(Idx)
49218  , p_source_17 => l_array_source_17(Idx)
49219  , p_source_19 => l_array_source_19(Idx)
49220  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49221  , p_source_21 => l_array_source_21(Idx)
49222  , p_source_22 => l_array_source_22(Idx)
49223  , p_source_23 => l_array_source_23(Idx)
49224  , p_source_24 => l_array_source_24(Idx)
49225  , p_source_25 => l_array_source_25(Idx)
49226  , p_source_26 => l_array_source_26(Idx)
49227  , p_source_27 => l_array_source_27(Idx)
49228  , p_source_28 => l_array_source_28(Idx)
49229  , p_source_29 => l_array_source_29(Idx)
49230  , p_source_31 => l_array_source_31(Idx)
49231  , p_source_32 => l_array_source_32(Idx)
49232  , p_source_33 => l_array_source_33(Idx)
49233  , p_source_34 => l_array_source_34(Idx)
49234  );
49235 If(l_balance_type_code = 'A') THEN
49236   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49237 END IF;
49238 
49239 --
49240 
49241 
49242 --
49243 AcctLineType_35 (
49244  p_application_id  => p_application_id
49245  ,p_event_id     => l_event_id
49246  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49247  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49248  ,p_actual_flag => l_actual_flag
49249  ,p_balance_type_code => l_balance_type_code
49250  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49251  
49252  , p_source_9 => l_array_source_9(Idx)
49253  , p_source_13 => l_array_source_13(Idx)
49254  , p_source_15 => l_array_source_15(Idx)
49255  , p_source_17 => l_array_source_17(Idx)
49256  , p_source_19 => l_array_source_19(Idx)
49257  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49258  , p_source_21 => l_array_source_21(Idx)
49259  , p_source_22 => l_array_source_22(Idx)
49260  , p_source_23 => l_array_source_23(Idx)
49261  , p_source_24 => l_array_source_24(Idx)
49262  , p_source_25 => l_array_source_25(Idx)
49263  , p_source_26 => l_array_source_26(Idx)
49264  , p_source_27 => l_array_source_27(Idx)
49265  , p_source_28 => l_array_source_28(Idx)
49266  , p_source_29 => l_array_source_29(Idx)
49267  , p_source_31 => l_array_source_31(Idx)
49268  , p_source_32 => l_array_source_32(Idx)
49269  , p_source_33 => l_array_source_33(Idx)
49270  , p_source_34 => l_array_source_34(Idx)
49271  );
49272 If(l_balance_type_code = 'A') THEN
49273   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49274 END IF;
49275 
49276 --
49277 
49278 
49279 --
49280 AcctLineType_36 (
49281  p_application_id  => p_application_id
49282  ,p_event_id     => l_event_id
49283  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49284  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49285  ,p_actual_flag => l_actual_flag
49286  ,p_balance_type_code => l_balance_type_code
49287  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49288  
49289  , p_source_9 => l_array_source_9(Idx)
49290  , p_source_13 => l_array_source_13(Idx)
49291  , p_source_15 => l_array_source_15(Idx)
49292  , p_source_17 => l_array_source_17(Idx)
49293  , p_source_19 => l_array_source_19(Idx)
49294  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49295  , p_source_21 => l_array_source_21(Idx)
49296  , p_source_22 => l_array_source_22(Idx)
49297  , p_source_23 => l_array_source_23(Idx)
49298  , p_source_24 => l_array_source_24(Idx)
49299  , p_source_25 => l_array_source_25(Idx)
49300  , p_source_26 => l_array_source_26(Idx)
49301  , p_source_27 => l_array_source_27(Idx)
49302  , p_source_28 => l_array_source_28(Idx)
49303  , p_source_29 => l_array_source_29(Idx)
49304  , p_source_31 => l_array_source_31(Idx)
49305  , p_source_32 => l_array_source_32(Idx)
49306  , p_source_33 => l_array_source_33(Idx)
49307  , p_source_34 => l_array_source_34(Idx)
49308  );
49309 If(l_balance_type_code = 'A') THEN
49310   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49311 END IF;
49312 
49313 --
49314 
49315 
49316 --
49317 AcctLineType_37 (
49318  p_application_id  => p_application_id
49319  ,p_event_id     => l_event_id
49320  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49321  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49322  ,p_actual_flag => l_actual_flag
49323  ,p_balance_type_code => l_balance_type_code
49324  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49325  
49326  , p_source_3 => l_array_source_3(Idx)
49327  , p_source_9 => l_array_source_9(Idx)
49328  , p_source_10 => l_array_source_10(Idx)
49329  , p_source_13 => l_array_source_13(Idx)
49330  , p_source_14 => l_array_source_14(Idx)
49331  , p_source_15 => l_array_source_15(Idx)
49332  , p_source_17 => l_array_source_17(Idx)
49333  , p_source_19 => l_array_source_19(Idx)
49334  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49335  , p_source_21 => l_array_source_21(Idx)
49336  , p_source_22 => l_array_source_22(Idx)
49337  , p_source_23 => l_array_source_23(Idx)
49338  , p_source_24 => l_array_source_24(Idx)
49339  , p_source_25 => l_array_source_25(Idx)
49340  , p_source_26 => l_array_source_26(Idx)
49341  , p_source_27 => l_array_source_27(Idx)
49342  , p_source_28 => l_array_source_28(Idx)
49343  , p_source_29 => l_array_source_29(Idx)
49344  , p_source_31 => l_array_source_31(Idx)
49345  , p_source_32 => l_array_source_32(Idx)
49346  , p_source_35 => l_array_source_35(Idx)
49347  , p_source_36 => l_array_source_36(Idx)
49348  , p_source_37 => l_array_source_37(Idx)
49349  );
49350 If(l_balance_type_code = 'A') THEN
49351   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49352 END IF;
49353 
49354 --
49355 
49356 
49357 --
49358 AcctLineType_38 (
49359  p_application_id  => p_application_id
49360  ,p_event_id     => l_event_id
49361  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49362  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49363  ,p_actual_flag => l_actual_flag
49364  ,p_balance_type_code => l_balance_type_code
49365  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49366  
49367  , p_source_3 => l_array_source_3(Idx)
49368  , p_source_7 => l_array_source_7(Idx)
49369  , p_source_8 => l_array_source_8(Idx)
49370  , p_source_9 => l_array_source_9(Idx)
49371  , p_source_10 => l_array_source_10(Idx)
49372  , p_source_13 => l_array_source_13(Idx)
49373  , p_source_14 => l_array_source_14(Idx)
49374  , p_source_15 => l_array_source_15(Idx)
49375  , p_source_17 => l_array_source_17(Idx)
49376  , p_source_19 => l_array_source_19(Idx)
49377  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49378  , p_source_21 => l_array_source_21(Idx)
49379  , p_source_22 => l_array_source_22(Idx)
49380  , p_source_23 => l_array_source_23(Idx)
49381  , p_source_24 => l_array_source_24(Idx)
49382  , p_source_25 => l_array_source_25(Idx)
49383  , p_source_26 => l_array_source_26(Idx)
49384  , p_source_27 => l_array_source_27(Idx)
49385  , p_source_28 => l_array_source_28(Idx)
49386  , p_source_29 => l_array_source_29(Idx)
49387  , p_source_31 => l_array_source_31(Idx)
49388  , p_source_32 => l_array_source_32(Idx)
49389  , p_source_35 => l_array_source_35(Idx)
49390  , p_source_36 => l_array_source_36(Idx)
49391  , p_source_37 => l_array_source_37(Idx)
49392  );
49393 If(l_balance_type_code = 'A') THEN
49394   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49395 END IF;
49396 
49397 --
49398 
49399 
49400 --
49401 AcctLineType_39 (
49402  p_application_id  => p_application_id
49403  ,p_event_id     => l_event_id
49404  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49405  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49406  ,p_actual_flag => l_actual_flag
49407  ,p_balance_type_code => l_balance_type_code
49408  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49409  
49410  , p_source_3 => l_array_source_3(Idx)
49411  , p_source_7 => l_array_source_7(Idx)
49412  , p_source_8 => l_array_source_8(Idx)
49413  , p_source_9 => l_array_source_9(Idx)
49414  , p_source_10 => l_array_source_10(Idx)
49415  , p_source_11 => l_array_source_11(Idx)
49416  , p_source_13 => l_array_source_13(Idx)
49417  , p_source_14 => l_array_source_14(Idx)
49418  , p_source_15 => l_array_source_15(Idx)
49419  , p_source_17 => l_array_source_17(Idx)
49420  , p_source_19 => l_array_source_19(Idx)
49421  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49422  , p_source_21 => l_array_source_21(Idx)
49423  , p_source_22 => l_array_source_22(Idx)
49424  , p_source_23 => l_array_source_23(Idx)
49425  , p_source_24 => l_array_source_24(Idx)
49426  , p_source_25 => l_array_source_25(Idx)
49427  , p_source_26 => l_array_source_26(Idx)
49428  , p_source_27 => l_array_source_27(Idx)
49429  , p_source_28 => l_array_source_28(Idx)
49430  , p_source_29 => l_array_source_29(Idx)
49431  , p_source_31 => l_array_source_31(Idx)
49432  , p_source_32 => l_array_source_32(Idx)
49433  , p_source_35 => l_array_source_35(Idx)
49434  , p_source_36 => l_array_source_36(Idx)
49435  , p_source_37 => l_array_source_37(Idx)
49436  );
49437 If(l_balance_type_code = 'A') THEN
49438   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49439 END IF;
49440 
49441 --
49442 
49443 
49444 --
49445 AcctLineType_40 (
49446  p_application_id  => p_application_id
49447  ,p_event_id     => l_event_id
49448  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49449  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49450  ,p_actual_flag => l_actual_flag
49451  ,p_balance_type_code => l_balance_type_code
49452  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49453  
49454  , p_source_7 => l_array_source_7(Idx)
49455  , p_source_8 => l_array_source_8(Idx)
49456  , p_source_9 => l_array_source_9(Idx)
49457  , p_source_10 => l_array_source_10(Idx)
49458  , p_source_13 => l_array_source_13(Idx)
49459  , p_source_14 => l_array_source_14(Idx)
49460  , p_source_15 => l_array_source_15(Idx)
49461  , p_source_17 => l_array_source_17(Idx)
49462  , p_source_19 => l_array_source_19(Idx)
49463  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49464  , p_source_21 => l_array_source_21(Idx)
49465  , p_source_22 => l_array_source_22(Idx)
49466  , p_source_23 => l_array_source_23(Idx)
49467  , p_source_24 => l_array_source_24(Idx)
49468  , p_source_25 => l_array_source_25(Idx)
49469  , p_source_26 => l_array_source_26(Idx)
49470  , p_source_27 => l_array_source_27(Idx)
49471  , p_source_28 => l_array_source_28(Idx)
49472  , p_source_29 => l_array_source_29(Idx)
49473  , p_source_31 => l_array_source_31(Idx)
49474  , p_source_32 => l_array_source_32(Idx)
49475  );
49476 If(l_balance_type_code = 'A') THEN
49477   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49478 END IF;
49479 
49480 --
49481 
49482 
49483 --
49484 AcctLineType_41 (
49485  p_application_id  => p_application_id
49486  ,p_event_id     => l_event_id
49487  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49488  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49489  ,p_actual_flag => l_actual_flag
49490  ,p_balance_type_code => l_balance_type_code
49491  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49492  
49493  , p_source_9 => l_array_source_9(Idx)
49494  , p_source_10 => l_array_source_10(Idx)
49495  , p_source_13 => l_array_source_13(Idx)
49496  , p_source_15 => l_array_source_15(Idx)
49497  , p_source_17 => l_array_source_17(Idx)
49498  , p_source_19 => l_array_source_19(Idx)
49499  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49500  , p_source_21 => l_array_source_21(Idx)
49501  , p_source_22 => l_array_source_22(Idx)
49502  , p_source_23 => l_array_source_23(Idx)
49503  , p_source_24 => l_array_source_24(Idx)
49504  , p_source_25 => l_array_source_25(Idx)
49505  , p_source_26 => l_array_source_26(Idx)
49506  , p_source_27 => l_array_source_27(Idx)
49507  , p_source_28 => l_array_source_28(Idx)
49508  , p_source_29 => l_array_source_29(Idx)
49509  , p_source_31 => l_array_source_31(Idx)
49510  , p_source_32 => l_array_source_32(Idx)
49511  );
49512 If(l_balance_type_code = 'A') THEN
49513   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49514 END IF;
49515 
49516 --
49517 
49518 
49519 --
49520 AcctLineType_42 (
49521  p_application_id  => p_application_id
49522  ,p_event_id     => l_event_id
49523  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49524  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49525  ,p_actual_flag => l_actual_flag
49526  ,p_balance_type_code => l_balance_type_code
49527  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49528  
49529  , p_source_9 => l_array_source_9(Idx)
49530  , p_source_13 => l_array_source_13(Idx)
49531  , p_source_15 => l_array_source_15(Idx)
49532  , p_source_17 => l_array_source_17(Idx)
49533  , p_source_19 => l_array_source_19(Idx)
49534  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49535  , p_source_21 => l_array_source_21(Idx)
49536  , p_source_22 => l_array_source_22(Idx)
49537  , p_source_23 => l_array_source_23(Idx)
49538  , p_source_24 => l_array_source_24(Idx)
49539  , p_source_25 => l_array_source_25(Idx)
49540  , p_source_26 => l_array_source_26(Idx)
49541  , p_source_27 => l_array_source_27(Idx)
49542  , p_source_28 => l_array_source_28(Idx)
49543  , p_source_29 => l_array_source_29(Idx)
49544  , p_source_31 => l_array_source_31(Idx)
49545  , p_source_32 => l_array_source_32(Idx)
49546  , p_source_33 => l_array_source_33(Idx)
49547  , p_source_34 => l_array_source_34(Idx)
49548  );
49549 If(l_balance_type_code = 'A') THEN
49550   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49551 END IF;
49552 
49553 --
49554 
49555 
49556 --
49557 AcctLineType_43 (
49558  p_application_id  => p_application_id
49559  ,p_event_id     => l_event_id
49560  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49561  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49562  ,p_actual_flag => l_actual_flag
49563  ,p_balance_type_code => l_balance_type_code
49564  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49565  
49566  , p_source_9 => l_array_source_9(Idx)
49567  , p_source_13 => l_array_source_13(Idx)
49568  , p_source_15 => l_array_source_15(Idx)
49569  , p_source_17 => l_array_source_17(Idx)
49570  , p_source_19 => l_array_source_19(Idx)
49571  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49572  , p_source_21 => l_array_source_21(Idx)
49573  , p_source_22 => l_array_source_22(Idx)
49574  , p_source_23 => l_array_source_23(Idx)
49575  , p_source_24 => l_array_source_24(Idx)
49576  , p_source_25 => l_array_source_25(Idx)
49577  , p_source_26 => l_array_source_26(Idx)
49578  , p_source_27 => l_array_source_27(Idx)
49579  , p_source_28 => l_array_source_28(Idx)
49580  , p_source_29 => l_array_source_29(Idx)
49581  , p_source_31 => l_array_source_31(Idx)
49582  , p_source_32 => l_array_source_32(Idx)
49583  , p_source_33 => l_array_source_33(Idx)
49584  , p_source_34 => l_array_source_34(Idx)
49585  );
49586 If(l_balance_type_code = 'A') THEN
49587   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49588 END IF;
49589 
49590 --
49591 
49592 
49593 --
49594 AcctLineType_44 (
49595  p_application_id  => p_application_id
49596  ,p_event_id     => l_event_id
49597  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49598  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49599  ,p_actual_flag => l_actual_flag
49600  ,p_balance_type_code => l_balance_type_code
49601  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49602  
49603  , p_source_3 => l_array_source_3(Idx)
49604  , p_source_7 => l_array_source_7(Idx)
49605  , p_source_9 => l_array_source_9(Idx)
49606  , p_source_13 => l_array_source_13(Idx)
49607  , p_source_15 => l_array_source_15(Idx)
49608  , p_source_17 => l_array_source_17(Idx)
49609  , p_source_19 => l_array_source_19(Idx)
49610  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49611  , p_source_21 => l_array_source_21(Idx)
49612  , p_source_22 => l_array_source_22(Idx)
49613  , p_source_23 => l_array_source_23(Idx)
49614  , p_source_24 => l_array_source_24(Idx)
49615  , p_source_25 => l_array_source_25(Idx)
49616  , p_source_26 => l_array_source_26(Idx)
49617  , p_source_27 => l_array_source_27(Idx)
49618  , p_source_28 => l_array_source_28(Idx)
49619  , p_source_29 => l_array_source_29(Idx)
49620  , p_source_31 => l_array_source_31(Idx)
49621  , p_source_32 => l_array_source_32(Idx)
49622  , p_source_33 => l_array_source_33(Idx)
49623  , p_source_34 => l_array_source_34(Idx)
49624  , p_source_35 => l_array_source_35(Idx)
49625  , p_source_36 => l_array_source_36(Idx)
49626  , p_source_37 => l_array_source_37(Idx)
49627  );
49628 If(l_balance_type_code = 'A') THEN
49629   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49630 END IF;
49631 
49632 --
49633 
49634 
49635 --
49636 AcctLineType_45 (
49637  p_application_id  => p_application_id
49638  ,p_event_id     => l_event_id
49639  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49640  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49641  ,p_actual_flag => l_actual_flag
49642  ,p_balance_type_code => l_balance_type_code
49643  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49644  
49645  , p_source_3 => l_array_source_3(Idx)
49646  , p_source_7 => l_array_source_7(Idx)
49647  , p_source_8 => l_array_source_8(Idx)
49648  , p_source_9 => l_array_source_9(Idx)
49649  , p_source_13 => l_array_source_13(Idx)
49650  , p_source_15 => l_array_source_15(Idx)
49651  , p_source_17 => l_array_source_17(Idx)
49652  , p_source_19 => l_array_source_19(Idx)
49653  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49654  , p_source_21 => l_array_source_21(Idx)
49655  , p_source_22 => l_array_source_22(Idx)
49656  , p_source_23 => l_array_source_23(Idx)
49657  , p_source_24 => l_array_source_24(Idx)
49658  , p_source_25 => l_array_source_25(Idx)
49659  , p_source_26 => l_array_source_26(Idx)
49660  , p_source_27 => l_array_source_27(Idx)
49661  , p_source_28 => l_array_source_28(Idx)
49662  , p_source_29 => l_array_source_29(Idx)
49663  , p_source_31 => l_array_source_31(Idx)
49664  , p_source_32 => l_array_source_32(Idx)
49665  , p_source_33 => l_array_source_33(Idx)
49666  , p_source_34 => l_array_source_34(Idx)
49667  , p_source_35 => l_array_source_35(Idx)
49668  , p_source_36 => l_array_source_36(Idx)
49669  , p_source_37 => l_array_source_37(Idx)
49670  );
49671 If(l_balance_type_code = 'A') THEN
49672   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49673 END IF;
49674 
49675 --
49676 
49677 
49678 --
49679 AcctLineType_76 (
49680  p_application_id  => p_application_id
49681  ,p_event_id     => l_event_id
49682  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49683  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49684  ,p_actual_flag => l_actual_flag
49685  ,p_balance_type_code => l_balance_type_code
49686  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49687  
49688  , p_source_3 => l_array_source_3(Idx)
49689  , p_source_7 => l_array_source_7(Idx)
49690  , p_source_8 => l_array_source_8(Idx)
49691  , p_source_9 => l_array_source_9(Idx)
49692  , p_source_13 => l_array_source_13(Idx)
49693  , p_source_15 => l_array_source_15(Idx)
49694  , p_source_17 => l_array_source_17(Idx)
49695  , p_source_19 => l_array_source_19(Idx)
49696  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49697  , p_source_21 => l_array_source_21(Idx)
49698  , p_source_22 => l_array_source_22(Idx)
49699  , p_source_23 => l_array_source_23(Idx)
49700  , p_source_24 => l_array_source_24(Idx)
49701  , p_source_25 => l_array_source_25(Idx)
49702  , p_source_26 => l_array_source_26(Idx)
49703  , p_source_27 => l_array_source_27(Idx)
49704  , p_source_28 => l_array_source_28(Idx)
49705  , p_source_29 => l_array_source_29(Idx)
49706  , p_source_32 => l_array_source_32(Idx)
49707  , p_source_35 => l_array_source_35(Idx)
49708  , p_source_36 => l_array_source_36(Idx)
49709  , p_source_37 => l_array_source_37(Idx)
49710  );
49711 If(l_balance_type_code = 'A') THEN
49712   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49713 END IF;
49714 
49715 --
49716 
49717 
49718 --
49719 AcctLineType_77 (
49720  p_application_id  => p_application_id
49721  ,p_event_id     => l_event_id
49722  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49723  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49724  ,p_actual_flag => l_actual_flag
49725  ,p_balance_type_code => l_balance_type_code
49726  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49727  
49728  , p_source_3 => l_array_source_3(Idx)
49729  , p_source_9 => l_array_source_9(Idx)
49730  , p_source_13 => l_array_source_13(Idx)
49731  , p_source_15 => l_array_source_15(Idx)
49732  , p_source_17 => l_array_source_17(Idx)
49733  , p_source_19 => l_array_source_19(Idx)
49734  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49735  , p_source_21 => l_array_source_21(Idx)
49736  , p_source_22 => l_array_source_22(Idx)
49737  , p_source_23 => l_array_source_23(Idx)
49738  , p_source_24 => l_array_source_24(Idx)
49739  , p_source_25 => l_array_source_25(Idx)
49740  , p_source_26 => l_array_source_26(Idx)
49741  , p_source_27 => l_array_source_27(Idx)
49742  , p_source_28 => l_array_source_28(Idx)
49743  , p_source_29 => l_array_source_29(Idx)
49744  , p_source_32 => l_array_source_32(Idx)
49745  , p_source_35 => l_array_source_35(Idx)
49746  , p_source_36 => l_array_source_36(Idx)
49747  , p_source_37 => l_array_source_37(Idx)
49748  );
49749 If(l_balance_type_code = 'A') THEN
49750   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49751 END IF;
49752 
49753 --
49754 
49755 
49756 --
49757 AcctLineType_80 (
49758  p_application_id  => p_application_id
49759  ,p_event_id     => l_event_id
49760  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49761  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49762  ,p_actual_flag => l_actual_flag
49763  ,p_balance_type_code => l_balance_type_code
49764  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49765  
49766  , p_source_9 => l_array_source_9(Idx)
49767  , p_source_13 => l_array_source_13(Idx)
49768  , p_source_15 => l_array_source_15(Idx)
49769  , p_source_17 => l_array_source_17(Idx)
49770  , p_source_19 => l_array_source_19(Idx)
49771  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49772  , p_source_21 => l_array_source_21(Idx)
49773  , p_source_22 => l_array_source_22(Idx)
49774  , p_source_23 => l_array_source_23(Idx)
49775  , p_source_24 => l_array_source_24(Idx)
49776  , p_source_25 => l_array_source_25(Idx)
49777  , p_source_26 => l_array_source_26(Idx)
49778  , p_source_27 => l_array_source_27(Idx)
49779  , p_source_28 => l_array_source_28(Idx)
49780  , p_source_29 => l_array_source_29(Idx)
49781  , p_source_31 => l_array_source_31(Idx)
49782  , p_source_32 => l_array_source_32(Idx)
49783  , p_source_33 => l_array_source_33(Idx)
49784  , p_source_34 => l_array_source_34(Idx)
49785  );
49786 If(l_balance_type_code = 'A') THEN
49787   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49788 END IF;
49789 
49790 --
49791 
49792 
49793 --
49794 AcctLineType_81 (
49795  p_application_id  => p_application_id
49796  ,p_event_id     => l_event_id
49797  ,p_calculate_acctd_flag => l_calculate_acctd_flag
49798  ,p_calculate_g_l_flag => l_calculate_g_l_flag
49799  ,p_actual_flag => l_actual_flag
49800  ,p_balance_type_code => l_balance_type_code
49801  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
49802  
49803  , p_source_9 => l_array_source_9(Idx)
49804  , p_source_13 => l_array_source_13(Idx)
49805  , p_source_15 => l_array_source_15(Idx)
49806  , p_source_17 => l_array_source_17(Idx)
49807  , p_source_19 => l_array_source_19(Idx)
49808  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
49809  , p_source_21 => l_array_source_21(Idx)
49810  , p_source_22 => l_array_source_22(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_31 => l_array_source_31(Idx)
49819  , p_source_32 => l_array_source_32(Idx)
49820  , p_source_33 => l_array_source_33(Idx)
49821  , p_source_34 => l_array_source_34(Idx)
49822  );
49823 If(l_balance_type_code = 'A') THEN
49824   l_actual_gain_loss_ref := l_gain_or_loss_ref;
49825 END IF;
49826 
49827 --
49828 
49829       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
49830       -- or secondary ledger that has different currency with primary
49831       -- or alc that is calculated by sla
49832       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
49833             (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'))
49834 
49835 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
49836 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
49837           AND (l_actual_flag = 'A')) THEN
49838         XLA_AE_LINES_PKG.CreateGainOrLossLines(
49839           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
49840          ,p_application_id   => p_application_id
49841          ,p_amb_context_code => 'DEFAULT'
49842          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
49843          ,p_event_class_code => C_EVENT_CLASS_CODE
49844          ,p_event_type_code  => C_EVENT_TYPE_CODE
49845          
49846          ,p_gain_ccid        => -1
49847          ,p_loss_ccid        => -1
49848 
49849          ,p_actual_flag      => l_actual_flag
49850          ,p_enc_flag         => null
49851          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
49852          ,p_enc_g_l_ref      => null
49853          );
49854       END IF;
49855    END IF;
49856 END IF;
49857 
49858    ELSE
49859       --
49860       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
49861       --
49862       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
49863          trace
49864             (p_msg      => 'Trancaction revesal option is Y'
49865             ,p_level    => C_LEVEL_STATEMENT
49866             ,p_module   => l_log_module);
49867       END IF;
49868    END IF;
49869 
49870 END LOOP;
49871 l_result := XLA_AE_LINES_PKG.InsertLines ;
49872 end loop;
49873 close line_cur;
49874 
49875 
49876 --
49877 -- insert headers into xla_ae_headers_gt table
49878 --
49879 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
49880 
49881 -- insert into errors table here.
49882 
49883 END LOOP;
49884 
49885 --
49886 -- 4865292
49887 --
49888 -- Compare g_hdr_extract_count with event count in
49889 -- CreateHeadersAndLines.
49890 --
49891 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
49892 
49893 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
49894    trace (p_msg     => '# rows extracted from header extract objects '
49895                     || ' (running total): '
49896                     || g_hdr_extract_count
49897          ,p_level   => C_LEVEL_STATEMENT
49898          ,p_module  => l_log_module);
49899 END IF;
49900 
49901 CLOSE header_cur;
49902 --
49903 
49904 --
49905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49906    trace
49907       (p_msg      => 'END of EventClass_86'
49908       ,p_level    => C_LEVEL_PROCEDURE
49909       ,p_module   => l_log_module);
49910 END IF;
49911 --
49912 RETURN l_result;
49913 EXCEPTION
49914 WHEN xla_exceptions_pkg.application_exception THEN
49915    
49916 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
49917 
49918    
49919 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
49920 
49921    RAISE;
49922 WHEN OTHERS THEN
49923    xla_exceptions_pkg.raise_message
49924       (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.EventClass_86');
49925 END EventClass_86;
49926 --
49927 
49928 ---------------------------------------
49929 --
49930 -- PRIVATE PROCEDURE
49931 --         insert_sources_87
49932 --
49933 ----------------------------------------
49934 --
49935 PROCEDURE insert_sources_87(
49936                                 p_target_ledger_id       IN NUMBER
49937                               , p_language               IN VARCHAR2
49938                               , p_sla_ledger_id          IN NUMBER
49939                               , p_pad_start_date         IN DATE
49940                               , p_pad_end_date           IN DATE
49941                          )
49942 IS
49943 
49944 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELEASE_ALL';
49945 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RELEASE';
49946 p_apps_owner                   VARCHAR2(30);
49947 l_log_module                   VARCHAR2(240);
49948 BEGIN
49949 IF g_log_enabled THEN
49950       l_log_module := C_DEFAULT_MODULE||'.insert_sources_87';
49951 END IF;
49952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49953 
49954       trace
49955          (p_msg      => 'BEGIN of insert_sources_87'
49956          ,p_level    => C_LEVEL_PROCEDURE
49957          ,p_module   => l_log_module);
49958 
49959 END IF;
49960 
49961 -- select APPS owner
49962 SELECT oracle_username
49963   INTO p_apps_owner
49964   FROM fnd_oracle_userid
49965  WHERE read_only_flag = 'U'
49966 ;
49967 
49968 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
49969       trace
49970          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
49971                         ' - p_language = '||p_language||
49972                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
49973                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
49974                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
49975                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
49976          ,p_level    => C_LEVEL_STATEMENT
49977          ,p_module   => l_log_module);
49978 END IF;
49979 
49980 
49981 --
49982 INSERT INTO xla_diag_sources --hdr2
49983 (
49984         event_id
49985       , ledger_id
49986       , sla_ledger_id
49987       , description_language
49988       , object_name
49989       , object_type_code
49990       , line_number
49991       , source_application_id
49992       , source_type_code
49993       , source_code
49994       , source_value
49995       , source_meaning
49996       , created_by
49997       , creation_date
49998       , last_update_date
49999       , last_updated_by
50000       , last_update_login
50001       , program_update_date
50002       , program_application_id
50003       , program_id
50004       , request_id
50005 )
50006 SELECT
50007         event_id
50008       , p_target_ledger_id
50009       , p_sla_ledger_id
50010       , p_language
50011       , object_name
50012       , object_type_code
50013       , line_number
50014       , source_application_id
50015       , source_type_code
50016       , source_code
50017       , SUBSTR(source_value ,1,1996)
50018       , SUBSTR(source_meaning ,1,200)
50019       , xla_environment_pkg.g_Usr_Id
50020       , TRUNC(SYSDATE)
50021       , TRUNC(SYSDATE)
50022       , xla_environment_pkg.g_Usr_Id
50023       , xla_environment_pkg.g_Login_Id
50024       , TRUNC(SYSDATE)
50025       , xla_environment_pkg.g_Prog_Appl_Id
50026       , xla_environment_pkg.g_Prog_Id
50027       , xla_environment_pkg.g_Req_Id
50028   FROM (
50029        SELECT xet.event_id                  event_id
50030             , 0                          line_number
50031             , CASE r
50032                WHEN 1 THEN 'PO_EXTRACT_HEADER_V' 
50033                 WHEN 2 THEN 'PO_EXTRACT_HEADER_V' 
50034                 WHEN 3 THEN 'PO_RELEASES_REF_V' 
50035                 WHEN 4 THEN 'PO_EXTRACT_HEADER_V' 
50036                 WHEN 5 THEN 'PO_EXTRACT_HEADER_V' 
50037                 WHEN 6 THEN 'PO_EXTRACT_HEADER_V' 
50038                 
50039                ELSE null
50040               END                           object_name
50041             , CASE r
50042                 WHEN 1 THEN 'HEADER' 
50043                 WHEN 2 THEN 'HEADER' 
50044                 WHEN 3 THEN 'HEADER' 
50045                 WHEN 4 THEN 'HEADER' 
50046                 WHEN 5 THEN 'HEADER' 
50047                 WHEN 6 THEN 'HEADER' 
50048                 
50049                 ELSE null
50050               END                           object_type_code
50051             , CASE r
50052                 WHEN 1 THEN '201' 
50053                 WHEN 2 THEN '201' 
50054                 WHEN 3 THEN '201' 
50055                 WHEN 4 THEN '201' 
50056                 WHEN 5 THEN '201' 
50057                 WHEN 6 THEN '201' 
50058                 
50059                 ELSE null
50060               END                           source_application_id
50061             , 'S'             source_type_code
50062             , CASE r
50063                 WHEN 1 THEN 'PO_TYPE' 
50064                 WHEN 2 THEN 'PO_NUMBER' 
50065                 WHEN 3 THEN 'PO_RELEASE_NUMBER' 
50066                 WHEN 4 THEN 'PO_RELEASE_ID' 
50067                 WHEN 5 THEN 'ENCUMBRANCE_TYPE_ID' 
50068                 WHEN 6 THEN 'GL_DATE' 
50069                 
50070                 ELSE null
50071               END                           source_code
50072             , CASE r
50073                 WHEN 1 THEN TO_CHAR(h4.PO_TYPE)
50074                 WHEN 2 THEN TO_CHAR(h4.PO_NUMBER)
50075                 WHEN 3 THEN TO_CHAR(h5.PO_RELEASE_NUMBER)
50076                 WHEN 4 THEN TO_CHAR(h4.PO_RELEASE_ID)
50077                 WHEN 5 THEN TO_CHAR(h4.ENCUMBRANCE_TYPE_ID)
50078                 WHEN 6 THEN TO_CHAR(h4.GL_DATE)
50079                 
50080                 ELSE null
50081               END                           source_value
50082             , null              source_meaning
50083          FROM xla_events_gt     xet  
50084       , PO_EXTRACT_HEADER_V  h4
50085       , PO_RELEASES_REF_V  h5
50086              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
50087          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
50088            AND xet.event_class_code = C_EVENT_CLASS_CODE
50089               AND h4.event_id = xet.event_id
50090  AND h4.po_release_id = h5.po_release_id
50091 )
50092 ;
50093 --
50094 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50095 
50096       trace
50097          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
50098          ,p_level    => C_LEVEL_STATEMENT
50099          ,p_module   => l_log_module);
50100 
50101 END IF;
50102 --
50103 
50104 
50105 
50106 --
50107 INSERT INTO xla_diag_sources  --line2
50108 (
50109         event_id
50110       , ledger_id
50111       , sla_ledger_id
50112       , description_language
50113       , object_name
50114       , object_type_code
50115       , line_number
50116       , source_application_id
50117       , source_type_code
50118       , source_code
50119       , source_value
50120       , source_meaning
50121       , created_by
50122       , creation_date
50123       , last_update_date
50124       , last_updated_by
50125       , last_update_login
50126       , program_update_date
50127       , program_application_id
50128       , program_id
50129       , request_id
50130 )
50131 SELECT  event_id
50132       , p_target_ledger_id
50133       , p_sla_ledger_id
50134       , p_language
50135       , object_name
50136       , object_type_code
50137       , line_number
50138       , source_application_id
50139       , source_type_code
50140       , source_code
50141       , SUBSTR(source_value,1,1996)
50142       , SUBSTR(source_meaning ,1,200)
50143       , xla_environment_pkg.g_Usr_Id
50144       , TRUNC(SYSDATE)
50145       , TRUNC(SYSDATE)
50146       , xla_environment_pkg.g_Usr_Id
50147       , xla_environment_pkg.g_Login_Id
50148       , TRUNC(SYSDATE)
50149       , xla_environment_pkg.g_Prog_Appl_Id
50150       , xla_environment_pkg.g_Prog_Id
50151       , xla_environment_pkg.g_Req_Id
50152   FROM (
50153        SELECT xet.event_id                  event_id
50154             , l3.line_number                 line_number
50155             , CASE r
50156                WHEN 1 THEN 'PO_EXTRACT_DETAIL_V' 
50157                 WHEN 2 THEN 'FV_XLA_PO_REF_V' 
50158                 WHEN 3 THEN 'FV_XLA_PO_REF_V' 
50159                 WHEN 4 THEN 'PO_EXTRACT_DETAIL_V' 
50160                 WHEN 5 THEN 'FV_XLA_PO_REF_V' 
50161                 WHEN 6 THEN 'FV_XLA_PO_REF_V' 
50162                 WHEN 7 THEN 'PO_EXTRACT_DETAIL_V' 
50163                 WHEN 8 THEN 'PO_EXTRACT_DETAIL_V' 
50164                 WHEN 9 THEN 'PO_EXTRACT_DETAIL_V' 
50165                 WHEN 10 THEN 'PO_EXTRACT_DETAIL_V' 
50166                 WHEN 11 THEN 'PO_EXTRACT_DETAIL_V' 
50167                 WHEN 12 THEN 'PO_EXTRACT_DETAIL_V' 
50168                 WHEN 13 THEN 'PO_EXTRACT_DETAIL_V' 
50169                 WHEN 14 THEN 'PO_EXTRACT_DETAIL_V' 
50170                 WHEN 15 THEN 'PO_EXTRACT_DETAIL_V' 
50171                 WHEN 16 THEN 'PO_EXTRACT_DETAIL_V' 
50172                 WHEN 17 THEN 'PO_EXTRACT_DETAIL_V' 
50173                 WHEN 18 THEN 'PO_EXTRACT_DETAIL_V' 
50174                 WHEN 19 THEN 'PO_EXTRACT_DETAIL_V' 
50175                 WHEN 20 THEN 'FV_XLA_PO_REF_V' 
50176                 WHEN 21 THEN 'PO_EXTRACT_DETAIL_V' 
50177                 WHEN 22 THEN 'PO_EXTRACT_DETAIL_V' 
50178                 WHEN 23 THEN 'PO_EXTRACT_DETAIL_V' 
50179                 WHEN 24 THEN 'PO_EXTRACT_DETAIL_V' 
50180                 WHEN 25 THEN 'PO_DISTS_REF_V' 
50181                 WHEN 26 THEN 'PO_DISTS_REF_V' 
50182                 WHEN 27 THEN 'PO_DISTS_REF_V' 
50183                 WHEN 28 THEN 'FV_XLA_PO_REF_V' 
50184                 WHEN 29 THEN 'FV_XLA_PO_REF_V' 
50185                 WHEN 30 THEN 'FV_XLA_PO_REF_V' 
50186                 
50187                ELSE null
50188               END                           object_name
50189             , CASE r
50190                 WHEN 1 THEN 'LINE' 
50191                 WHEN 2 THEN 'LINE' 
50192                 WHEN 3 THEN 'LINE' 
50193                 WHEN 4 THEN 'LINE' 
50194                 WHEN 5 THEN 'LINE' 
50195                 WHEN 6 THEN 'LINE' 
50196                 WHEN 7 THEN 'LINE' 
50197                 WHEN 8 THEN 'LINE' 
50198                 WHEN 9 THEN 'LINE' 
50199                 WHEN 10 THEN 'LINE' 
50200                 WHEN 11 THEN 'LINE' 
50201                 WHEN 12 THEN 'LINE' 
50202                 WHEN 13 THEN 'LINE' 
50203                 WHEN 14 THEN 'LINE' 
50204                 WHEN 15 THEN 'LINE' 
50205                 WHEN 16 THEN 'LINE' 
50206                 WHEN 17 THEN 'LINE' 
50207                 WHEN 18 THEN 'LINE' 
50208                 WHEN 19 THEN 'LINE' 
50209                 WHEN 20 THEN 'LINE' 
50210                 WHEN 21 THEN 'LINE' 
50211                 WHEN 22 THEN 'LINE' 
50212                 WHEN 23 THEN 'LINE' 
50213                 WHEN 24 THEN 'LINE' 
50214                 WHEN 25 THEN 'LINE' 
50215                 WHEN 26 THEN 'LINE' 
50216                 WHEN 27 THEN 'LINE' 
50217                 WHEN 28 THEN 'LINE' 
50218                 WHEN 29 THEN 'LINE' 
50219                 WHEN 30 THEN 'LINE' 
50220                 
50221                 ELSE null
50222               END                           object_type_code
50223             , CASE r
50224                 WHEN 1 THEN '201' 
50225                 WHEN 2 THEN '8901' 
50226                 WHEN 3 THEN '8901' 
50227                 WHEN 4 THEN '201' 
50228                 WHEN 5 THEN '8901' 
50229                 WHEN 6 THEN '8901' 
50230                 WHEN 7 THEN '201' 
50231                 WHEN 8 THEN '201' 
50232                 WHEN 9 THEN '201' 
50233                 WHEN 10 THEN '201' 
50234                 WHEN 11 THEN '201' 
50235                 WHEN 12 THEN '201' 
50236                 WHEN 13 THEN '201' 
50237                 WHEN 14 THEN '201' 
50238                 WHEN 15 THEN '201' 
50239                 WHEN 16 THEN '201' 
50240                 WHEN 17 THEN '201' 
50241                 WHEN 18 THEN '201' 
50242                 WHEN 19 THEN '201' 
50243                 WHEN 20 THEN '8901' 
50244                 WHEN 21 THEN '201' 
50245                 WHEN 22 THEN '201' 
50246                 WHEN 23 THEN '201' 
50247                 WHEN 24 THEN '201' 
50248                 WHEN 25 THEN '201' 
50249                 WHEN 26 THEN '201' 
50250                 WHEN 27 THEN '201' 
50251                 WHEN 28 THEN '8901' 
50252                 WHEN 29 THEN '8901' 
50253                 WHEN 30 THEN '8901' 
50254                 
50255                 ELSE null
50256               END                           source_application_id
50257             , 'S'             source_type_code
50258             , CASE r
50259                 WHEN 1 THEN 'JE_LINE_DESCRIPTION' 
50260                 WHEN 2 THEN 'FEDERAL_FUND_CATEGORY' 
50261                 WHEN 3 THEN 'FEDERAL_FUND_EXPIRED_STATUS' 
50262                 WHEN 4 THEN 'BUDGET_ACCOUNT' 
50263                 WHEN 5 THEN 'FEDERAL_PRIOR_YEAR_FLAG' 
50264                 WHEN 6 THEN 'FEDERAL_NET_PYA_ADJ_AMT' 
50265                 WHEN 7 THEN 'MAIN_OR_BACKING_CODE' 
50266                 WHEN 8 THEN 'ACCOUNTING_REVERSAL_FLAG' 
50267                 WHEN 9 THEN 'DISTRIBUTION_LINK_TYPE' 
50268                 WHEN 10 THEN 'PO_DISTRIBUTION_ID' 
50269                 WHEN 11 THEN 'APPLIED_TO_APPL_ID' 
50270                 WHEN 12 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
50271                 WHEN 13 THEN 'APPLIED_TO_ENTITY_CODE' 
50272                 WHEN 14 THEN 'APPLIED_TO_DIST_ID_1' 
50273                 WHEN 15 THEN 'APPLIED_TO_HEADER_ID_1' 
50274                 WHEN 16 THEN 'ENTERED_AMT' 
50275                 WHEN 17 THEN 'CURRENCY_CODE' 
50276                 WHEN 18 THEN 'ACCOUNTED_AMT' 
50277                 WHEN 19 THEN 'PO_ENCUM_UPG_OPTION' 
50278                 WHEN 20 THEN 'FEDERAL_UNANTICIPATED_AMT' 
50279                 WHEN 21 THEN 'JFMIP_REFERENCE' 
50280                 WHEN 22 THEN 'PO_UPG_ENC_TYPE_ID' 
50281                 WHEN 23 THEN 'ALLOC_TO_DISTRIBUTION_TYPE' 
50282                 WHEN 24 THEN 'ALLOC_TO_DIST_ID_1' 
50283                 WHEN 25 THEN 'CURRENCY_CONVERSION_DATE' 
50284                 WHEN 26 THEN 'CURRENCY_CONVERSION_RATE' 
50285                 WHEN 27 THEN 'CURRENCY_CONVERSION_TYPE' 
50286                 WHEN 28 THEN 'FEDERAL_PYA_DIFF_AMT' 
50287                 WHEN 29 THEN 'FEDERAL_ANTICIPATED_AMT' 
50288                 WHEN 30 THEN 'FEDERAL_PYA_AMT' 
50289                 
50290                 ELSE null
50291               END                           source_code
50292             , CASE r
50293                 WHEN 1 THEN TO_CHAR(l3.JE_LINE_DESCRIPTION)
50294                 WHEN 2 THEN TO_CHAR(l1.FEDERAL_FUND_CATEGORY)
50295                 WHEN 3 THEN TO_CHAR(l1.FEDERAL_FUND_EXPIRED_STATUS)
50296                 WHEN 4 THEN TO_CHAR(l3.BUDGET_ACCOUNT)
50297                 WHEN 5 THEN TO_CHAR(l1.FEDERAL_PRIOR_YEAR_FLAG)
50298                 WHEN 6 THEN TO_CHAR(l1.FEDERAL_NET_PYA_ADJ_AMT)
50299                 WHEN 7 THEN TO_CHAR(l3.MAIN_OR_BACKING_CODE)
50300                 WHEN 8 THEN TO_CHAR(l3.ACCOUNTING_REVERSAL_FLAG)
50301                 WHEN 9 THEN TO_CHAR(l3.DISTRIBUTION_LINK_TYPE)
50302                 WHEN 10 THEN TO_CHAR(l3.PO_DISTRIBUTION_ID)
50303                 WHEN 11 THEN TO_CHAR(l3.APPLIED_TO_APPL_ID)
50304                 WHEN 12 THEN TO_CHAR(l3.APPLIED_TO_DIST_LINK_TYPE)
50305                 WHEN 13 THEN TO_CHAR(l3.APPLIED_TO_ENTITY_CODE)
50306                 WHEN 14 THEN TO_CHAR(l3.APPLIED_TO_DIST_ID_1)
50307                 WHEN 15 THEN TO_CHAR(l3.APPLIED_TO_HEADER_ID_1)
50308                 WHEN 16 THEN TO_CHAR(l3.ENTERED_AMT)
50309                 WHEN 17 THEN TO_CHAR(l3.CURRENCY_CODE)
50310                 WHEN 18 THEN TO_CHAR(l3.ACCOUNTED_AMT)
50311                 WHEN 19 THEN TO_CHAR(l3.PO_ENCUM_UPG_OPTION)
50312                 WHEN 20 THEN TO_CHAR(l1.FEDERAL_UNANTICIPATED_AMT)
50313                 WHEN 21 THEN TO_CHAR(l3.JFMIP_REFERENCE)
50314                 WHEN 22 THEN TO_CHAR(l3.PO_UPG_ENC_TYPE_ID)
50315                 WHEN 23 THEN TO_CHAR(l3.ALLOC_TO_DISTRIBUTION_TYPE)
50316                 WHEN 24 THEN TO_CHAR(l3.ALLOC_TO_DIST_ID_1)
50317                 WHEN 25 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
50318                 WHEN 26 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
50319                 WHEN 27 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
50320                 WHEN 28 THEN TO_CHAR(l1.FEDERAL_PYA_DIFF_AMT)
50321                 WHEN 29 THEN TO_CHAR(l1.FEDERAL_ANTICIPATED_AMT)
50322                 WHEN 30 THEN TO_CHAR(l1.FEDERAL_PYA_AMT)
50323                 
50324                 ELSE null
50325               END                           source_value
50326             , null              source_meaning
50327          FROM  xla_events_gt     xet  
50328         , FV_XLA_PO_REF_V  l1
50329         , PO_DISTS_REF_V  l2
50330         , PO_EXTRACT_DETAIL_V  l3
50331             , (select rownum r from all_objects where rownum <= 30 and owner = p_apps_owner)
50332         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
50333           AND xet.event_class_code = C_EVENT_CLASS_CODE
50334             AND l3.event_id          = xet.event_id
50335  AND l1.federal_event_id  (+) = l3.event_id  and l3.line_number = l1.federal_line_number (+)  AND l3.po_distribution_id = l2.po_distribution_id  (+)  and l3.po_distribution_type = l2.po_distribution_type (+) 
50336 )
50337 ;
50338 --
50339 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50340 
50341       trace
50342          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
50343          ,p_level    => C_LEVEL_STATEMENT
50344          ,p_module   => l_log_module);
50345 
50346 END IF;
50347 
50348 
50349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50350       trace
50351          (p_msg      => 'END of insert_sources_87'
50352          ,p_level    => C_LEVEL_PROCEDURE
50353          ,p_module   => l_log_module);
50354 END IF;
50355 EXCEPTION
50356   WHEN xla_exceptions_pkg.application_exception THEN
50357       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
50358             trace
50359                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
50360                ,p_level    => C_LEVEL_EXCEPTION
50361                ,p_module   => l_log_module);
50362       END IF;
50363       RAISE;
50364   WHEN OTHERS THEN
50365       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
50366             trace
50367                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
50368                ,p_level    => C_LEVEL_EXCEPTION
50369                ,p_module   => l_log_module);
50370        END IF;
50371        xla_exceptions_pkg.raise_message
50372            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.insert_sources_87');
50373 END insert_sources_87;
50374 --
50375 
50376 ---------------------------------------
50377 --
50378 -- PRIVATE FUNCTION
50379 --         EventClass_87
50380 --
50381 ----------------------------------------
50382 --
50383 FUNCTION EventClass_87
50384        (p_application_id         IN NUMBER
50385        ,p_base_ledger_id         IN NUMBER
50386        ,p_target_ledger_id       IN NUMBER
50387        ,p_language               IN VARCHAR2
50388        ,p_currency_code          IN VARCHAR2
50389        ,p_sla_ledger_id          IN NUMBER
50390        ,p_pad_start_date         IN DATE
50391        ,p_pad_end_date           IN DATE
50392        ,p_primary_ledger_id      IN NUMBER)
50393 RETURN BOOLEAN IS
50394 --
50395 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RELEASE_ALL';
50396 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RELEASE';
50397 
50398 l_calculate_acctd_flag   VARCHAR2(1) :='N';
50399 l_calculate_g_l_flag     VARCHAR2(1) :='N';
50400 --
50401 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50402 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50403 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
50404 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
50405 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50406 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
50407 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
50408 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50409 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
50410 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
50411 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50412 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50413 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50414 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
50415 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
50416 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
50417 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
50418 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
50419 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
50420 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
50421 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
50422 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
50423 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
50424 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
50425 
50426 l_event_id                             NUMBER;
50427 l_previous_event_id                    NUMBER;
50428 l_first_event_id                       NUMBER;
50429 l_last_event_id                        NUMBER;
50430 
50431 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
50432 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
50433 --
50434 --
50435 l_result                    BOOLEAN := TRUE;
50436 l_rows                      NUMBER  := 1000;
50437 l_event_type_name           VARCHAR2(80) := 'All';
50438 l_event_class_name          VARCHAR2(80) := 'Release';
50439 l_description               VARCHAR2(4000);
50440 l_transaction_reversal      NUMBER;
50441 l_ae_header_id              NUMBER;
50442 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
50443 l_log_module                VARCHAR2(240);
50444 --
50445 l_acct_reversal_source      VARCHAR2(30);
50446 l_trx_reversal_source       VARCHAR2(30);
50447 
50448 l_continue_with_lines       BOOLEAN := TRUE;
50449 --
50450 l_acc_rev_gl_date_source    DATE;                      -- 4262811
50451 --
50452 type t_array_event_id is table of number index by binary_integer;
50453 
50454 l_rec_array_event                    t_rec_array_event;
50455 l_null_rec_array_event               t_rec_array_event;
50456 l_array_ae_header_id                 xla_number_array_type;
50457 l_actual_flag                        VARCHAR2(1) := NULL;
50458 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
50459 l_balance_type_code                  VARCHAR2(1) :=NULL;
50460 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
50461 
50462 --
50463 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
50464 --
50465 
50466 TYPE t_array_source_1 IS TABLE OF PO_EXTRACT_HEADER_V.PO_TYPE%TYPE INDEX BY BINARY_INTEGER;
50467 TYPE t_array_source_2 IS TABLE OF PO_EXTRACT_HEADER_V.PO_NUMBER%TYPE INDEX BY BINARY_INTEGER;
50468 TYPE t_array_source_4 IS TABLE OF PO_RELEASES_REF_V.PO_RELEASE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
50469 TYPE t_array_source_41 IS TABLE OF PO_EXTRACT_HEADER_V.PO_RELEASE_ID%TYPE INDEX BY BINARY_INTEGER;
50470 TYPE t_array_source_48 IS TABLE OF PO_EXTRACT_HEADER_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
50471 TYPE t_array_source_49 IS TABLE OF PO_EXTRACT_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
50472 
50473 TYPE t_array_source_3 IS TABLE OF PO_EXTRACT_DETAIL_V.JE_LINE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
50474 TYPE t_array_source_7 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_FUND_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
50475 TYPE t_array_source_8 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_FUND_EXPIRED_STATUS%TYPE INDEX BY BINARY_INTEGER;
50476 TYPE t_array_source_9 IS TABLE OF PO_EXTRACT_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
50477 TYPE t_array_source_10 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_PRIOR_YEAR_FLAG%TYPE INDEX BY BINARY_INTEGER;
50478 TYPE t_array_source_11 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_NET_PYA_ADJ_AMT%TYPE INDEX BY BINARY_INTEGER;
50479 TYPE t_array_source_13 IS TABLE OF PO_EXTRACT_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
50480 TYPE t_array_source_15 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
50481 TYPE t_array_source_17 IS TABLE OF PO_EXTRACT_DETAIL_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
50482 TYPE t_array_source_19 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
50483 TYPE t_array_source_21 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
50484 TYPE t_array_source_22 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
50485 TYPE t_array_source_23 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
50486 TYPE t_array_source_24 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
50487 TYPE t_array_source_25 IS TABLE OF PO_EXTRACT_DETAIL_V.APPLIED_TO_HEADER_ID_1%TYPE INDEX BY BINARY_INTEGER;
50488 TYPE t_array_source_26 IS TABLE OF PO_EXTRACT_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
50489 TYPE t_array_source_27 IS TABLE OF PO_EXTRACT_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
50490 TYPE t_array_source_28 IS TABLE OF PO_EXTRACT_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
50491 TYPE t_array_source_29 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
50492 TYPE t_array_source_30 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_UNANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
50493 TYPE t_array_source_31 IS TABLE OF PO_EXTRACT_DETAIL_V.JFMIP_REFERENCE%TYPE INDEX BY BINARY_INTEGER;
50494 TYPE t_array_source_32 IS TABLE OF PO_EXTRACT_DETAIL_V.PO_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
50495 TYPE t_array_source_33 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
50496 TYPE t_array_source_34 IS TABLE OF PO_EXTRACT_DETAIL_V.ALLOC_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
50497 TYPE t_array_source_35 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
50498 TYPE t_array_source_36 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
50499 TYPE t_array_source_37 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
50500 TYPE t_array_source_38 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_PYA_DIFF_AMT%TYPE INDEX BY BINARY_INTEGER;
50501 TYPE t_array_source_39 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_ANTICIPATED_AMT%TYPE INDEX BY BINARY_INTEGER;
50502 TYPE t_array_source_40 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_PYA_AMT%TYPE INDEX BY BINARY_INTEGER;
50503 
50504 l_array_source_1              t_array_source_1;
50505 l_array_source_2              t_array_source_2;
50506 l_array_source_4              t_array_source_4;
50507 l_array_source_41              t_array_source_41;
50508 l_array_source_48              t_array_source_48;
50509 l_array_source_49              t_array_source_49;
50510 
50511 l_array_source_3      t_array_source_3;
50512 l_array_source_7      t_array_source_7;
50513 l_array_source_8      t_array_source_8;
50514 l_array_source_9      t_array_source_9;
50515 l_array_source_10      t_array_source_10;
50516 l_array_source_11      t_array_source_11;
50517 l_array_source_13      t_array_source_13;
50518 l_array_source_15      t_array_source_15;
50519 l_array_source_17      t_array_source_17;
50520 l_array_source_19      t_array_source_19;
50521 l_array_source_21      t_array_source_21;
50522 l_array_source_22      t_array_source_22;
50523 l_array_source_23      t_array_source_23;
50524 l_array_source_24      t_array_source_24;
50525 l_array_source_25      t_array_source_25;
50526 l_array_source_26      t_array_source_26;
50527 l_array_source_27      t_array_source_27;
50528 l_array_source_28      t_array_source_28;
50529 l_array_source_29      t_array_source_29;
50530 l_array_source_30      t_array_source_30;
50531 l_array_source_31      t_array_source_31;
50532 l_array_source_32      t_array_source_32;
50533 l_array_source_33      t_array_source_33;
50534 l_array_source_34      t_array_source_34;
50535 l_array_source_35      t_array_source_35;
50536 l_array_source_36      t_array_source_36;
50537 l_array_source_37      t_array_source_37;
50538 l_array_source_38      t_array_source_38;
50539 l_array_source_39      t_array_source_39;
50540 l_array_source_40      t_array_source_40;
50541 
50542 --
50543 CURSOR header_cur
50544 IS
50545 SELECT /*+ leading(xet) cardinality(xet,1) */
50546 -- Event Class Code: RELEASE
50547     xet.entity_id
50548    ,xet.legal_entity_id
50549    ,xet.entity_code
50550    ,xet.transaction_number
50551    ,xet.event_id
50552    ,xet.event_class_code
50553    ,xet.event_type_code
50554    ,xet.event_number
50555    ,xet.event_date
50556    ,xet.transaction_date
50557    ,xet.reference_num_1
50558    ,xet.reference_num_2
50559    ,xet.reference_num_3
50560    ,xet.reference_num_4
50561    ,xet.reference_char_1
50562    ,xet.reference_char_2
50563    ,xet.reference_char_3
50564    ,xet.reference_char_4
50565    ,xet.reference_date_1
50566    ,xet.reference_date_2
50567    ,xet.reference_date_3
50568    ,xet.reference_date_4
50569    ,xet.event_created_by
50570    ,xet.budgetary_control_flag 
50571   , h4.PO_TYPE    source_1
50572   , h4.PO_NUMBER    source_2
50573   , h5.PO_RELEASE_NUMBER    source_4
50574   , h4.PO_RELEASE_ID    source_41
50575   , h4.ENCUMBRANCE_TYPE_ID    source_48
50576   , h4.GL_DATE    source_49
50577   FROM xla_events_gt     xet 
50578   , PO_EXTRACT_HEADER_V  h4
50579   , PO_RELEASES_REF_V  h5
50580  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
50581    and xet.event_class_code = C_EVENT_CLASS_CODE
50582    and xet.event_status_code <> 'N'  AND h4.event_id = xet.event_id
50583  AND h4.po_release_id = h5.po_release_id
50584  ORDER BY event_id
50585 ;
50586 
50587 
50588 --
50589 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
50590 IS
50591 SELECT  /*+ leading(xet) cardinality(xet,1) */
50592 -- Event Class Code: RELEASE
50593     xet.entity_id
50594    ,xet.legal_entity_id
50595    ,xet.entity_code
50596    ,xet.transaction_number
50597    ,xet.event_id
50598    ,xet.event_class_code
50599    ,xet.event_type_code
50600    ,xet.event_number
50601    ,xet.event_date
50602    ,xet.transaction_date
50603    ,xet.reference_num_1
50604    ,xet.reference_num_2
50605    ,xet.reference_num_3
50606    ,xet.reference_num_4
50607    ,xet.reference_char_1
50608    ,xet.reference_char_2
50609    ,xet.reference_char_3
50610    ,xet.reference_char_4
50611    ,xet.reference_date_1
50612    ,xet.reference_date_2
50613    ,xet.reference_date_3
50614    ,xet.reference_date_4
50615    ,xet.event_created_by
50616    ,xet.budgetary_control_flag
50617  , l3.LINE_NUMBER  
50618   , l3.JE_LINE_DESCRIPTION    source_3
50619   , l1.FEDERAL_FUND_CATEGORY    source_7
50620   , l1.FEDERAL_FUND_EXPIRED_STATUS    source_8
50621   , l3.BUDGET_ACCOUNT    source_9
50622   , l1.FEDERAL_PRIOR_YEAR_FLAG    source_10
50623   , l1.FEDERAL_NET_PYA_ADJ_AMT    source_11
50624   , l3.MAIN_OR_BACKING_CODE    source_13
50625   , l3.ACCOUNTING_REVERSAL_FLAG    source_15
50626   , l3.DISTRIBUTION_LINK_TYPE    source_17
50627   , l3.PO_DISTRIBUTION_ID    source_19
50628   , l3.APPLIED_TO_APPL_ID    source_21
50629   , l3.APPLIED_TO_DIST_LINK_TYPE    source_22
50630   , l3.APPLIED_TO_ENTITY_CODE    source_23
50631   , l3.APPLIED_TO_DIST_ID_1    source_24
50632   , l3.APPLIED_TO_HEADER_ID_1    source_25
50633   , l3.ENTERED_AMT    source_26
50634   , l3.CURRENCY_CODE    source_27
50635   , l3.ACCOUNTED_AMT    source_28
50636   , l3.PO_ENCUM_UPG_OPTION    source_29
50637   , l1.FEDERAL_UNANTICIPATED_AMT    source_30
50638   , l3.JFMIP_REFERENCE    source_31
50639   , l3.PO_UPG_ENC_TYPE_ID    source_32
50640   , l3.ALLOC_TO_DISTRIBUTION_TYPE    source_33
50641   , l3.ALLOC_TO_DIST_ID_1    source_34
50642   , l2.CURRENCY_CONVERSION_DATE    source_35
50643   , l2.CURRENCY_CONVERSION_RATE    source_36
50644   , l2.CURRENCY_CONVERSION_TYPE    source_37
50645   , l1.FEDERAL_PYA_DIFF_AMT    source_38
50646   , l1.FEDERAL_ANTICIPATED_AMT    source_39
50647   , l1.FEDERAL_PYA_AMT    source_40
50648   FROM xla_events_gt     xet 
50649   , FV_XLA_PO_REF_V  l1
50650   , PO_DISTS_REF_V  l2
50651   , PO_EXTRACT_DETAIL_V  l3
50652  WHERE xet.event_id between x_first_event_id and x_last_event_id
50653    and xet.event_date between p_pad_start_date and p_pad_end_date
50654    and xet.event_class_code = C_EVENT_CLASS_CODE
50655    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
50656  AND l1.federal_event_id  (+) = l3.event_id  AND l3.line_number = l1.federal_line_number (+)  AND l3.po_distribution_id = l2.po_distribution_id  (+)  AND l3.po_distribution_type = l2.po_distribution_type (+) ;
50657 
50658 --
50659 BEGIN
50660 IF g_log_enabled THEN
50661    l_log_module := C_DEFAULT_MODULE||'.EventClass_87';
50662 END IF;
50663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50664    trace
50665       (p_msg      => 'BEGIN of EventClass_87'
50666       ,p_level    => C_LEVEL_PROCEDURE
50667       ,p_module   => l_log_module);
50668 END IF;
50669 
50670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50671    trace
50672       (p_msg      => 'p_application_id = '||p_application_id||
50673                      ' - p_base_ledger_id = '||p_base_ledger_id||
50674                      ' - p_target_ledger_id  = '||p_target_ledger_id||
50675                      ' - p_language = '||p_language||
50676                      ' - p_currency_code = '||p_currency_code||
50677                      ' - p_sla_ledger_id = '||p_sla_ledger_id
50678       ,p_level    => C_LEVEL_STATEMENT
50679       ,p_module   => l_log_module);
50680 END IF;
50681 --
50682 -- initialze arrays
50683 --
50684 g_array_event.DELETE;
50685 l_rec_array_event := l_null_rec_array_event;
50686 --
50687 --------------------------------------
50688 -- 4262811 Initialze MPA Line Number
50689 --------------------------------------
50690 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
50691 
50692 --
50693 
50694 --
50695 OPEN header_cur;
50696 --
50697 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50698    trace
50699    (p_msg      => 'SQL - FETCH header_cur'
50700    ,p_level    => C_LEVEL_STATEMENT
50701    ,p_module   => l_log_module);
50702 END IF;
50703 --
50704 LOOP
50705 FETCH header_cur BULK COLLECT INTO
50706         l_array_entity_id
50707       , l_array_legal_entity_id
50708       , l_array_entity_code
50709       , l_array_transaction_num
50710       , l_array_event_id
50711       , l_array_class_code
50712       , l_array_event_type
50713       , l_array_event_number
50714       , l_array_event_date
50715       , l_array_transaction_date
50716       , l_array_reference_num_1
50717       , l_array_reference_num_2
50718       , l_array_reference_num_3
50719       , l_array_reference_num_4
50720       , l_array_reference_char_1
50721       , l_array_reference_char_2
50722       , l_array_reference_char_3
50723       , l_array_reference_char_4
50724       , l_array_reference_date_1
50725       , l_array_reference_date_2
50726       , l_array_reference_date_3
50727       , l_array_reference_date_4
50728       , l_array_event_created_by
50729       , l_array_budgetary_control_flag 
50730       , l_array_source_1
50731       , l_array_source_2
50732       , l_array_source_4
50733       , l_array_source_41
50734       , l_array_source_48
50735       , l_array_source_49
50736       LIMIT l_rows;
50737 --
50738 IF (C_LEVEL_EVENT >= g_log_level) THEN
50739    trace
50740    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
50741    ,p_level    => C_LEVEL_EVENT
50742    ,p_module   => l_log_module);
50743 END IF;
50744 --
50745 EXIT WHEN l_array_entity_id.COUNT = 0;
50746 
50747 -- initialize arrays
50748 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
50749 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
50750 
50751 --
50752 -- Bug 4458708
50753 --
50754 XLA_AE_LINES_PKG.g_LineNumber := 0;
50755 
50756 
50757 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
50758 g_last_hdr_idx := l_array_event_id.LAST;
50759 --
50760 -- loop for the headers. Each iteration is for each header extract row
50761 -- fetched in header cursor
50762 --
50763 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
50764 
50765 --
50766 -- set event info as cache for other routines to refer event attributes
50767 --
50768 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
50769    (p_application_id           => p_application_id
50770    ,p_primary_ledger_id        => p_primary_ledger_id
50771    ,p_base_ledger_id           => p_base_ledger_id
50772    ,p_target_ledger_id         => p_target_ledger_id
50773    ,p_entity_id                => l_array_entity_id(hdr_idx)
50774    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
50775    ,p_entity_code              => l_array_entity_code(hdr_idx)
50776    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
50777    ,p_event_id                 => l_array_event_id(hdr_idx)
50778    ,p_event_class_code         => l_array_class_code(hdr_idx)
50779    ,p_event_type_code          => l_array_event_type(hdr_idx)
50780    ,p_event_number             => l_array_event_number(hdr_idx)
50781    ,p_event_date               => l_array_event_date(hdr_idx)
50782    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
50783    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
50784    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
50785    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
50786    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
50787    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
50788    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
50789    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
50790    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
50791    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
50792    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
50793    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
50794    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
50795    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
50796    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
50797 
50798 --
50799 -- set the status of entry to C_VALID (0)
50800 --
50801 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
50802 
50803 --
50804 -- initialize a row for ae header
50805 --
50806 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
50807 
50808 l_event_id := l_array_event_id(hdr_idx);
50809 
50810 --
50811 -- storing the hdr_idx for event. May be used by line cursor.
50812 --
50813 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
50814 
50815 --
50816 -- store sources from header extract. This can be improved to
50817 -- store only those sources from header extract that may be used in lines
50818 --
50819 
50820 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
50821 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
50822 g_array_event(l_event_id).array_value_num('source_4') := l_array_source_4(hdr_idx);
50823 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
50824 g_array_event(l_event_id).array_value_num('source_48') := l_array_source_48(hdr_idx);
50825 g_array_event(l_event_id).array_value_date('source_49') := l_array_source_49(hdr_idx);
50826 
50827 --
50828 -- initilaize the status of ae headers for diffrent balance types
50829 -- the status is initialised to C_NOT_CREATED (2)
50830 --
50831 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
50832 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
50833 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
50834 
50835 --
50836 -- call api to validate and store accounting attributes for header
50837 --
50838 
50839 ------------------------------------------------------------
50840 -- Accrual Reversal : to get date for Standard Source (NONE)
50841 ------------------------------------------------------------
50842 l_acc_rev_gl_date_source := NULL;
50843 
50844      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
50845       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_48');
50846      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
50847       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_49');
50848 
50849 
50850 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
50851 
50852 XLA_AE_HEADER_PKG.SetJeCategoryName;
50853 
50854 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
50855 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
50856 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
50857 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
50858 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
50859 
50860 
50861 --
50862 xla_ae_header_pkg.SetHdrDescription(
50863    p_description => Description_3 (
50864    p_application_id => p_application_id 
50865  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
50866  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
50867  , p_source_4 => g_array_event(l_event_id).array_value_num('source_4')
50868    )
50869 );
50870 --
50871 
50872 -- No header level analytical criteria
50873 
50874 --
50875 --accounting attribute enhancement, bug 3612931
50876 --
50877 l_trx_reversal_source := SUBSTR(NULL, 1,30);
50878 
50879 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
50880    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
50881 
50882    xla_accounting_err_pkg.build_message
50883       (p_appli_s_name            => 'XLA'
50884       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
50885       ,p_token_1                 => 'ACCT_ATTR_NAME'
50886       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
50887       ,p_token_2                 => 'PRODUCT_NAME'
50888       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
50889       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
50890       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
50891       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
50892 
50893 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
50894    --
50895    -- following sets the accounting attributes needed to reverse
50896    -- accounting for a distributeion
50897    --
50898    xla_ae_lines_pkg.SetTrxReversalAttrs
50899       (p_event_id              => l_event_id
50900       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
50901       ,p_trx_reversal_source   => l_trx_reversal_source);
50902 
50903 END IF;
50904 
50905 
50906 ----------------------------------------------------------------
50907 -- 4262811 -  update the header statuses to invalid in need be
50908 ----------------------------------------------------------------
50909 --
50910 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
50911 
50912 
50913   -----------------------------------------------
50914   -- No accrual reversal for the event class/type
50915   -----------------------------------------------
50916 ----------------------------------------------------------------
50917 
50918 --
50919 -- this ends the header loop iteration for one bulk fetch
50920 --
50921 END LOOP;
50922 
50923 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
50924 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
50925 
50926 --
50927 -- insert dummy rows into lines gt table that were created due to
50928 -- transaction reversals
50929 --
50930 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
50931    l_result := XLA_AE_LINES_PKG.InsertLines;
50932 END IF;
50933 
50934 --
50935 -- reset the temp_line_num for each set of events fetched from header
50936 -- cursor rather than doing it for each new event in line cursor
50937 -- Bug 3939231
50938 --
50939 xla_ae_lines_pkg.g_temp_line_num := 0;
50940 
50941 
50942 
50943 --
50944 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
50945 --
50946 --
50947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
50948 
50949       trace
50950          (p_msg      => 'SQL - FETCH line_cur'
50951          ,p_level    => C_LEVEL_STATEMENT
50952          ,p_module   => l_log_module);
50953 
50954 END IF;
50955 --
50956 --
50957 LOOP
50958   --
50959   FETCH line_cur BULK COLLECT INTO
50960         l_array_entity_id
50961       , l_array_legal_entity_id
50962       , l_array_entity_code
50963       , l_array_transaction_num
50964       , l_array_event_id
50965       , l_array_class_code
50966       , l_array_event_type
50967       , l_array_event_number
50968       , l_array_event_date
50969       , l_array_transaction_date
50970       , l_array_reference_num_1
50971       , l_array_reference_num_2
50972       , l_array_reference_num_3
50973       , l_array_reference_num_4
50974       , l_array_reference_char_1
50975       , l_array_reference_char_2
50976       , l_array_reference_char_3
50977       , l_array_reference_char_4
50978       , l_array_reference_date_1
50979       , l_array_reference_date_2
50980       , l_array_reference_date_3
50981       , l_array_reference_date_4
50982       , l_array_event_created_by
50983       , l_array_budgetary_control_flag
50984       , l_array_extract_line_num 
50985       , l_array_source_3
50986       , l_array_source_7
50987       , l_array_source_8
50988       , l_array_source_9
50989       , l_array_source_10
50990       , l_array_source_11
50991       , l_array_source_13
50992       , l_array_source_15
50993       , l_array_source_17
50994       , l_array_source_19
50995       , l_array_source_21
50996       , l_array_source_22
50997       , l_array_source_23
50998       , l_array_source_24
50999       , l_array_source_25
51000       , l_array_source_26
51001       , l_array_source_27
51002       , l_array_source_28
51003       , l_array_source_29
51004       , l_array_source_30
51005       , l_array_source_31
51006       , l_array_source_32
51007       , l_array_source_33
51008       , l_array_source_34
51009       , l_array_source_35
51010       , l_array_source_36
51011       , l_array_source_37
51012       , l_array_source_38
51013       , l_array_source_39
51014       , l_array_source_40
51015       LIMIT l_rows;
51016 
51017   --
51018   IF (C_LEVEL_EVENT >= g_log_level) THEN
51019             trace
51020                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
51021                ,p_level    => C_LEVEL_EVENT
51022                ,p_module   => l_log_module);
51023   END IF;
51024   --
51025   EXIT WHEN l_array_entity_id.count = 0;
51026 
51027   XLA_AE_LINES_PKG.g_rec_lines := null;
51028 
51029 --
51030 -- Bug 4458708
51031 --
51032 XLA_AE_LINES_PKG.g_LineNumber := 0;
51033 --
51034 --
51035 
51036 FOR Idx IN 1..l_array_event_id.count LOOP
51037    --
51038    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
51039    --
51040    l_event_id := l_array_event_id(idx);  -- 5648433
51041 
51042    --
51043    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
51044    --
51045 
51046    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
51047              (g_array_event(l_event_id).array_value_num('header_index'))
51048          ,'N'
51049          ) <> 'Y'
51050    THEN
51051       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
51052          trace
51053             (p_msg      => 'Trancaction revesal option is not Y '
51054             ,p_level    => C_LEVEL_STATEMENT
51055             ,p_module   => l_log_module);
51056       END IF;
51057 
51058 --
51059 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
51060 --
51061 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
51062 --
51063 -- set event info as cache for other routines to refer event attributes
51064 --
51065 
51066 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
51067    l_previous_event_id := l_event_id;
51068 
51069    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
51070       (p_application_id           => p_application_id
51071       ,p_primary_ledger_id        => p_primary_ledger_id
51072       ,p_base_ledger_id           => p_base_ledger_id
51073       ,p_target_ledger_id         => p_target_ledger_id
51074       ,p_entity_id                => l_array_entity_id(Idx)
51075       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
51076       ,p_entity_code              => l_array_entity_code(Idx)
51077       ,p_transaction_num          => l_array_transaction_num(Idx)
51078       ,p_event_id                 => l_array_event_id(Idx)
51079       ,p_event_class_code         => l_array_class_code(Idx)
51080       ,p_event_type_code          => l_array_event_type(Idx)
51081       ,p_event_number             => l_array_event_number(Idx)
51082       ,p_event_date               => l_array_event_date(Idx)
51083       ,p_transaction_date         => l_array_transaction_date(Idx)
51084       ,p_reference_num_1          => l_array_reference_num_1(Idx)
51085       ,p_reference_num_2          => l_array_reference_num_2(Idx)
51086       ,p_reference_num_3          => l_array_reference_num_3(Idx)
51087       ,p_reference_num_4          => l_array_reference_num_4(Idx)
51088       ,p_reference_char_1         => l_array_reference_char_1(Idx)
51089       ,p_reference_char_2         => l_array_reference_char_2(Idx)
51090       ,p_reference_char_3         => l_array_reference_char_3(Idx)
51091       ,p_reference_char_4         => l_array_reference_char_4(Idx)
51092       ,p_reference_date_1         => l_array_reference_date_1(Idx)
51093       ,p_reference_date_2         => l_array_reference_date_2(Idx)
51094       ,p_reference_date_3         => l_array_reference_date_3(Idx)
51095       ,p_reference_date_4         => l_array_reference_date_4(Idx)
51096       ,p_event_created_by         => l_array_event_created_by(Idx)
51097       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
51098        --
51099 END IF;
51100 
51101 
51102 
51103 --
51104 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
51105 
51106 l_acct_reversal_source := SUBSTR(l_array_source_15(Idx), 1,30);
51107 
51108 IF l_continue_with_lines THEN
51109    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
51110       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
51111 
51112       xla_accounting_err_pkg.build_message
51113          (p_appli_s_name            => 'XLA'
51114          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
51115          ,p_token_1                 => 'LINE_NUMBER'
51116          ,p_value_1                 => l_array_extract_line_num(Idx)
51117          ,p_token_2                 => 'PRODUCT_NAME'
51118          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
51119          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
51120          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
51121          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
51122 
51123    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
51124       --
51125       -- following sets the accounting attributes needed to reverse
51126       -- accounting for a distributeion
51127       --
51128 
51129       --
51130       -- 5217187
51131       --
51132       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
51133       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
51134                                        g_array_event(l_event_id).array_value_num('header_index'));
51135       --
51136       --
51137 
51138       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
51139       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_15(Idx);
51140       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
51141       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_19(Idx);
51142       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
51143       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_17(Idx);
51144       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
51145       l_rec_rev_acct_attrs.array_num_value(5)  := TO_NUMBER(l_array_source_9(Idx));
51146       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
51147       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_26(Idx);
51148       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
51149       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_27(Idx);
51150       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
51151       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_28(Idx);
51152       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
51153       l_rec_rev_acct_attrs.array_num_value(9)  := TO_NUMBER(l_array_source_9(Idx));
51154       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
51155       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_26(Idx);
51156       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
51157       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_27(Idx);
51158       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
51159       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_28(Idx);
51160       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
51161       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_29(Idx);
51162       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'REVERSED_DISTRIBUTION_ID1';
51163       l_rec_rev_acct_attrs.array_num_value(14)  := l_array_source_24(Idx);
51164       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_TYPE';
51165       l_rec_rev_acct_attrs.array_char_value(15)  := l_array_source_22(Idx);
51166       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'UPG_CR_ENC_TYPE_ID';
51167       l_rec_rev_acct_attrs.array_num_value(16)  := l_array_source_32(Idx);
51168       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'UPG_DR_ENC_TYPE_ID';
51169       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_32(Idx);
51170 
51171 
51172       xla_ae_lines_pkg.SetAcctReversalAttrs
51173          (p_event_id             => l_event_id
51174          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
51175          ,p_calculate_acctd_flag => l_calculate_acctd_flag
51176          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
51177    END IF;
51178 
51179    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
51180        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
51181 
51182 --
51183 AcctLineType_46 (
51184  p_application_id  => p_application_id
51185  ,p_event_id     => l_event_id
51186  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51187  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51188  ,p_actual_flag => l_actual_flag
51189  ,p_balance_type_code => l_balance_type_code
51190  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51191  
51192  , p_source_9 => l_array_source_9(Idx)
51193  , p_source_13 => l_array_source_13(Idx)
51194  , p_source_15 => l_array_source_15(Idx)
51195  , p_source_17 => l_array_source_17(Idx)
51196  , p_source_19 => l_array_source_19(Idx)
51197  , p_source_21 => l_array_source_21(Idx)
51198  , p_source_22 => l_array_source_22(Idx)
51199  , p_source_23 => l_array_source_23(Idx)
51200  , p_source_24 => l_array_source_24(Idx)
51201  , p_source_25 => l_array_source_25(Idx)
51202  , p_source_26 => l_array_source_26(Idx)
51203  , p_source_27 => l_array_source_27(Idx)
51204  , p_source_28 => l_array_source_28(Idx)
51205  , p_source_29 => l_array_source_29(Idx)
51206  , p_source_32 => l_array_source_32(Idx)
51207  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51208  );
51209 If(l_balance_type_code = 'A') THEN
51210   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51211 END IF;
51212 
51213 --
51214 
51215 
51216 --
51217 AcctLineType_47 (
51218  p_application_id  => p_application_id
51219  ,p_event_id     => l_event_id
51220  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51221  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51222  ,p_actual_flag => l_actual_flag
51223  ,p_balance_type_code => l_balance_type_code
51224  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51225  
51226  , p_source_9 => l_array_source_9(Idx)
51227  , p_source_13 => l_array_source_13(Idx)
51228  , p_source_15 => l_array_source_15(Idx)
51229  , p_source_17 => l_array_source_17(Idx)
51230  , p_source_19 => l_array_source_19(Idx)
51231  , p_source_21 => l_array_source_21(Idx)
51232  , p_source_22 => l_array_source_22(Idx)
51233  , p_source_23 => l_array_source_23(Idx)
51234  , p_source_24 => l_array_source_24(Idx)
51235  , p_source_25 => l_array_source_25(Idx)
51236  , p_source_26 => l_array_source_26(Idx)
51237  , p_source_27 => l_array_source_27(Idx)
51238  , p_source_28 => l_array_source_28(Idx)
51239  , p_source_29 => l_array_source_29(Idx)
51240  , p_source_32 => l_array_source_32(Idx)
51241  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51242  );
51243 If(l_balance_type_code = 'A') THEN
51244   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51245 END IF;
51246 
51247 --
51248 
51249 
51250 --
51251 AcctLineType_48 (
51252  p_application_id  => p_application_id
51253  ,p_event_id     => l_event_id
51254  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51255  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51256  ,p_actual_flag => l_actual_flag
51257  ,p_balance_type_code => l_balance_type_code
51258  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51259  
51260  , p_source_3 => l_array_source_3(Idx)
51261  , p_source_7 => l_array_source_7(Idx)
51262  , p_source_8 => l_array_source_8(Idx)
51263  , p_source_9 => l_array_source_9(Idx)
51264  , p_source_10 => l_array_source_10(Idx)
51265  , p_source_11 => l_array_source_11(Idx)
51266  , p_source_13 => l_array_source_13(Idx)
51267  , p_source_15 => l_array_source_15(Idx)
51268  , p_source_17 => l_array_source_17(Idx)
51269  , p_source_19 => l_array_source_19(Idx)
51270  , p_source_21 => l_array_source_21(Idx)
51271  , p_source_22 => l_array_source_22(Idx)
51272  , p_source_23 => l_array_source_23(Idx)
51273  , p_source_24 => l_array_source_24(Idx)
51274  , p_source_25 => l_array_source_25(Idx)
51275  , p_source_26 => l_array_source_26(Idx)
51276  , p_source_27 => l_array_source_27(Idx)
51277  , p_source_28 => l_array_source_28(Idx)
51278  , p_source_29 => l_array_source_29(Idx)
51279  , p_source_32 => l_array_source_32(Idx)
51280  , p_source_35 => l_array_source_35(Idx)
51281  , p_source_36 => l_array_source_36(Idx)
51282  , p_source_37 => l_array_source_37(Idx)
51283  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51284  );
51285 If(l_balance_type_code = 'A') THEN
51286   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51287 END IF;
51288 
51289 --
51290 
51291 
51292 --
51293 AcctLineType_49 (
51294  p_application_id  => p_application_id
51295  ,p_event_id     => l_event_id
51296  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51297  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51298  ,p_actual_flag => l_actual_flag
51299  ,p_balance_type_code => l_balance_type_code
51300  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51301  
51302  , p_source_9 => l_array_source_9(Idx)
51303  , p_source_13 => l_array_source_13(Idx)
51304  , p_source_15 => l_array_source_15(Idx)
51305  , p_source_17 => l_array_source_17(Idx)
51306  , p_source_19 => l_array_source_19(Idx)
51307  , p_source_21 => l_array_source_21(Idx)
51308  , p_source_22 => l_array_source_22(Idx)
51309  , p_source_23 => l_array_source_23(Idx)
51310  , p_source_24 => l_array_source_24(Idx)
51311  , p_source_25 => l_array_source_25(Idx)
51312  , p_source_26 => l_array_source_26(Idx)
51313  , p_source_27 => l_array_source_27(Idx)
51314  , p_source_28 => l_array_source_28(Idx)
51315  , p_source_29 => l_array_source_29(Idx)
51316  , p_source_31 => l_array_source_31(Idx)
51317  , p_source_32 => l_array_source_32(Idx)
51318  , p_source_33 => l_array_source_33(Idx)
51319  , p_source_34 => l_array_source_34(Idx)
51320  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51321  );
51322 If(l_balance_type_code = 'A') THEN
51323   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51324 END IF;
51325 
51326 --
51327 
51328 
51329 --
51330 AcctLineType_50 (
51331  p_application_id  => p_application_id
51332  ,p_event_id     => l_event_id
51333  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51334  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51335  ,p_actual_flag => l_actual_flag
51336  ,p_balance_type_code => l_balance_type_code
51337  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51338  
51339  , p_source_9 => l_array_source_9(Idx)
51340  , p_source_13 => l_array_source_13(Idx)
51341  , p_source_15 => l_array_source_15(Idx)
51342  , p_source_17 => l_array_source_17(Idx)
51343  , p_source_19 => l_array_source_19(Idx)
51344  , p_source_21 => l_array_source_21(Idx)
51345  , p_source_22 => l_array_source_22(Idx)
51346  , p_source_23 => l_array_source_23(Idx)
51347  , p_source_24 => l_array_source_24(Idx)
51348  , p_source_25 => l_array_source_25(Idx)
51349  , p_source_26 => l_array_source_26(Idx)
51350  , p_source_27 => l_array_source_27(Idx)
51351  , p_source_28 => l_array_source_28(Idx)
51352  , p_source_29 => l_array_source_29(Idx)
51353  , p_source_31 => l_array_source_31(Idx)
51354  , p_source_32 => l_array_source_32(Idx)
51355  , p_source_33 => l_array_source_33(Idx)
51356  , p_source_34 => l_array_source_34(Idx)
51357  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51358  );
51359 If(l_balance_type_code = 'A') THEN
51360   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51361 END IF;
51362 
51363 --
51364 
51365 
51366 --
51367 AcctLineType_51 (
51368  p_application_id  => p_application_id
51369  ,p_event_id     => l_event_id
51370  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51371  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51372  ,p_actual_flag => l_actual_flag
51373  ,p_balance_type_code => l_balance_type_code
51374  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51375  
51376  , p_source_9 => l_array_source_9(Idx)
51377  , p_source_13 => l_array_source_13(Idx)
51378  , p_source_15 => l_array_source_15(Idx)
51379  , p_source_17 => l_array_source_17(Idx)
51380  , p_source_19 => l_array_source_19(Idx)
51381  , p_source_21 => l_array_source_21(Idx)
51382  , p_source_22 => l_array_source_22(Idx)
51383  , p_source_23 => l_array_source_23(Idx)
51384  , p_source_24 => l_array_source_24(Idx)
51385  , p_source_25 => l_array_source_25(Idx)
51386  , p_source_26 => l_array_source_26(Idx)
51387  , p_source_27 => l_array_source_27(Idx)
51388  , p_source_28 => l_array_source_28(Idx)
51389  , p_source_29 => l_array_source_29(Idx)
51390  , p_source_31 => l_array_source_31(Idx)
51391  , p_source_32 => l_array_source_32(Idx)
51392  , p_source_33 => l_array_source_33(Idx)
51393  , p_source_34 => l_array_source_34(Idx)
51394  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51395  );
51396 If(l_balance_type_code = 'A') THEN
51397   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51398 END IF;
51399 
51400 --
51401 
51402 
51403 --
51404 AcctLineType_52 (
51405  p_application_id  => p_application_id
51406  ,p_event_id     => l_event_id
51407  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51408  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51409  ,p_actual_flag => l_actual_flag
51410  ,p_balance_type_code => l_balance_type_code
51411  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51412  
51413  , p_source_9 => l_array_source_9(Idx)
51414  , p_source_13 => l_array_source_13(Idx)
51415  , p_source_15 => l_array_source_15(Idx)
51416  , p_source_17 => l_array_source_17(Idx)
51417  , p_source_19 => l_array_source_19(Idx)
51418  , p_source_21 => l_array_source_21(Idx)
51419  , p_source_22 => l_array_source_22(Idx)
51420  , p_source_23 => l_array_source_23(Idx)
51421  , p_source_24 => l_array_source_24(Idx)
51422  , p_source_25 => l_array_source_25(Idx)
51423  , p_source_26 => l_array_source_26(Idx)
51424  , p_source_27 => l_array_source_27(Idx)
51425  , p_source_28 => l_array_source_28(Idx)
51426  , p_source_29 => l_array_source_29(Idx)
51427  , p_source_31 => l_array_source_31(Idx)
51428  , p_source_32 => l_array_source_32(Idx)
51429  , p_source_33 => l_array_source_33(Idx)
51430  , p_source_34 => l_array_source_34(Idx)
51431  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51432  );
51433 If(l_balance_type_code = 'A') THEN
51434   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51435 END IF;
51436 
51437 --
51438 
51439 
51440 --
51441 AcctLineType_53 (
51442  p_application_id  => p_application_id
51443  ,p_event_id     => l_event_id
51444  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51445  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51446  ,p_actual_flag => l_actual_flag
51447  ,p_balance_type_code => l_balance_type_code
51448  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51449  
51450  , p_source_3 => l_array_source_3(Idx)
51451  , p_source_8 => l_array_source_8(Idx)
51452  , p_source_9 => l_array_source_9(Idx)
51453  , p_source_10 => l_array_source_10(Idx)
51454  , p_source_13 => l_array_source_13(Idx)
51455  , p_source_15 => l_array_source_15(Idx)
51456  , p_source_17 => l_array_source_17(Idx)
51457  , p_source_19 => l_array_source_19(Idx)
51458  , p_source_21 => l_array_source_21(Idx)
51459  , p_source_22 => l_array_source_22(Idx)
51460  , p_source_23 => l_array_source_23(Idx)
51461  , p_source_24 => l_array_source_24(Idx)
51462  , p_source_25 => l_array_source_25(Idx)
51463  , p_source_26 => l_array_source_26(Idx)
51464  , p_source_27 => l_array_source_27(Idx)
51465  , p_source_28 => l_array_source_28(Idx)
51466  , p_source_29 => l_array_source_29(Idx)
51467  , p_source_32 => l_array_source_32(Idx)
51468  , p_source_35 => l_array_source_35(Idx)
51469  , p_source_36 => l_array_source_36(Idx)
51470  , p_source_37 => l_array_source_37(Idx)
51471  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51472  );
51473 If(l_balance_type_code = 'A') THEN
51474   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51475 END IF;
51476 
51477 --
51478 
51479 
51480 --
51481 AcctLineType_54 (
51482  p_application_id  => p_application_id
51483  ,p_event_id     => l_event_id
51484  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51485  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51486  ,p_actual_flag => l_actual_flag
51487  ,p_balance_type_code => l_balance_type_code
51488  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51489  
51490  , p_source_3 => l_array_source_3(Idx)
51491  , p_source_9 => l_array_source_9(Idx)
51492  , p_source_10 => l_array_source_10(Idx)
51493  , p_source_11 => l_array_source_11(Idx)
51494  , p_source_13 => l_array_source_13(Idx)
51495  , p_source_15 => l_array_source_15(Idx)
51496  , p_source_17 => l_array_source_17(Idx)
51497  , p_source_19 => l_array_source_19(Idx)
51498  , p_source_21 => l_array_source_21(Idx)
51499  , p_source_22 => l_array_source_22(Idx)
51500  , p_source_23 => l_array_source_23(Idx)
51501  , p_source_24 => l_array_source_24(Idx)
51502  , p_source_25 => l_array_source_25(Idx)
51503  , p_source_26 => l_array_source_26(Idx)
51504  , p_source_27 => l_array_source_27(Idx)
51505  , p_source_28 => l_array_source_28(Idx)
51506  , p_source_29 => l_array_source_29(Idx)
51507  , p_source_32 => l_array_source_32(Idx)
51508  , p_source_35 => l_array_source_35(Idx)
51509  , p_source_36 => l_array_source_36(Idx)
51510  , p_source_37 => l_array_source_37(Idx)
51511  , p_source_38 => l_array_source_38(Idx)
51512  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51513  );
51514 If(l_balance_type_code = 'A') THEN
51515   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51516 END IF;
51517 
51518 --
51519 
51520 
51521 --
51522 AcctLineType_55 (
51523  p_application_id  => p_application_id
51524  ,p_event_id     => l_event_id
51525  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51526  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51527  ,p_actual_flag => l_actual_flag
51528  ,p_balance_type_code => l_balance_type_code
51529  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51530  
51531  , p_source_3 => l_array_source_3(Idx)
51532  , p_source_7 => l_array_source_7(Idx)
51533  , p_source_8 => l_array_source_8(Idx)
51534  , p_source_9 => l_array_source_9(Idx)
51535  , p_source_10 => l_array_source_10(Idx)
51536  , p_source_11 => l_array_source_11(Idx)
51537  , p_source_13 => l_array_source_13(Idx)
51538  , p_source_15 => l_array_source_15(Idx)
51539  , p_source_17 => l_array_source_17(Idx)
51540  , p_source_19 => l_array_source_19(Idx)
51541  , p_source_21 => l_array_source_21(Idx)
51542  , p_source_22 => l_array_source_22(Idx)
51543  , p_source_23 => l_array_source_23(Idx)
51544  , p_source_24 => l_array_source_24(Idx)
51545  , p_source_25 => l_array_source_25(Idx)
51546  , p_source_26 => l_array_source_26(Idx)
51547  , p_source_27 => l_array_source_27(Idx)
51548  , p_source_28 => l_array_source_28(Idx)
51549  , p_source_29 => l_array_source_29(Idx)
51550  , p_source_32 => l_array_source_32(Idx)
51551  , p_source_35 => l_array_source_35(Idx)
51552  , p_source_36 => l_array_source_36(Idx)
51553  , p_source_37 => l_array_source_37(Idx)
51554  , p_source_38 => l_array_source_38(Idx)
51555  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51556  );
51557 If(l_balance_type_code = 'A') THEN
51558   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51559 END IF;
51560 
51561 --
51562 
51563 
51564 --
51565 AcctLineType_56 (
51566  p_application_id  => p_application_id
51567  ,p_event_id     => l_event_id
51568  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51569  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51570  ,p_actual_flag => l_actual_flag
51571  ,p_balance_type_code => l_balance_type_code
51572  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51573  
51574  , p_source_3 => l_array_source_3(Idx)
51575  , p_source_9 => l_array_source_9(Idx)
51576  , p_source_10 => l_array_source_10(Idx)
51577  , p_source_11 => l_array_source_11(Idx)
51578  , p_source_13 => l_array_source_13(Idx)
51579  , p_source_15 => l_array_source_15(Idx)
51580  , p_source_17 => l_array_source_17(Idx)
51581  , p_source_19 => l_array_source_19(Idx)
51582  , p_source_21 => l_array_source_21(Idx)
51583  , p_source_22 => l_array_source_22(Idx)
51584  , p_source_23 => l_array_source_23(Idx)
51585  , p_source_24 => l_array_source_24(Idx)
51586  , p_source_25 => l_array_source_25(Idx)
51587  , p_source_26 => l_array_source_26(Idx)
51588  , p_source_27 => l_array_source_27(Idx)
51589  , p_source_28 => l_array_source_28(Idx)
51590  , p_source_29 => l_array_source_29(Idx)
51591  , p_source_32 => l_array_source_32(Idx)
51592  , p_source_35 => l_array_source_35(Idx)
51593  , p_source_36 => l_array_source_36(Idx)
51594  , p_source_37 => l_array_source_37(Idx)
51595  , p_source_39 => l_array_source_39(Idx)
51596  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51597  );
51598 If(l_balance_type_code = 'A') THEN
51599   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51600 END IF;
51601 
51602 --
51603 
51604 
51605 --
51606 AcctLineType_57 (
51607  p_application_id  => p_application_id
51608  ,p_event_id     => l_event_id
51609  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51610  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51611  ,p_actual_flag => l_actual_flag
51612  ,p_balance_type_code => l_balance_type_code
51613  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51614  
51615  , p_source_3 => l_array_source_3(Idx)
51616  , p_source_8 => l_array_source_8(Idx)
51617  , p_source_9 => l_array_source_9(Idx)
51618  , p_source_10 => l_array_source_10(Idx)
51619  , p_source_11 => l_array_source_11(Idx)
51620  , p_source_13 => l_array_source_13(Idx)
51621  , p_source_15 => l_array_source_15(Idx)
51622  , p_source_17 => l_array_source_17(Idx)
51623  , p_source_19 => l_array_source_19(Idx)
51624  , p_source_21 => l_array_source_21(Idx)
51625  , p_source_22 => l_array_source_22(Idx)
51626  , p_source_23 => l_array_source_23(Idx)
51627  , p_source_24 => l_array_source_24(Idx)
51628  , p_source_25 => l_array_source_25(Idx)
51629  , p_source_26 => l_array_source_26(Idx)
51630  , p_source_27 => l_array_source_27(Idx)
51631  , p_source_28 => l_array_source_28(Idx)
51632  , p_source_29 => l_array_source_29(Idx)
51633  , p_source_30 => l_array_source_30(Idx)
51634  , p_source_32 => l_array_source_32(Idx)
51635  , p_source_35 => l_array_source_35(Idx)
51636  , p_source_36 => l_array_source_36(Idx)
51637  , p_source_37 => l_array_source_37(Idx)
51638  , p_source_39 => l_array_source_39(Idx)
51639  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51640  );
51641 If(l_balance_type_code = 'A') THEN
51642   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51643 END IF;
51644 
51645 --
51646 
51647 
51648 --
51649 AcctLineType_58 (
51650  p_application_id  => p_application_id
51651  ,p_event_id     => l_event_id
51652  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51653  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51654  ,p_actual_flag => l_actual_flag
51655  ,p_balance_type_code => l_balance_type_code
51656  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51657  
51658  , p_source_3 => l_array_source_3(Idx)
51659  , p_source_7 => l_array_source_7(Idx)
51660  , p_source_8 => l_array_source_8(Idx)
51661  , p_source_9 => l_array_source_9(Idx)
51662  , p_source_10 => l_array_source_10(Idx)
51663  , p_source_11 => l_array_source_11(Idx)
51664  , p_source_13 => l_array_source_13(Idx)
51665  , p_source_15 => l_array_source_15(Idx)
51666  , p_source_17 => l_array_source_17(Idx)
51667  , p_source_19 => l_array_source_19(Idx)
51668  , p_source_21 => l_array_source_21(Idx)
51669  , p_source_22 => l_array_source_22(Idx)
51670  , p_source_23 => l_array_source_23(Idx)
51671  , p_source_24 => l_array_source_24(Idx)
51672  , p_source_25 => l_array_source_25(Idx)
51673  , p_source_26 => l_array_source_26(Idx)
51674  , p_source_27 => l_array_source_27(Idx)
51675  , p_source_28 => l_array_source_28(Idx)
51676  , p_source_29 => l_array_source_29(Idx)
51677  , p_source_32 => l_array_source_32(Idx)
51678  , p_source_35 => l_array_source_35(Idx)
51679  , p_source_36 => l_array_source_36(Idx)
51680  , p_source_37 => l_array_source_37(Idx)
51681  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51682  );
51683 If(l_balance_type_code = 'A') THEN
51684   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51685 END IF;
51686 
51687 --
51688 
51689 
51690 --
51691 AcctLineType_59 (
51692  p_application_id  => p_application_id
51693  ,p_event_id     => l_event_id
51694  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51695  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51696  ,p_actual_flag => l_actual_flag
51697  ,p_balance_type_code => l_balance_type_code
51698  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51699  
51700  , p_source_3 => l_array_source_3(Idx)
51701  , p_source_8 => l_array_source_8(Idx)
51702  , p_source_9 => l_array_source_9(Idx)
51703  , p_source_10 => l_array_source_10(Idx)
51704  , p_source_13 => l_array_source_13(Idx)
51705  , p_source_15 => l_array_source_15(Idx)
51706  , p_source_17 => l_array_source_17(Idx)
51707  , p_source_19 => l_array_source_19(Idx)
51708  , p_source_21 => l_array_source_21(Idx)
51709  , p_source_22 => l_array_source_22(Idx)
51710  , p_source_23 => l_array_source_23(Idx)
51711  , p_source_24 => l_array_source_24(Idx)
51712  , p_source_25 => l_array_source_25(Idx)
51713  , p_source_26 => l_array_source_26(Idx)
51714  , p_source_27 => l_array_source_27(Idx)
51715  , p_source_28 => l_array_source_28(Idx)
51716  , p_source_29 => l_array_source_29(Idx)
51717  , p_source_32 => l_array_source_32(Idx)
51718  , p_source_35 => l_array_source_35(Idx)
51719  , p_source_36 => l_array_source_36(Idx)
51720  , p_source_37 => l_array_source_37(Idx)
51721  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51722  );
51723 If(l_balance_type_code = 'A') THEN
51724   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51725 END IF;
51726 
51727 --
51728 
51729 
51730 --
51731 AcctLineType_60 (
51732  p_application_id  => p_application_id
51733  ,p_event_id     => l_event_id
51734  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51735  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51736  ,p_actual_flag => l_actual_flag
51737  ,p_balance_type_code => l_balance_type_code
51738  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51739  
51740  , p_source_3 => l_array_source_3(Idx)
51741  , p_source_9 => l_array_source_9(Idx)
51742  , p_source_10 => l_array_source_10(Idx)
51743  , p_source_13 => l_array_source_13(Idx)
51744  , p_source_15 => l_array_source_15(Idx)
51745  , p_source_17 => l_array_source_17(Idx)
51746  , p_source_19 => l_array_source_19(Idx)
51747  , p_source_21 => l_array_source_21(Idx)
51748  , p_source_22 => l_array_source_22(Idx)
51749  , p_source_23 => l_array_source_23(Idx)
51750  , p_source_24 => l_array_source_24(Idx)
51751  , p_source_25 => l_array_source_25(Idx)
51752  , p_source_26 => l_array_source_26(Idx)
51753  , p_source_27 => l_array_source_27(Idx)
51754  , p_source_28 => l_array_source_28(Idx)
51755  , p_source_29 => l_array_source_29(Idx)
51756  , p_source_32 => l_array_source_32(Idx)
51757  , p_source_35 => l_array_source_35(Idx)
51758  , p_source_36 => l_array_source_36(Idx)
51759  , p_source_37 => l_array_source_37(Idx)
51760  , p_source_40 => l_array_source_40(Idx)
51761  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51762  );
51763 If(l_balance_type_code = 'A') THEN
51764   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51765 END IF;
51766 
51767 --
51768 
51769 
51770 --
51771 AcctLineType_61 (
51772  p_application_id  => p_application_id
51773  ,p_event_id     => l_event_id
51774  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51775  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51776  ,p_actual_flag => l_actual_flag
51777  ,p_balance_type_code => l_balance_type_code
51778  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51779  
51780  , p_source_3 => l_array_source_3(Idx)
51781  , p_source_7 => l_array_source_7(Idx)
51782  , p_source_8 => l_array_source_8(Idx)
51783  , p_source_9 => l_array_source_9(Idx)
51784  , p_source_10 => l_array_source_10(Idx)
51785  , p_source_13 => l_array_source_13(Idx)
51786  , p_source_15 => l_array_source_15(Idx)
51787  , p_source_17 => l_array_source_17(Idx)
51788  , p_source_19 => l_array_source_19(Idx)
51789  , p_source_21 => l_array_source_21(Idx)
51790  , p_source_22 => l_array_source_22(Idx)
51791  , p_source_23 => l_array_source_23(Idx)
51792  , p_source_24 => l_array_source_24(Idx)
51793  , p_source_25 => l_array_source_25(Idx)
51794  , p_source_26 => l_array_source_26(Idx)
51795  , p_source_27 => l_array_source_27(Idx)
51796  , p_source_28 => l_array_source_28(Idx)
51797  , p_source_29 => l_array_source_29(Idx)
51798  , p_source_32 => l_array_source_32(Idx)
51799  , p_source_35 => l_array_source_35(Idx)
51800  , p_source_36 => l_array_source_36(Idx)
51801  , p_source_37 => l_array_source_37(Idx)
51802  , p_source_40 => l_array_source_40(Idx)
51803  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51804  );
51805 If(l_balance_type_code = 'A') THEN
51806   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51807 END IF;
51808 
51809 --
51810 
51811 
51812 --
51813 AcctLineType_62 (
51814  p_application_id  => p_application_id
51815  ,p_event_id     => l_event_id
51816  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51817  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51818  ,p_actual_flag => l_actual_flag
51819  ,p_balance_type_code => l_balance_type_code
51820  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51821  
51822  , p_source_9 => l_array_source_9(Idx)
51823  , p_source_13 => l_array_source_13(Idx)
51824  , p_source_15 => l_array_source_15(Idx)
51825  , p_source_17 => l_array_source_17(Idx)
51826  , p_source_19 => l_array_source_19(Idx)
51827  , p_source_21 => l_array_source_21(Idx)
51828  , p_source_22 => l_array_source_22(Idx)
51829  , p_source_23 => l_array_source_23(Idx)
51830  , p_source_24 => l_array_source_24(Idx)
51831  , p_source_25 => l_array_source_25(Idx)
51832  , p_source_26 => l_array_source_26(Idx)
51833  , p_source_27 => l_array_source_27(Idx)
51834  , p_source_28 => l_array_source_28(Idx)
51835  , p_source_29 => l_array_source_29(Idx)
51836  , p_source_31 => l_array_source_31(Idx)
51837  , p_source_32 => l_array_source_32(Idx)
51838  , p_source_34 => l_array_source_34(Idx)
51839  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51840  );
51841 If(l_balance_type_code = 'A') THEN
51842   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51843 END IF;
51844 
51845 --
51846 
51847 
51848 --
51849 AcctLineType_63 (
51850  p_application_id  => p_application_id
51851  ,p_event_id     => l_event_id
51852  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51853  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51854  ,p_actual_flag => l_actual_flag
51855  ,p_balance_type_code => l_balance_type_code
51856  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51857  
51858  , p_source_9 => l_array_source_9(Idx)
51859  , p_source_13 => l_array_source_13(Idx)
51860  , p_source_15 => l_array_source_15(Idx)
51861  , p_source_17 => l_array_source_17(Idx)
51862  , p_source_19 => l_array_source_19(Idx)
51863  , p_source_21 => l_array_source_21(Idx)
51864  , p_source_22 => l_array_source_22(Idx)
51865  , p_source_23 => l_array_source_23(Idx)
51866  , p_source_24 => l_array_source_24(Idx)
51867  , p_source_25 => l_array_source_25(Idx)
51868  , p_source_26 => l_array_source_26(Idx)
51869  , p_source_27 => l_array_source_27(Idx)
51870  , p_source_28 => l_array_source_28(Idx)
51871  , p_source_29 => l_array_source_29(Idx)
51872  , p_source_31 => l_array_source_31(Idx)
51873  , p_source_32 => l_array_source_32(Idx)
51874  , p_source_33 => l_array_source_33(Idx)
51875  , p_source_34 => l_array_source_34(Idx)
51876  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51877  );
51878 If(l_balance_type_code = 'A') THEN
51879   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51880 END IF;
51881 
51882 --
51883 
51884 
51885 --
51886 AcctLineType_64 (
51887  p_application_id  => p_application_id
51888  ,p_event_id     => l_event_id
51889  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51890  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51891  ,p_actual_flag => l_actual_flag
51892  ,p_balance_type_code => l_balance_type_code
51893  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51894  
51895  , p_source_9 => l_array_source_9(Idx)
51896  , p_source_13 => l_array_source_13(Idx)
51897  , p_source_15 => l_array_source_15(Idx)
51898  , p_source_17 => l_array_source_17(Idx)
51899  , p_source_19 => l_array_source_19(Idx)
51900  , p_source_21 => l_array_source_21(Idx)
51901  , p_source_22 => l_array_source_22(Idx)
51902  , p_source_23 => l_array_source_23(Idx)
51903  , p_source_24 => l_array_source_24(Idx)
51904  , p_source_25 => l_array_source_25(Idx)
51905  , p_source_26 => l_array_source_26(Idx)
51906  , p_source_27 => l_array_source_27(Idx)
51907  , p_source_28 => l_array_source_28(Idx)
51908  , p_source_29 => l_array_source_29(Idx)
51909  , p_source_31 => l_array_source_31(Idx)
51910  , p_source_32 => l_array_source_32(Idx)
51911  , p_source_33 => l_array_source_33(Idx)
51912  , p_source_34 => l_array_source_34(Idx)
51913  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51914  );
51915 If(l_balance_type_code = 'A') THEN
51916   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51917 END IF;
51918 
51919 --
51920 
51921 
51922 --
51923 AcctLineType_65 (
51924  p_application_id  => p_application_id
51925  ,p_event_id     => l_event_id
51926  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51927  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51928  ,p_actual_flag => l_actual_flag
51929  ,p_balance_type_code => l_balance_type_code
51930  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51931  
51932  , p_source_9 => l_array_source_9(Idx)
51933  , p_source_13 => l_array_source_13(Idx)
51934  , p_source_15 => l_array_source_15(Idx)
51935  , p_source_17 => l_array_source_17(Idx)
51936  , p_source_19 => l_array_source_19(Idx)
51937  , p_source_21 => l_array_source_21(Idx)
51938  , p_source_22 => l_array_source_22(Idx)
51939  , p_source_23 => l_array_source_23(Idx)
51940  , p_source_24 => l_array_source_24(Idx)
51941  , p_source_25 => l_array_source_25(Idx)
51942  , p_source_26 => l_array_source_26(Idx)
51943  , p_source_27 => l_array_source_27(Idx)
51944  , p_source_28 => l_array_source_28(Idx)
51945  , p_source_29 => l_array_source_29(Idx)
51946  , p_source_31 => l_array_source_31(Idx)
51947  , p_source_32 => l_array_source_32(Idx)
51948  , p_source_33 => l_array_source_33(Idx)
51949  , p_source_34 => l_array_source_34(Idx)
51950  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51951  );
51952 If(l_balance_type_code = 'A') THEN
51953   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51954 END IF;
51955 
51956 --
51957 
51958 
51959 --
51960 AcctLineType_66 (
51961  p_application_id  => p_application_id
51962  ,p_event_id     => l_event_id
51963  ,p_calculate_acctd_flag => l_calculate_acctd_flag
51964  ,p_calculate_g_l_flag => l_calculate_g_l_flag
51965  ,p_actual_flag => l_actual_flag
51966  ,p_balance_type_code => l_balance_type_code
51967  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
51968  
51969  , p_source_3 => l_array_source_3(Idx)
51970  , p_source_7 => l_array_source_7(Idx)
51971  , p_source_8 => l_array_source_8(Idx)
51972  , p_source_9 => l_array_source_9(Idx)
51973  , p_source_13 => l_array_source_13(Idx)
51974  , p_source_15 => l_array_source_15(Idx)
51975  , p_source_17 => l_array_source_17(Idx)
51976  , p_source_19 => l_array_source_19(Idx)
51977  , p_source_21 => l_array_source_21(Idx)
51978  , p_source_22 => l_array_source_22(Idx)
51979  , p_source_23 => l_array_source_23(Idx)
51980  , p_source_24 => l_array_source_24(Idx)
51981  , p_source_25 => l_array_source_25(Idx)
51982  , p_source_26 => l_array_source_26(Idx)
51983  , p_source_27 => l_array_source_27(Idx)
51984  , p_source_28 => l_array_source_28(Idx)
51985  , p_source_29 => l_array_source_29(Idx)
51986  , p_source_31 => l_array_source_31(Idx)
51987  , p_source_32 => l_array_source_32(Idx)
51988  , p_source_33 => l_array_source_33(Idx)
51989  , p_source_34 => l_array_source_34(Idx)
51990  , p_source_35 => l_array_source_35(Idx)
51991  , p_source_36 => l_array_source_36(Idx)
51992  , p_source_37 => l_array_source_37(Idx)
51993  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
51994  );
51995 If(l_balance_type_code = 'A') THEN
51996   l_actual_gain_loss_ref := l_gain_or_loss_ref;
51997 END IF;
51998 
51999 --
52000 
52001 
52002 --
52003 AcctLineType_67 (
52004  p_application_id  => p_application_id
52005  ,p_event_id     => l_event_id
52006  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52007  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52008  ,p_actual_flag => l_actual_flag
52009  ,p_balance_type_code => l_balance_type_code
52010  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52011  
52012  , p_source_3 => l_array_source_3(Idx)
52013  , p_source_9 => l_array_source_9(Idx)
52014  , p_source_13 => l_array_source_13(Idx)
52015  , p_source_15 => l_array_source_15(Idx)
52016  , p_source_17 => l_array_source_17(Idx)
52017  , p_source_19 => l_array_source_19(Idx)
52018  , p_source_21 => l_array_source_21(Idx)
52019  , p_source_22 => l_array_source_22(Idx)
52020  , p_source_23 => l_array_source_23(Idx)
52021  , p_source_24 => l_array_source_24(Idx)
52022  , p_source_25 => l_array_source_25(Idx)
52023  , p_source_26 => l_array_source_26(Idx)
52024  , p_source_27 => l_array_source_27(Idx)
52025  , p_source_28 => l_array_source_28(Idx)
52026  , p_source_29 => l_array_source_29(Idx)
52027  , p_source_31 => l_array_source_31(Idx)
52028  , p_source_32 => l_array_source_32(Idx)
52029  , p_source_33 => l_array_source_33(Idx)
52030  , p_source_34 => l_array_source_34(Idx)
52031  , p_source_35 => l_array_source_35(Idx)
52032  , p_source_36 => l_array_source_36(Idx)
52033  , p_source_37 => l_array_source_37(Idx)
52034  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52035  );
52036 If(l_balance_type_code = 'A') THEN
52037   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52038 END IF;
52039 
52040 --
52041 
52042 
52043 --
52044 AcctLineType_68 (
52045  p_application_id  => p_application_id
52046  ,p_event_id     => l_event_id
52047  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52048  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52049  ,p_actual_flag => l_actual_flag
52050  ,p_balance_type_code => l_balance_type_code
52051  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52052  
52053  , p_source_9 => l_array_source_9(Idx)
52054  , p_source_13 => l_array_source_13(Idx)
52055  , p_source_15 => l_array_source_15(Idx)
52056  , p_source_17 => l_array_source_17(Idx)
52057  , p_source_19 => l_array_source_19(Idx)
52058  , p_source_21 => l_array_source_21(Idx)
52059  , p_source_22 => l_array_source_22(Idx)
52060  , p_source_23 => l_array_source_23(Idx)
52061  , p_source_24 => l_array_source_24(Idx)
52062  , p_source_25 => l_array_source_25(Idx)
52063  , p_source_26 => l_array_source_26(Idx)
52064  , p_source_27 => l_array_source_27(Idx)
52065  , p_source_28 => l_array_source_28(Idx)
52066  , p_source_29 => l_array_source_29(Idx)
52067  , p_source_31 => l_array_source_31(Idx)
52068  , p_source_32 => l_array_source_32(Idx)
52069  , p_source_33 => l_array_source_33(Idx)
52070  , p_source_34 => l_array_source_34(Idx)
52071  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52072  );
52073 If(l_balance_type_code = 'A') THEN
52074   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52075 END IF;
52076 
52077 --
52078 
52079 
52080 --
52081 AcctLineType_69 (
52082  p_application_id  => p_application_id
52083  ,p_event_id     => l_event_id
52084  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52085  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52086  ,p_actual_flag => l_actual_flag
52087  ,p_balance_type_code => l_balance_type_code
52088  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52089  
52090  , p_source_9 => l_array_source_9(Idx)
52091  , p_source_13 => l_array_source_13(Idx)
52092  , p_source_15 => l_array_source_15(Idx)
52093  , p_source_17 => l_array_source_17(Idx)
52094  , p_source_19 => l_array_source_19(Idx)
52095  , p_source_21 => l_array_source_21(Idx)
52096  , p_source_22 => l_array_source_22(Idx)
52097  , p_source_23 => l_array_source_23(Idx)
52098  , p_source_24 => l_array_source_24(Idx)
52099  , p_source_25 => l_array_source_25(Idx)
52100  , p_source_26 => l_array_source_26(Idx)
52101  , p_source_27 => l_array_source_27(Idx)
52102  , p_source_28 => l_array_source_28(Idx)
52103  , p_source_29 => l_array_source_29(Idx)
52104  , p_source_31 => l_array_source_31(Idx)
52105  , p_source_32 => l_array_source_32(Idx)
52106  , p_source_33 => l_array_source_33(Idx)
52107  , p_source_34 => l_array_source_34(Idx)
52108  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52109  );
52110 If(l_balance_type_code = 'A') THEN
52111   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52112 END IF;
52113 
52114 --
52115 
52116 
52117 --
52118 AcctLineType_70 (
52119  p_application_id  => p_application_id
52120  ,p_event_id     => l_event_id
52121  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52122  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52123  ,p_actual_flag => l_actual_flag
52124  ,p_balance_type_code => l_balance_type_code
52125  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52126  
52127  , p_source_9 => l_array_source_9(Idx)
52128  , p_source_13 => l_array_source_13(Idx)
52129  , p_source_15 => l_array_source_15(Idx)
52130  , p_source_17 => l_array_source_17(Idx)
52131  , p_source_19 => l_array_source_19(Idx)
52132  , p_source_21 => l_array_source_21(Idx)
52133  , p_source_22 => l_array_source_22(Idx)
52134  , p_source_23 => l_array_source_23(Idx)
52135  , p_source_24 => l_array_source_24(Idx)
52136  , p_source_25 => l_array_source_25(Idx)
52137  , p_source_26 => l_array_source_26(Idx)
52138  , p_source_27 => l_array_source_27(Idx)
52139  , p_source_28 => l_array_source_28(Idx)
52140  , p_source_29 => l_array_source_29(Idx)
52141  , p_source_31 => l_array_source_31(Idx)
52142  , p_source_32 => l_array_source_32(Idx)
52143  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52144  );
52145 If(l_balance_type_code = 'A') THEN
52146   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52147 END IF;
52148 
52149 --
52150 
52151 
52152 --
52153 AcctLineType_71 (
52154  p_application_id  => p_application_id
52155  ,p_event_id     => l_event_id
52156  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52157  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52158  ,p_actual_flag => l_actual_flag
52159  ,p_balance_type_code => l_balance_type_code
52160  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52161  
52162  , p_source_9 => l_array_source_9(Idx)
52163  , p_source_13 => l_array_source_13(Idx)
52164  , p_source_15 => l_array_source_15(Idx)
52165  , p_source_17 => l_array_source_17(Idx)
52166  , p_source_19 => l_array_source_19(Idx)
52167  , p_source_21 => l_array_source_21(Idx)
52168  , p_source_22 => l_array_source_22(Idx)
52169  , p_source_23 => l_array_source_23(Idx)
52170  , p_source_24 => l_array_source_24(Idx)
52171  , p_source_25 => l_array_source_25(Idx)
52172  , p_source_26 => l_array_source_26(Idx)
52173  , p_source_27 => l_array_source_27(Idx)
52174  , p_source_28 => l_array_source_28(Idx)
52175  , p_source_29 => l_array_source_29(Idx)
52176  , p_source_31 => l_array_source_31(Idx)
52177  , p_source_32 => l_array_source_32(Idx)
52178  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52179  );
52180 If(l_balance_type_code = 'A') THEN
52181   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52182 END IF;
52183 
52184 --
52185 
52186 
52187 --
52188 AcctLineType_72 (
52189  p_application_id  => p_application_id
52190  ,p_event_id     => l_event_id
52191  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52192  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52193  ,p_actual_flag => l_actual_flag
52194  ,p_balance_type_code => l_balance_type_code
52195  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52196  
52197  , p_source_3 => l_array_source_3(Idx)
52198  , p_source_9 => l_array_source_9(Idx)
52199  , p_source_13 => l_array_source_13(Idx)
52200  , p_source_15 => l_array_source_15(Idx)
52201  , p_source_17 => l_array_source_17(Idx)
52202  , p_source_19 => l_array_source_19(Idx)
52203  , p_source_21 => l_array_source_21(Idx)
52204  , p_source_22 => l_array_source_22(Idx)
52205  , p_source_23 => l_array_source_23(Idx)
52206  , p_source_24 => l_array_source_24(Idx)
52207  , p_source_25 => l_array_source_25(Idx)
52208  , p_source_26 => l_array_source_26(Idx)
52209  , p_source_27 => l_array_source_27(Idx)
52210  , p_source_28 => l_array_source_28(Idx)
52211  , p_source_29 => l_array_source_29(Idx)
52212  , p_source_31 => l_array_source_31(Idx)
52213  , p_source_32 => l_array_source_32(Idx)
52214  , p_source_35 => l_array_source_35(Idx)
52215  , p_source_36 => l_array_source_36(Idx)
52216  , p_source_37 => l_array_source_37(Idx)
52217  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52218  );
52219 If(l_balance_type_code = 'A') THEN
52220   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52221 END IF;
52222 
52223 --
52224 
52225 
52226 --
52227 AcctLineType_73 (
52228  p_application_id  => p_application_id
52229  ,p_event_id     => l_event_id
52230  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52231  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52232  ,p_actual_flag => l_actual_flag
52233  ,p_balance_type_code => l_balance_type_code
52234  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52235  
52236  , p_source_3 => l_array_source_3(Idx)
52237  , p_source_7 => l_array_source_7(Idx)
52238  , p_source_8 => l_array_source_8(Idx)
52239  , p_source_9 => l_array_source_9(Idx)
52240  , p_source_13 => l_array_source_13(Idx)
52241  , p_source_15 => l_array_source_15(Idx)
52242  , p_source_17 => l_array_source_17(Idx)
52243  , p_source_19 => l_array_source_19(Idx)
52244  , p_source_21 => l_array_source_21(Idx)
52245  , p_source_22 => l_array_source_22(Idx)
52246  , p_source_23 => l_array_source_23(Idx)
52247  , p_source_24 => l_array_source_24(Idx)
52248  , p_source_25 => l_array_source_25(Idx)
52249  , p_source_26 => l_array_source_26(Idx)
52250  , p_source_27 => l_array_source_27(Idx)
52251  , p_source_28 => l_array_source_28(Idx)
52252  , p_source_29 => l_array_source_29(Idx)
52253  , p_source_31 => l_array_source_31(Idx)
52254  , p_source_32 => l_array_source_32(Idx)
52255  , p_source_35 => l_array_source_35(Idx)
52256  , p_source_36 => l_array_source_36(Idx)
52257  , p_source_37 => l_array_source_37(Idx)
52258  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52259  );
52260 If(l_balance_type_code = 'A') THEN
52261   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52262 END IF;
52263 
52264 --
52265 
52266 
52267 --
52268 AcctLineType_74 (
52269  p_application_id  => p_application_id
52270  ,p_event_id     => l_event_id
52271  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52272  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52273  ,p_actual_flag => l_actual_flag
52274  ,p_balance_type_code => l_balance_type_code
52275  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52276  
52277  , p_source_7 => l_array_source_7(Idx)
52278  , p_source_8 => l_array_source_8(Idx)
52279  , p_source_9 => l_array_source_9(Idx)
52280  , p_source_13 => l_array_source_13(Idx)
52281  , p_source_15 => l_array_source_15(Idx)
52282  , p_source_17 => l_array_source_17(Idx)
52283  , p_source_19 => l_array_source_19(Idx)
52284  , p_source_21 => l_array_source_21(Idx)
52285  , p_source_22 => l_array_source_22(Idx)
52286  , p_source_23 => l_array_source_23(Idx)
52287  , p_source_24 => l_array_source_24(Idx)
52288  , p_source_25 => l_array_source_25(Idx)
52289  , p_source_26 => l_array_source_26(Idx)
52290  , p_source_27 => l_array_source_27(Idx)
52291  , p_source_28 => l_array_source_28(Idx)
52292  , p_source_29 => l_array_source_29(Idx)
52293  , p_source_31 => l_array_source_31(Idx)
52294  , p_source_32 => l_array_source_32(Idx)
52295  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52296  );
52297 If(l_balance_type_code = 'A') THEN
52298   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52299 END IF;
52300 
52301 --
52302 
52303 
52304 --
52305 AcctLineType_75 (
52306  p_application_id  => p_application_id
52307  ,p_event_id     => l_event_id
52308  ,p_calculate_acctd_flag => l_calculate_acctd_flag
52309  ,p_calculate_g_l_flag => l_calculate_g_l_flag
52310  ,p_actual_flag => l_actual_flag
52311  ,p_balance_type_code => l_balance_type_code
52312  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
52313  
52314  , p_source_9 => l_array_source_9(Idx)
52315  , p_source_13 => l_array_source_13(Idx)
52316  , p_source_15 => l_array_source_15(Idx)
52317  , p_source_17 => l_array_source_17(Idx)
52318  , p_source_19 => l_array_source_19(Idx)
52319  , p_source_21 => l_array_source_21(Idx)
52320  , p_source_22 => l_array_source_22(Idx)
52321  , p_source_23 => l_array_source_23(Idx)
52322  , p_source_24 => l_array_source_24(Idx)
52323  , p_source_25 => l_array_source_25(Idx)
52324  , p_source_26 => l_array_source_26(Idx)
52325  , p_source_27 => l_array_source_27(Idx)
52326  , p_source_28 => l_array_source_28(Idx)
52327  , p_source_29 => l_array_source_29(Idx)
52328  , p_source_31 => l_array_source_31(Idx)
52329  , p_source_32 => l_array_source_32(Idx)
52330  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
52331  );
52332 If(l_balance_type_code = 'A') THEN
52333   l_actual_gain_loss_ref := l_gain_or_loss_ref;
52334 END IF;
52335 
52336 --
52337 
52338       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
52339       -- or secondary ledger that has different currency with primary
52340       -- or alc that is calculated by sla
52341       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
52342             (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'))
52343 
52344 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
52345 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
52346           AND (l_actual_flag = 'A')) THEN
52347         XLA_AE_LINES_PKG.CreateGainOrLossLines(
52348           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
52349          ,p_application_id   => p_application_id
52350          ,p_amb_context_code => 'DEFAULT'
52351          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
52352          ,p_event_class_code => C_EVENT_CLASS_CODE
52353          ,p_event_type_code  => C_EVENT_TYPE_CODE
52354          
52355          ,p_gain_ccid        => -1
52356          ,p_loss_ccid        => -1
52357 
52358          ,p_actual_flag      => l_actual_flag
52359          ,p_enc_flag         => null
52360          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
52361          ,p_enc_g_l_ref      => null
52362          );
52363       END IF;
52364    END IF;
52365 END IF;
52366 
52367    ELSE
52368       --
52369       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
52370       --
52371       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52372          trace
52373             (p_msg      => 'Trancaction revesal option is Y'
52374             ,p_level    => C_LEVEL_STATEMENT
52375             ,p_module   => l_log_module);
52376       END IF;
52377    END IF;
52378 
52379 END LOOP;
52380 l_result := XLA_AE_LINES_PKG.InsertLines ;
52381 end loop;
52382 close line_cur;
52383 
52384 
52385 --
52386 -- insert headers into xla_ae_headers_gt table
52387 --
52388 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
52389 
52390 -- insert into errors table here.
52391 
52392 END LOOP;
52393 
52394 --
52395 -- 4865292
52396 --
52397 -- Compare g_hdr_extract_count with event count in
52398 -- CreateHeadersAndLines.
52399 --
52400 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
52401 
52402 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52403    trace (p_msg     => '# rows extracted from header extract objects '
52404                     || ' (running total): '
52405                     || g_hdr_extract_count
52406          ,p_level   => C_LEVEL_STATEMENT
52407          ,p_module  => l_log_module);
52408 END IF;
52409 
52410 CLOSE header_cur;
52411 --
52412 
52413 --
52414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52415    trace
52416       (p_msg      => 'END of EventClass_87'
52417       ,p_level    => C_LEVEL_PROCEDURE
52418       ,p_module   => l_log_module);
52419 END IF;
52420 --
52421 RETURN l_result;
52422 EXCEPTION
52423 WHEN xla_exceptions_pkg.application_exception THEN
52424    
52425 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
52426 
52427    
52428 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
52429 
52430    RAISE;
52431 WHEN OTHERS THEN
52432    xla_exceptions_pkg.raise_message
52433       (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.EventClass_87');
52434 END EventClass_87;
52435 --
52436 
52437 ---------------------------------------
52438 --
52439 -- PRIVATE PROCEDURE
52440 --         insert_sources_88
52441 --
52442 ----------------------------------------
52443 --
52444 PROCEDURE insert_sources_88(
52445                                 p_target_ledger_id       IN NUMBER
52446                               , p_language               IN VARCHAR2
52447                               , p_sla_ledger_id          IN NUMBER
52448                               , p_pad_start_date         IN DATE
52449                               , p_pad_end_date           IN DATE
52450                          )
52451 IS
52452 
52453 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REQUISITION_ALL';
52454 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REQUISITION';
52455 p_apps_owner                   VARCHAR2(30);
52456 l_log_module                   VARCHAR2(240);
52457 BEGIN
52458 IF g_log_enabled THEN
52459       l_log_module := C_DEFAULT_MODULE||'.insert_sources_88';
52460 END IF;
52461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52462 
52463       trace
52464          (p_msg      => 'BEGIN of insert_sources_88'
52465          ,p_level    => C_LEVEL_PROCEDURE
52466          ,p_module   => l_log_module);
52467 
52468 END IF;
52469 
52470 -- select APPS owner
52471 SELECT oracle_username
52472   INTO p_apps_owner
52473   FROM fnd_oracle_userid
52474  WHERE read_only_flag = 'U'
52475 ;
52476 
52477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52478       trace
52479          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
52480                         ' - p_language = '||p_language||
52481                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
52482                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
52483                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
52484                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
52485          ,p_level    => C_LEVEL_STATEMENT
52486          ,p_module   => l_log_module);
52487 END IF;
52488 
52489 
52490 --
52491 INSERT INTO xla_diag_sources --hdr2
52492 (
52493         event_id
52494       , ledger_id
52495       , sla_ledger_id
52496       , description_language
52497       , object_name
52498       , object_type_code
52499       , line_number
52500       , source_application_id
52501       , source_type_code
52502       , source_code
52503       , source_value
52504       , source_meaning
52505       , created_by
52506       , creation_date
52507       , last_update_date
52508       , last_updated_by
52509       , last_update_login
52510       , program_update_date
52511       , program_application_id
52512       , program_id
52513       , request_id
52514 )
52515 SELECT
52516         event_id
52517       , p_target_ledger_id
52518       , p_sla_ledger_id
52519       , p_language
52520       , object_name
52521       , object_type_code
52522       , line_number
52523       , source_application_id
52524       , source_type_code
52525       , source_code
52526       , SUBSTR(source_value ,1,1996)
52527       , SUBSTR(source_meaning ,1,200)
52528       , xla_environment_pkg.g_Usr_Id
52529       , TRUNC(SYSDATE)
52530       , TRUNC(SYSDATE)
52531       , xla_environment_pkg.g_Usr_Id
52532       , xla_environment_pkg.g_Login_Id
52533       , TRUNC(SYSDATE)
52534       , xla_environment_pkg.g_Prog_Appl_Id
52535       , xla_environment_pkg.g_Prog_Id
52536       , xla_environment_pkg.g_Req_Id
52537   FROM (
52538        SELECT xet.event_id                  event_id
52539             , 0                          line_number
52540             , CASE r
52541                WHEN 1 THEN 'PO_REQ_EXTRACT_HEADER_V' 
52542                 WHEN 2 THEN 'PO_REQ_EXTRACT_HEADER_V' 
52543                 WHEN 3 THEN 'PO_REQ_EXTRACT_HEADER_V' 
52544                 WHEN 4 THEN 'PO_REQ_EXTRACT_HEADER_V' 
52545                 WHEN 5 THEN 'PO_REQ_EXTRACT_HEADER_V' 
52546                 
52547                ELSE null
52548               END                           object_name
52549             , CASE r
52550                 WHEN 1 THEN 'HEADER' 
52551                 WHEN 2 THEN 'HEADER' 
52552                 WHEN 3 THEN 'HEADER' 
52553                 WHEN 4 THEN 'HEADER' 
52554                 WHEN 5 THEN 'HEADER' 
52555                 
52556                 ELSE null
52557               END                           object_type_code
52558             , CASE r
52559                 WHEN 1 THEN '201' 
52560                 WHEN 2 THEN '201' 
52561                 WHEN 3 THEN '201' 
52562                 WHEN 4 THEN '201' 
52563                 WHEN 5 THEN '201' 
52564                 
52565                 ELSE null
52566               END                           source_application_id
52567             , 'S'             source_type_code
52568             , CASE r
52569                 WHEN 1 THEN 'DOCUMENT_TYPE' 
52570                 WHEN 2 THEN 'REQ_NUMBER' 
52571                 WHEN 3 THEN 'REQ_ID' 
52572                 WHEN 4 THEN 'ENCUMBRANCE_TYPE_ID' 
52573                 WHEN 5 THEN 'GL_DATE' 
52574                 
52575                 ELSE null
52576               END                           source_code
52577             , CASE r
52578                 WHEN 1 THEN TO_CHAR(h3.DOCUMENT_TYPE)
52579                 WHEN 2 THEN TO_CHAR(h3.REQ_NUMBER)
52580                 WHEN 3 THEN TO_CHAR(h3.REQ_ID)
52581                 WHEN 4 THEN TO_CHAR(h3.ENCUMBRANCE_TYPE_ID)
52582                 WHEN 5 THEN TO_CHAR(h3.GL_DATE)
52583                 
52584                 ELSE null
52585               END                           source_value
52586             , null              source_meaning
52587          FROM xla_events_gt     xet  
52588       , PO_REQ_EXTRACT_HEADER_V  h3
52589              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
52590          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
52591            AND xet.event_class_code = C_EVENT_CLASS_CODE
52592               AND h3.event_id = xet.event_id
52593 
52594 )
52595 ;
52596 --
52597 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52598 
52599       trace
52600          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
52601          ,p_level    => C_LEVEL_STATEMENT
52602          ,p_module   => l_log_module);
52603 
52604 END IF;
52605 --
52606 
52607 
52608 
52609 --
52610 INSERT INTO xla_diag_sources  --line2
52611 (
52612         event_id
52613       , ledger_id
52614       , sla_ledger_id
52615       , description_language
52616       , object_name
52617       , object_type_code
52618       , line_number
52619       , source_application_id
52620       , source_type_code
52621       , source_code
52622       , source_value
52623       , source_meaning
52624       , created_by
52625       , creation_date
52626       , last_update_date
52627       , last_updated_by
52628       , last_update_login
52629       , program_update_date
52630       , program_application_id
52631       , program_id
52632       , request_id
52633 )
52634 SELECT  event_id
52635       , p_target_ledger_id
52636       , p_sla_ledger_id
52637       , p_language
52638       , object_name
52639       , object_type_code
52640       , line_number
52641       , source_application_id
52642       , source_type_code
52643       , source_code
52644       , SUBSTR(source_value,1,1996)
52645       , SUBSTR(source_meaning ,1,200)
52646       , xla_environment_pkg.g_Usr_Id
52647       , TRUNC(SYSDATE)
52648       , TRUNC(SYSDATE)
52649       , xla_environment_pkg.g_Usr_Id
52650       , xla_environment_pkg.g_Login_Id
52651       , TRUNC(SYSDATE)
52652       , xla_environment_pkg.g_Prog_Appl_Id
52653       , xla_environment_pkg.g_Prog_Id
52654       , xla_environment_pkg.g_Req_Id
52655   FROM (
52656        SELECT xet.event_id                  event_id
52657             , l2.line_number                 line_number
52658             , CASE r
52659                WHEN 1 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52660                 WHEN 2 THEN 'FV_XLA_PO_REF_V' 
52661                 WHEN 3 THEN 'FV_XLA_PO_REF_V' 
52662                 WHEN 4 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52663                 WHEN 5 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52664                 WHEN 6 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52665                 WHEN 7 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52666                 WHEN 8 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52667                 WHEN 9 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52668                 WHEN 10 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52669                 WHEN 11 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52670                 WHEN 12 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52671                 WHEN 13 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52672                 WHEN 14 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52673                 WHEN 15 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52674                 WHEN 16 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52675                 WHEN 17 THEN 'PO_REQ_LINES_REF_V' 
52676                 WHEN 18 THEN 'PO_REQ_LINES_REF_V' 
52677                 WHEN 19 THEN 'PO_REQ_LINES_REF_V' 
52678                 WHEN 20 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52679                 WHEN 21 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52680                 WHEN 22 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52681                 WHEN 23 THEN 'PO_REQ_EXTRACT_DETAIL_V' 
52682                 
52683                ELSE null
52684               END                           object_name
52685             , CASE r
52686                 WHEN 1 THEN 'LINE' 
52687                 WHEN 2 THEN 'LINE' 
52688                 WHEN 3 THEN 'LINE' 
52689                 WHEN 4 THEN 'LINE' 
52690                 WHEN 5 THEN 'LINE' 
52691                 WHEN 6 THEN 'LINE' 
52692                 WHEN 7 THEN 'LINE' 
52693                 WHEN 8 THEN 'LINE' 
52694                 WHEN 9 THEN 'LINE' 
52695                 WHEN 10 THEN 'LINE' 
52696                 WHEN 11 THEN 'LINE' 
52697                 WHEN 12 THEN 'LINE' 
52698                 WHEN 13 THEN 'LINE' 
52699                 WHEN 14 THEN 'LINE' 
52700                 WHEN 15 THEN 'LINE' 
52701                 WHEN 16 THEN 'LINE' 
52702                 WHEN 17 THEN 'LINE' 
52703                 WHEN 18 THEN 'LINE' 
52704                 WHEN 19 THEN 'LINE' 
52705                 WHEN 20 THEN 'LINE' 
52706                 WHEN 21 THEN 'LINE' 
52707                 WHEN 22 THEN 'LINE' 
52708                 WHEN 23 THEN 'LINE' 
52709                 
52710                 ELSE null
52711               END                           object_type_code
52712             , CASE r
52713                 WHEN 1 THEN '201' 
52714                 WHEN 2 THEN '8901' 
52715                 WHEN 3 THEN '8901' 
52716                 WHEN 4 THEN '201' 
52717                 WHEN 5 THEN '201' 
52718                 WHEN 6 THEN '201' 
52719                 WHEN 7 THEN '201' 
52720                 WHEN 8 THEN '201' 
52721                 WHEN 9 THEN '201' 
52722                 WHEN 10 THEN '201' 
52723                 WHEN 11 THEN '201' 
52724                 WHEN 12 THEN '201' 
52725                 WHEN 13 THEN '201' 
52726                 WHEN 14 THEN '201' 
52727                 WHEN 15 THEN '201' 
52728                 WHEN 16 THEN '201' 
52729                 WHEN 17 THEN '201' 
52730                 WHEN 18 THEN '201' 
52731                 WHEN 19 THEN '201' 
52732                 WHEN 20 THEN '201' 
52733                 WHEN 21 THEN '201' 
52734                 WHEN 22 THEN '201' 
52735                 WHEN 23 THEN '201' 
52736                 
52737                 ELSE null
52738               END                           source_application_id
52739             , 'S'             source_type_code
52740             , CASE r
52741                 WHEN 1 THEN 'JE_LINE_DESCRIPTION' 
52742                 WHEN 2 THEN 'FEDERAL_FUND_CATEGORY' 
52743                 WHEN 3 THEN 'FEDERAL_FUND_EXPIRED_STATUS' 
52744                 WHEN 4 THEN 'BUDGET_ACCOUNT' 
52745                 WHEN 5 THEN 'MAIN_OR_BACKING_CODE' 
52746                 WHEN 6 THEN 'ACCOUNTING_REVERSAL_FLAG' 
52747                 WHEN 7 THEN 'DISTRIBUTION_LINK_TYPE' 
52748                 WHEN 8 THEN 'APPLIED_TO_APPL_ID' 
52749                 WHEN 9 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
52750                 WHEN 10 THEN 'APPLIED_TO_ENTITY_CODE' 
52751                 WHEN 11 THEN 'APPLIED_TO_DIST_ID_1' 
52752                 WHEN 12 THEN 'APPLIED_TO_HEADER_ID_1' 
52753                 WHEN 13 THEN 'ENTERED_AMT' 
52754                 WHEN 14 THEN 'CURRENCY_CODE' 
52755                 WHEN 15 THEN 'ACCOUNTED_AMT' 
52756                 WHEN 16 THEN 'JFMIP_REFERENCE' 
52757                 WHEN 17 THEN 'CURRENCY_CONVERSION_DATE' 
52758                 WHEN 18 THEN 'CURRENCY_CONVERSION_RATE' 
52759                 WHEN 19 THEN 'CURRENCY_CONVERSION_TYPE' 
52760                 WHEN 20 THEN 'REQ_DISTRIBUTION_ID' 
52761                 WHEN 21 THEN 'REQ_ENCUM_UPG_OPTION' 
52762                 WHEN 22 THEN 'REQ_UPG_ENC_TYPE_ID' 
52763                 WHEN 23 THEN 'ADJUSTMENT_STATUS' 
52764                 
52765                 ELSE null
52766               END                           source_code
52767             , CASE r
52768                 WHEN 1 THEN TO_CHAR(l2.JE_LINE_DESCRIPTION)
52769                 WHEN 2 THEN TO_CHAR(l1.FEDERAL_FUND_CATEGORY)
52770                 WHEN 3 THEN TO_CHAR(l1.FEDERAL_FUND_EXPIRED_STATUS)
52771                 WHEN 4 THEN TO_CHAR(l2.BUDGET_ACCOUNT)
52772                 WHEN 5 THEN TO_CHAR(l2.MAIN_OR_BACKING_CODE)
52773                 WHEN 6 THEN TO_CHAR(l2.ACCOUNTING_REVERSAL_FLAG)
52774                 WHEN 7 THEN TO_CHAR(l2.DISTRIBUTION_LINK_TYPE)
52775                 WHEN 8 THEN TO_CHAR(l2.APPLIED_TO_APPL_ID)
52776                 WHEN 9 THEN TO_CHAR(l2.APPLIED_TO_DIST_LINK_TYPE)
52777                 WHEN 10 THEN TO_CHAR(l2.APPLIED_TO_ENTITY_CODE)
52778                 WHEN 11 THEN TO_CHAR(l2.APPLIED_TO_DIST_ID_1)
52779                 WHEN 12 THEN TO_CHAR(l2.APPLIED_TO_HEADER_ID_1)
52780                 WHEN 13 THEN TO_CHAR(l2.ENTERED_AMT)
52781                 WHEN 14 THEN TO_CHAR(l2.CURRENCY_CODE)
52782                 WHEN 15 THEN TO_CHAR(l2.ACCOUNTED_AMT)
52783                 WHEN 16 THEN TO_CHAR(l2.JFMIP_REFERENCE)
52784                 WHEN 17 THEN TO_CHAR(l4.CURRENCY_CONVERSION_DATE)
52785                 WHEN 18 THEN TO_CHAR(l4.CURRENCY_CONVERSION_RATE)
52786                 WHEN 19 THEN TO_CHAR(l4.CURRENCY_CONVERSION_TYPE)
52787                 WHEN 20 THEN TO_CHAR(l2.REQ_DISTRIBUTION_ID)
52788                 WHEN 21 THEN TO_CHAR(l2.REQ_ENCUM_UPG_OPTION)
52789                 WHEN 22 THEN TO_CHAR(l2.REQ_UPG_ENC_TYPE_ID)
52790                 WHEN 23 THEN TO_CHAR(l2.ADJUSTMENT_STATUS)
52791                 
52792                 ELSE null
52793               END                           source_value
52794             , null              source_meaning
52795          FROM  xla_events_gt     xet  
52796         , FV_XLA_PO_REF_V  l1
52797         , PO_REQ_EXTRACT_DETAIL_V  l2
52798         , PO_REQ_LINES_REF_V  l4
52799             , (select rownum r from all_objects where rownum <= 23 and owner = p_apps_owner)
52800         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
52801           AND xet.event_class_code = C_EVENT_CLASS_CODE
52802             AND l2.event_id          = xet.event_id
52803  AND l1.federal_event_id (+) =l2.event_id  and l1.federal_line_number (+) =l2.line_number AND l2.req_line_id = l4.req_line_id (+) 
52804 )
52805 ;
52806 --
52807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
52808 
52809       trace
52810          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
52811          ,p_level    => C_LEVEL_STATEMENT
52812          ,p_module   => l_log_module);
52813 
52814 END IF;
52815 
52816 
52817 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52818       trace
52819          (p_msg      => 'END of insert_sources_88'
52820          ,p_level    => C_LEVEL_PROCEDURE
52821          ,p_module   => l_log_module);
52822 END IF;
52823 EXCEPTION
52824   WHEN xla_exceptions_pkg.application_exception THEN
52825       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
52826             trace
52827                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
52828                ,p_level    => C_LEVEL_EXCEPTION
52829                ,p_module   => l_log_module);
52830       END IF;
52831       RAISE;
52832   WHEN OTHERS THEN
52833       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
52834             trace
52835                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
52836                ,p_level    => C_LEVEL_EXCEPTION
52837                ,p_module   => l_log_module);
52838        END IF;
52839        xla_exceptions_pkg.raise_message
52840            (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.insert_sources_88');
52841 END insert_sources_88;
52842 --
52843 
52844 ---------------------------------------
52845 --
52846 -- PRIVATE FUNCTION
52847 --         EventClass_88
52848 --
52849 ----------------------------------------
52850 --
52851 FUNCTION EventClass_88
52852        (p_application_id         IN NUMBER
52853        ,p_base_ledger_id         IN NUMBER
52854        ,p_target_ledger_id       IN NUMBER
52855        ,p_language               IN VARCHAR2
52856        ,p_currency_code          IN VARCHAR2
52857        ,p_sla_ledger_id          IN NUMBER
52858        ,p_pad_start_date         IN DATE
52859        ,p_pad_end_date           IN DATE
52860        ,p_primary_ledger_id      IN NUMBER)
52861 RETURN BOOLEAN IS
52862 --
52863 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REQUISITION_ALL';
52864 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REQUISITION';
52865 
52866 l_calculate_acctd_flag   VARCHAR2(1) :='N';
52867 l_calculate_g_l_flag     VARCHAR2(1) :='N';
52868 --
52869 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52870 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52871 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
52872 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
52873 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52874 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
52875 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
52876 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52877 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
52878 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
52879 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52880 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52881 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52882 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
52883 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
52884 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
52885 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
52886 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
52887 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
52888 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
52889 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
52890 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
52891 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
52892 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
52893 
52894 l_event_id                             NUMBER;
52895 l_previous_event_id                    NUMBER;
52896 l_first_event_id                       NUMBER;
52897 l_last_event_id                        NUMBER;
52898 
52899 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
52900 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
52901 --
52902 --
52903 l_result                    BOOLEAN := TRUE;
52904 l_rows                      NUMBER  := 1000;
52905 l_event_type_name           VARCHAR2(80) := 'All';
52906 l_event_class_name          VARCHAR2(80) := 'Requisition';
52907 l_description               VARCHAR2(4000);
52908 l_transaction_reversal      NUMBER;
52909 l_ae_header_id              NUMBER;
52910 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
52911 l_log_module                VARCHAR2(240);
52912 --
52913 l_acct_reversal_source      VARCHAR2(30);
52914 l_trx_reversal_source       VARCHAR2(30);
52915 
52916 l_continue_with_lines       BOOLEAN := TRUE;
52917 --
52918 l_acc_rev_gl_date_source    DATE;                      -- 4262811
52919 --
52920 type t_array_event_id is table of number index by binary_integer;
52921 
52922 l_rec_array_event                    t_rec_array_event;
52923 l_null_rec_array_event               t_rec_array_event;
52924 l_array_ae_header_id                 xla_number_array_type;
52925 l_actual_flag                        VARCHAR2(1) := NULL;
52926 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
52927 l_balance_type_code                  VARCHAR2(1) :=NULL;
52928 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
52929 
52930 --
52931 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
52932 --
52933 
52934 TYPE t_array_source_5 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.DOCUMENT_TYPE%TYPE INDEX BY BINARY_INTEGER;
52935 TYPE t_array_source_6 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.REQ_NUMBER%TYPE INDEX BY BINARY_INTEGER;
52936 TYPE t_array_source_44 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.REQ_ID%TYPE INDEX BY BINARY_INTEGER;
52937 TYPE t_array_source_48 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
52938 TYPE t_array_source_49 IS TABLE OF PO_REQ_EXTRACT_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
52939 
52940 TYPE t_array_source_3 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.JE_LINE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
52941 TYPE t_array_source_7 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_FUND_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
52942 TYPE t_array_source_8 IS TABLE OF FV_XLA_PO_REF_V.FEDERAL_FUND_EXPIRED_STATUS%TYPE INDEX BY BINARY_INTEGER;
52943 TYPE t_array_source_9 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
52944 TYPE t_array_source_13 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.MAIN_OR_BACKING_CODE%TYPE INDEX BY BINARY_INTEGER;
52945 TYPE t_array_source_15 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ACCOUNTING_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
52946 TYPE t_array_source_17 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
52947 TYPE t_array_source_21 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
52948 TYPE t_array_source_22 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
52949 TYPE t_array_source_23 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
52950 TYPE t_array_source_24 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_DIST_ID_1%TYPE INDEX BY BINARY_INTEGER;
52951 TYPE t_array_source_25 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.APPLIED_TO_HEADER_ID_1%TYPE INDEX BY BINARY_INTEGER;
52952 TYPE t_array_source_26 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
52953 TYPE t_array_source_27 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
52954 TYPE t_array_source_28 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ACCOUNTED_AMT%TYPE INDEX BY BINARY_INTEGER;
52955 TYPE t_array_source_31 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.JFMIP_REFERENCE%TYPE INDEX BY BINARY_INTEGER;
52956 TYPE t_array_source_35 IS TABLE OF PO_REQ_LINES_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
52957 TYPE t_array_source_36 IS TABLE OF PO_REQ_LINES_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
52958 TYPE t_array_source_37 IS TABLE OF PO_REQ_LINES_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
52959 TYPE t_array_source_43 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.REQ_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
52960 TYPE t_array_source_45 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.REQ_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
52961 TYPE t_array_source_46 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.REQ_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
52962 TYPE t_array_source_47 IS TABLE OF PO_REQ_EXTRACT_DETAIL_V.ADJUSTMENT_STATUS%TYPE INDEX BY BINARY_INTEGER;
52963 
52964 l_array_source_5              t_array_source_5;
52965 l_array_source_6              t_array_source_6;
52966 l_array_source_44              t_array_source_44;
52967 l_array_source_48              t_array_source_48;
52968 l_array_source_49              t_array_source_49;
52969 
52970 l_array_source_3      t_array_source_3;
52971 l_array_source_7      t_array_source_7;
52972 l_array_source_8      t_array_source_8;
52973 l_array_source_9      t_array_source_9;
52974 l_array_source_13      t_array_source_13;
52975 l_array_source_15      t_array_source_15;
52976 l_array_source_17      t_array_source_17;
52977 l_array_source_21      t_array_source_21;
52978 l_array_source_22      t_array_source_22;
52979 l_array_source_23      t_array_source_23;
52980 l_array_source_24      t_array_source_24;
52981 l_array_source_25      t_array_source_25;
52982 l_array_source_26      t_array_source_26;
52983 l_array_source_27      t_array_source_27;
52984 l_array_source_28      t_array_source_28;
52985 l_array_source_31      t_array_source_31;
52986 l_array_source_35      t_array_source_35;
52987 l_array_source_36      t_array_source_36;
52988 l_array_source_37      t_array_source_37;
52989 l_array_source_43      t_array_source_43;
52990 l_array_source_45      t_array_source_45;
52991 l_array_source_46      t_array_source_46;
52992 l_array_source_47      t_array_source_47;
52993 
52994 --
52995 CURSOR header_cur
52996 IS
52997 SELECT /*+ leading(xet) cardinality(xet,1) */
52998 -- Event Class Code: REQUISITION
52999     xet.entity_id
53000    ,xet.legal_entity_id
53001    ,xet.entity_code
53002    ,xet.transaction_number
53003    ,xet.event_id
53004    ,xet.event_class_code
53005    ,xet.event_type_code
53006    ,xet.event_number
53007    ,xet.event_date
53008    ,xet.transaction_date
53009    ,xet.reference_num_1
53010    ,xet.reference_num_2
53011    ,xet.reference_num_3
53012    ,xet.reference_num_4
53013    ,xet.reference_char_1
53014    ,xet.reference_char_2
53015    ,xet.reference_char_3
53016    ,xet.reference_char_4
53017    ,xet.reference_date_1
53018    ,xet.reference_date_2
53019    ,xet.reference_date_3
53020    ,xet.reference_date_4
53021    ,xet.event_created_by
53022    ,xet.budgetary_control_flag 
53023   , h3.DOCUMENT_TYPE    source_5
53024   , h3.REQ_NUMBER    source_6
53025   , h3.REQ_ID    source_44
53026   , h3.ENCUMBRANCE_TYPE_ID    source_48
53027   , h3.GL_DATE    source_49
53028   FROM xla_events_gt     xet 
53029   , PO_REQ_EXTRACT_HEADER_V  h3
53030  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
53031    and xet.event_class_code = C_EVENT_CLASS_CODE
53032    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
53033 
53034  ORDER BY event_id
53035 ;
53036 
53037 
53038 --
53039 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
53040 IS
53041 SELECT  /*+ leading(xet) cardinality(xet,1) */
53042 -- Event Class Code: REQUISITION
53043     xet.entity_id
53044    ,xet.legal_entity_id
53045    ,xet.entity_code
53046    ,xet.transaction_number
53047    ,xet.event_id
53048    ,xet.event_class_code
53049    ,xet.event_type_code
53050    ,xet.event_number
53051    ,xet.event_date
53052    ,xet.transaction_date
53053    ,xet.reference_num_1
53054    ,xet.reference_num_2
53055    ,xet.reference_num_3
53056    ,xet.reference_num_4
53057    ,xet.reference_char_1
53058    ,xet.reference_char_2
53059    ,xet.reference_char_3
53060    ,xet.reference_char_4
53061    ,xet.reference_date_1
53062    ,xet.reference_date_2
53063    ,xet.reference_date_3
53064    ,xet.reference_date_4
53065    ,xet.event_created_by
53066    ,xet.budgetary_control_flag
53067  , l2.LINE_NUMBER  
53068   , l2.JE_LINE_DESCRIPTION    source_3
53069   , l1.FEDERAL_FUND_CATEGORY    source_7
53070   , l1.FEDERAL_FUND_EXPIRED_STATUS    source_8
53071   , l2.BUDGET_ACCOUNT    source_9
53072   , l2.MAIN_OR_BACKING_CODE    source_13
53073   , l2.ACCOUNTING_REVERSAL_FLAG    source_15
53074   , l2.DISTRIBUTION_LINK_TYPE    source_17
53075   , l2.APPLIED_TO_APPL_ID    source_21
53076   , l2.APPLIED_TO_DIST_LINK_TYPE    source_22
53077   , l2.APPLIED_TO_ENTITY_CODE    source_23
53078   , l2.APPLIED_TO_DIST_ID_1    source_24
53079   , l2.APPLIED_TO_HEADER_ID_1    source_25
53080   , l2.ENTERED_AMT    source_26
53081   , l2.CURRENCY_CODE    source_27
53082   , l2.ACCOUNTED_AMT    source_28
53083   , l2.JFMIP_REFERENCE    source_31
53084   , l4.CURRENCY_CONVERSION_DATE    source_35
53085   , l4.CURRENCY_CONVERSION_RATE    source_36
53086   , l4.CURRENCY_CONVERSION_TYPE    source_37
53087   , l2.REQ_DISTRIBUTION_ID    source_43
53088   , l2.REQ_ENCUM_UPG_OPTION    source_45
53089   , l2.REQ_UPG_ENC_TYPE_ID    source_46
53090   , l2.ADJUSTMENT_STATUS    source_47
53091   FROM xla_events_gt     xet 
53092   , FV_XLA_PO_REF_V  l1
53093   , PO_REQ_EXTRACT_DETAIL_V  l2
53094   , PO_REQ_LINES_REF_V  l4
53095  WHERE xet.event_id between x_first_event_id and x_last_event_id
53096    and xet.event_date between p_pad_start_date and p_pad_end_date
53097    and xet.event_class_code = C_EVENT_CLASS_CODE
53098    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
53099  AND l1.Federal_Event_id (+) =l2.event_id  AND l1.federal_line_number (+) =l2.line_number AND l2.req_line_id = l4.req_line_id (+) ;
53100 
53101 --
53102 BEGIN
53103 IF g_log_enabled THEN
53104    l_log_module := C_DEFAULT_MODULE||'.EventClass_88';
53105 END IF;
53106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53107    trace
53108       (p_msg      => 'BEGIN of EventClass_88'
53109       ,p_level    => C_LEVEL_PROCEDURE
53110       ,p_module   => l_log_module);
53111 END IF;
53112 
53113 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53114    trace
53115       (p_msg      => 'p_application_id = '||p_application_id||
53116                      ' - p_base_ledger_id = '||p_base_ledger_id||
53117                      ' - p_target_ledger_id  = '||p_target_ledger_id||
53118                      ' - p_language = '||p_language||
53119                      ' - p_currency_code = '||p_currency_code||
53120                      ' - p_sla_ledger_id = '||p_sla_ledger_id
53121       ,p_level    => C_LEVEL_STATEMENT
53122       ,p_module   => l_log_module);
53123 END IF;
53124 --
53125 -- initialze arrays
53126 --
53127 g_array_event.DELETE;
53128 l_rec_array_event := l_null_rec_array_event;
53129 --
53130 --------------------------------------
53131 -- 4262811 Initialze MPA Line Number
53132 --------------------------------------
53133 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
53134 
53135 --
53136 
53137 --
53138 OPEN header_cur;
53139 --
53140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53141    trace
53142    (p_msg      => 'SQL - FETCH header_cur'
53143    ,p_level    => C_LEVEL_STATEMENT
53144    ,p_module   => l_log_module);
53145 END IF;
53146 --
53147 LOOP
53148 FETCH header_cur BULK COLLECT INTO
53149         l_array_entity_id
53150       , l_array_legal_entity_id
53151       , l_array_entity_code
53152       , l_array_transaction_num
53153       , l_array_event_id
53154       , l_array_class_code
53155       , l_array_event_type
53156       , l_array_event_number
53157       , l_array_event_date
53158       , l_array_transaction_date
53159       , l_array_reference_num_1
53160       , l_array_reference_num_2
53161       , l_array_reference_num_3
53162       , l_array_reference_num_4
53163       , l_array_reference_char_1
53164       , l_array_reference_char_2
53165       , l_array_reference_char_3
53166       , l_array_reference_char_4
53167       , l_array_reference_date_1
53168       , l_array_reference_date_2
53169       , l_array_reference_date_3
53170       , l_array_reference_date_4
53171       , l_array_event_created_by
53172       , l_array_budgetary_control_flag 
53173       , l_array_source_5
53174       , l_array_source_6
53175       , l_array_source_44
53176       , l_array_source_48
53177       , l_array_source_49
53178       LIMIT l_rows;
53179 --
53180 IF (C_LEVEL_EVENT >= g_log_level) THEN
53181    trace
53182    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
53183    ,p_level    => C_LEVEL_EVENT
53184    ,p_module   => l_log_module);
53185 END IF;
53186 --
53187 EXIT WHEN l_array_entity_id.COUNT = 0;
53188 
53189 -- initialize arrays
53190 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
53191 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
53192 
53193 --
53194 -- Bug 4458708
53195 --
53196 XLA_AE_LINES_PKG.g_LineNumber := 0;
53197 
53198 
53199 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
53200 g_last_hdr_idx := l_array_event_id.LAST;
53201 --
53202 -- loop for the headers. Each iteration is for each header extract row
53203 -- fetched in header cursor
53204 --
53205 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
53206 
53207 --
53208 -- set event info as cache for other routines to refer event attributes
53209 --
53210 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
53211    (p_application_id           => p_application_id
53212    ,p_primary_ledger_id        => p_primary_ledger_id
53213    ,p_base_ledger_id           => p_base_ledger_id
53214    ,p_target_ledger_id         => p_target_ledger_id
53215    ,p_entity_id                => l_array_entity_id(hdr_idx)
53216    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
53217    ,p_entity_code              => l_array_entity_code(hdr_idx)
53218    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
53219    ,p_event_id                 => l_array_event_id(hdr_idx)
53220    ,p_event_class_code         => l_array_class_code(hdr_idx)
53221    ,p_event_type_code          => l_array_event_type(hdr_idx)
53222    ,p_event_number             => l_array_event_number(hdr_idx)
53223    ,p_event_date               => l_array_event_date(hdr_idx)
53224    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
53225    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
53226    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
53227    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
53228    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
53229    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
53230    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
53231    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
53232    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
53233    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
53234    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
53235    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
53236    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
53237    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
53238    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
53239 
53240 --
53241 -- set the status of entry to C_VALID (0)
53242 --
53243 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
53244 
53245 --
53246 -- initialize a row for ae header
53247 --
53248 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
53249 
53250 l_event_id := l_array_event_id(hdr_idx);
53251 
53252 --
53253 -- storing the hdr_idx for event. May be used by line cursor.
53254 --
53255 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
53256 
53257 --
53258 -- store sources from header extract. This can be improved to
53259 -- store only those sources from header extract that may be used in lines
53260 --
53261 
53262 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
53263 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
53264 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
53265 g_array_event(l_event_id).array_value_num('source_48') := l_array_source_48(hdr_idx);
53266 g_array_event(l_event_id).array_value_date('source_49') := l_array_source_49(hdr_idx);
53267 
53268 --
53269 -- initilaize the status of ae headers for diffrent balance types
53270 -- the status is initialised to C_NOT_CREATED (2)
53271 --
53272 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
53273 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
53274 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
53275 
53276 --
53277 -- call api to validate and store accounting attributes for header
53278 --
53279 
53280 ------------------------------------------------------------
53281 -- Accrual Reversal : to get date for Standard Source (NONE)
53282 ------------------------------------------------------------
53283 l_acc_rev_gl_date_source := NULL;
53284 
53285      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
53286       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_48');
53287      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
53288       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_49');
53289 
53290 
53291 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
53292 
53293 XLA_AE_HEADER_PKG.SetJeCategoryName;
53294 
53295 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
53296 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
53297 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
53298 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
53299 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
53300 
53301 
53302 --
53303 xla_ae_header_pkg.SetHdrDescription(
53304    p_description => Description_4 (
53305    p_application_id => p_application_id 
53306  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
53307  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
53308    )
53309 );
53310 --
53311 
53312 -- No header level analytical criteria
53313 
53314 --
53315 --accounting attribute enhancement, bug 3612931
53316 --
53317 l_trx_reversal_source := SUBSTR(NULL, 1,30);
53318 
53319 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
53320    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
53321 
53322    xla_accounting_err_pkg.build_message
53323       (p_appli_s_name            => 'XLA'
53324       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
53325       ,p_token_1                 => 'ACCT_ATTR_NAME'
53326       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
53327       ,p_token_2                 => 'PRODUCT_NAME'
53328       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
53329       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
53330       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
53331       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
53332 
53333 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
53334    --
53335    -- following sets the accounting attributes needed to reverse
53336    -- accounting for a distributeion
53337    --
53338    xla_ae_lines_pkg.SetTrxReversalAttrs
53339       (p_event_id              => l_event_id
53340       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
53341       ,p_trx_reversal_source   => l_trx_reversal_source);
53342 
53343 END IF;
53344 
53345 
53346 ----------------------------------------------------------------
53347 -- 4262811 -  update the header statuses to invalid in need be
53348 ----------------------------------------------------------------
53349 --
53350 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
53351 
53352 
53353   -----------------------------------------------
53354   -- No accrual reversal for the event class/type
53355   -----------------------------------------------
53356 ----------------------------------------------------------------
53357 
53358 --
53359 -- this ends the header loop iteration for one bulk fetch
53360 --
53361 END LOOP;
53362 
53363 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
53364 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
53365 
53366 --
53367 -- insert dummy rows into lines gt table that were created due to
53368 -- transaction reversals
53369 --
53370 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
53371    l_result := XLA_AE_LINES_PKG.InsertLines;
53372 END IF;
53373 
53374 --
53375 -- reset the temp_line_num for each set of events fetched from header
53376 -- cursor rather than doing it for each new event in line cursor
53377 -- Bug 3939231
53378 --
53379 xla_ae_lines_pkg.g_temp_line_num := 0;
53380 
53381 
53382 
53383 --
53384 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
53385 --
53386 --
53387 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53388 
53389       trace
53390          (p_msg      => 'SQL - FETCH line_cur'
53391          ,p_level    => C_LEVEL_STATEMENT
53392          ,p_module   => l_log_module);
53393 
53394 END IF;
53395 --
53396 --
53397 LOOP
53398   --
53399   FETCH line_cur BULK COLLECT INTO
53400         l_array_entity_id
53401       , l_array_legal_entity_id
53402       , l_array_entity_code
53403       , l_array_transaction_num
53404       , l_array_event_id
53405       , l_array_class_code
53406       , l_array_event_type
53407       , l_array_event_number
53408       , l_array_event_date
53409       , l_array_transaction_date
53410       , l_array_reference_num_1
53411       , l_array_reference_num_2
53412       , l_array_reference_num_3
53413       , l_array_reference_num_4
53414       , l_array_reference_char_1
53415       , l_array_reference_char_2
53416       , l_array_reference_char_3
53417       , l_array_reference_char_4
53418       , l_array_reference_date_1
53419       , l_array_reference_date_2
53420       , l_array_reference_date_3
53421       , l_array_reference_date_4
53422       , l_array_event_created_by
53423       , l_array_budgetary_control_flag
53424       , l_array_extract_line_num 
53425       , l_array_source_3
53426       , l_array_source_7
53427       , l_array_source_8
53428       , l_array_source_9
53429       , l_array_source_13
53430       , l_array_source_15
53431       , l_array_source_17
53432       , l_array_source_21
53433       , l_array_source_22
53434       , l_array_source_23
53435       , l_array_source_24
53436       , l_array_source_25
53437       , l_array_source_26
53438       , l_array_source_27
53439       , l_array_source_28
53440       , l_array_source_31
53441       , l_array_source_35
53442       , l_array_source_36
53443       , l_array_source_37
53444       , l_array_source_43
53445       , l_array_source_45
53446       , l_array_source_46
53447       , l_array_source_47
53448       LIMIT l_rows;
53449 
53450   --
53451   IF (C_LEVEL_EVENT >= g_log_level) THEN
53452             trace
53453                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
53454                ,p_level    => C_LEVEL_EVENT
53455                ,p_module   => l_log_module);
53456   END IF;
53457   --
53458   EXIT WHEN l_array_entity_id.count = 0;
53459 
53460   XLA_AE_LINES_PKG.g_rec_lines := null;
53461 
53462 --
53463 -- Bug 4458708
53464 --
53465 XLA_AE_LINES_PKG.g_LineNumber := 0;
53466 --
53467 --
53468 
53469 FOR Idx IN 1..l_array_event_id.count LOOP
53470    --
53471    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
53472    --
53473    l_event_id := l_array_event_id(idx);  -- 5648433
53474 
53475    --
53476    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
53477    --
53478 
53479    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
53480              (g_array_event(l_event_id).array_value_num('header_index'))
53481          ,'N'
53482          ) <> 'Y'
53483    THEN
53484       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53485          trace
53486             (p_msg      => 'Trancaction revesal option is not Y '
53487             ,p_level    => C_LEVEL_STATEMENT
53488             ,p_module   => l_log_module);
53489       END IF;
53490 
53491 --
53492 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
53493 --
53494 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
53495 --
53496 -- set event info as cache for other routines to refer event attributes
53497 --
53498 
53499 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
53500    l_previous_event_id := l_event_id;
53501 
53502    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
53503       (p_application_id           => p_application_id
53504       ,p_primary_ledger_id        => p_primary_ledger_id
53505       ,p_base_ledger_id           => p_base_ledger_id
53506       ,p_target_ledger_id         => p_target_ledger_id
53507       ,p_entity_id                => l_array_entity_id(Idx)
53508       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
53509       ,p_entity_code              => l_array_entity_code(Idx)
53510       ,p_transaction_num          => l_array_transaction_num(Idx)
53511       ,p_event_id                 => l_array_event_id(Idx)
53512       ,p_event_class_code         => l_array_class_code(Idx)
53513       ,p_event_type_code          => l_array_event_type(Idx)
53514       ,p_event_number             => l_array_event_number(Idx)
53515       ,p_event_date               => l_array_event_date(Idx)
53516       ,p_transaction_date         => l_array_transaction_date(Idx)
53517       ,p_reference_num_1          => l_array_reference_num_1(Idx)
53518       ,p_reference_num_2          => l_array_reference_num_2(Idx)
53519       ,p_reference_num_3          => l_array_reference_num_3(Idx)
53520       ,p_reference_num_4          => l_array_reference_num_4(Idx)
53521       ,p_reference_char_1         => l_array_reference_char_1(Idx)
53522       ,p_reference_char_2         => l_array_reference_char_2(Idx)
53523       ,p_reference_char_3         => l_array_reference_char_3(Idx)
53524       ,p_reference_char_4         => l_array_reference_char_4(Idx)
53525       ,p_reference_date_1         => l_array_reference_date_1(Idx)
53526       ,p_reference_date_2         => l_array_reference_date_2(Idx)
53527       ,p_reference_date_3         => l_array_reference_date_3(Idx)
53528       ,p_reference_date_4         => l_array_reference_date_4(Idx)
53529       ,p_event_created_by         => l_array_event_created_by(Idx)
53530       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
53531        --
53532 END IF;
53533 
53534 
53535 
53536 --
53537 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
53538 
53539 l_acct_reversal_source := SUBSTR(l_array_source_15(Idx), 1,30);
53540 
53541 IF l_continue_with_lines THEN
53542    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
53543       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
53544 
53545       xla_accounting_err_pkg.build_message
53546          (p_appli_s_name            => 'XLA'
53547          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
53548          ,p_token_1                 => 'LINE_NUMBER'
53549          ,p_value_1                 => l_array_extract_line_num(Idx)
53550          ,p_token_2                 => 'PRODUCT_NAME'
53551          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
53552          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
53553          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
53554          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
53555 
53556    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
53557       --
53558       -- following sets the accounting attributes needed to reverse
53559       -- accounting for a distributeion
53560       --
53561 
53562       --
53563       -- 5217187
53564       --
53565       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
53566       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
53567                                        g_array_event(l_event_id).array_value_num('header_index'));
53568       --
53569       --
53570 
53571       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
53572       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_15(Idx);
53573       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
53574       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_43(Idx);
53575       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
53576       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_17(Idx);
53577       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_CR_CCID';
53578       l_rec_rev_acct_attrs.array_num_value(5)  := TO_NUMBER(l_array_source_9(Idx));
53579       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_CR_ENTERED_AMT';
53580       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_26(Idx);
53581       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_CR_ENTERED_CURR';
53582       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_27(Idx);
53583       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_LEDGER_AMT';
53584       l_rec_rev_acct_attrs.array_num_value(8)  := l_array_source_28(Idx);
53585       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_CCID';
53586       l_rec_rev_acct_attrs.array_num_value(9)  := TO_NUMBER(l_array_source_9(Idx));
53587       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_DR_ENTERED_AMT';
53588       l_rec_rev_acct_attrs.array_num_value(10)  := l_array_source_26(Idx);
53589       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_DR_ENTERED_CURR';
53590       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_27(Idx);
53591       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_LEDGER_AMT';
53592       l_rec_rev_acct_attrs.array_num_value(12)  := l_array_source_28(Idx);
53593       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_OPTION';
53594       l_rec_rev_acct_attrs.array_char_value(13)  := l_array_source_45(Idx);
53595       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'REVERSED_DISTRIBUTION_ID1';
53596       l_rec_rev_acct_attrs.array_num_value(14)  := l_array_source_24(Idx);
53597       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_TYPE';
53598       l_rec_rev_acct_attrs.array_char_value(15)  := l_array_source_22(Idx);
53599       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'UPG_CR_ENC_TYPE_ID';
53600       l_rec_rev_acct_attrs.array_num_value(16)  := l_array_source_46(Idx);
53601       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'UPG_DR_ENC_TYPE_ID';
53602       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_46(Idx);
53603 
53604 
53605       xla_ae_lines_pkg.SetAcctReversalAttrs
53606          (p_event_id             => l_event_id
53607          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
53608          ,p_calculate_acctd_flag => l_calculate_acctd_flag
53609          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
53610    END IF;
53611 
53612    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
53613        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
53614 
53615 --
53616 AcctLineType_78 (
53617  p_application_id  => p_application_id
53618  ,p_event_id     => l_event_id
53619  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53620  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53621  ,p_actual_flag => l_actual_flag
53622  ,p_balance_type_code => l_balance_type_code
53623  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53624  
53625  , p_source_9 => l_array_source_9(Idx)
53626  , p_source_15 => l_array_source_15(Idx)
53627  , p_source_17 => l_array_source_17(Idx)
53628  , p_source_21 => l_array_source_21(Idx)
53629  , p_source_22 => l_array_source_22(Idx)
53630  , p_source_23 => l_array_source_23(Idx)
53631  , p_source_24 => l_array_source_24(Idx)
53632  , p_source_25 => l_array_source_25(Idx)
53633  , p_source_26 => l_array_source_26(Idx)
53634  , p_source_27 => l_array_source_27(Idx)
53635  , p_source_28 => l_array_source_28(Idx)
53636  , p_source_31 => l_array_source_31(Idx)
53637  , p_source_43 => l_array_source_43(Idx)
53638  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
53639  , p_source_45 => l_array_source_45(Idx)
53640  , p_source_46 => l_array_source_46(Idx)
53641  );
53642 If(l_balance_type_code = 'A') THEN
53643   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53644 END IF;
53645 
53646 --
53647 
53648 
53649 --
53650 AcctLineType_79 (
53651  p_application_id  => p_application_id
53652  ,p_event_id     => l_event_id
53653  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53654  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53655  ,p_actual_flag => l_actual_flag
53656  ,p_balance_type_code => l_balance_type_code
53657  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53658  
53659  , p_source_9 => l_array_source_9(Idx)
53660  , p_source_15 => l_array_source_15(Idx)
53661  , p_source_17 => l_array_source_17(Idx)
53662  , p_source_21 => l_array_source_21(Idx)
53663  , p_source_22 => l_array_source_22(Idx)
53664  , p_source_23 => l_array_source_23(Idx)
53665  , p_source_24 => l_array_source_24(Idx)
53666  , p_source_25 => l_array_source_25(Idx)
53667  , p_source_26 => l_array_source_26(Idx)
53668  , p_source_27 => l_array_source_27(Idx)
53669  , p_source_28 => l_array_source_28(Idx)
53670  , p_source_31 => l_array_source_31(Idx)
53671  , p_source_43 => l_array_source_43(Idx)
53672  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
53673  , p_source_45 => l_array_source_45(Idx)
53674  , p_source_46 => l_array_source_46(Idx)
53675  );
53676 If(l_balance_type_code = 'A') THEN
53677   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53678 END IF;
53679 
53680 --
53681 
53682 
53683 --
53684 AcctLineType_82 (
53685  p_application_id  => p_application_id
53686  ,p_event_id     => l_event_id
53687  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53688  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53689  ,p_actual_flag => l_actual_flag
53690  ,p_balance_type_code => l_balance_type_code
53691  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53692  
53693  , p_source_3 => l_array_source_3(Idx)
53694  , p_source_7 => l_array_source_7(Idx)
53695  , p_source_9 => l_array_source_9(Idx)
53696  , p_source_13 => l_array_source_13(Idx)
53697  , p_source_15 => l_array_source_15(Idx)
53698  , p_source_17 => l_array_source_17(Idx)
53699  , p_source_21 => l_array_source_21(Idx)
53700  , p_source_22 => l_array_source_22(Idx)
53701  , p_source_23 => l_array_source_23(Idx)
53702  , p_source_24 => l_array_source_24(Idx)
53703  , p_source_25 => l_array_source_25(Idx)
53704  , p_source_26 => l_array_source_26(Idx)
53705  , p_source_27 => l_array_source_27(Idx)
53706  , p_source_28 => l_array_source_28(Idx)
53707  , p_source_31 => l_array_source_31(Idx)
53708  , p_source_35 => l_array_source_35(Idx)
53709  , p_source_36 => l_array_source_36(Idx)
53710  , p_source_37 => l_array_source_37(Idx)
53711  , p_source_43 => l_array_source_43(Idx)
53712  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
53713  , p_source_45 => l_array_source_45(Idx)
53714  , p_source_46 => l_array_source_46(Idx)
53715  , p_source_47 => l_array_source_47(Idx)
53716  );
53717 If(l_balance_type_code = 'A') THEN
53718   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53719 END IF;
53720 
53721 --
53722 
53723 
53724 --
53725 AcctLineType_83 (
53726  p_application_id  => p_application_id
53727  ,p_event_id     => l_event_id
53728  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53729  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53730  ,p_actual_flag => l_actual_flag
53731  ,p_balance_type_code => l_balance_type_code
53732  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53733  
53734  , p_source_3 => l_array_source_3(Idx)
53735  , p_source_7 => l_array_source_7(Idx)
53736  , p_source_8 => l_array_source_8(Idx)
53737  , p_source_9 => l_array_source_9(Idx)
53738  , p_source_13 => l_array_source_13(Idx)
53739  , p_source_15 => l_array_source_15(Idx)
53740  , p_source_17 => l_array_source_17(Idx)
53741  , p_source_21 => l_array_source_21(Idx)
53742  , p_source_22 => l_array_source_22(Idx)
53743  , p_source_23 => l_array_source_23(Idx)
53744  , p_source_24 => l_array_source_24(Idx)
53745  , p_source_25 => l_array_source_25(Idx)
53746  , p_source_26 => l_array_source_26(Idx)
53747  , p_source_27 => l_array_source_27(Idx)
53748  , p_source_28 => l_array_source_28(Idx)
53749  , p_source_31 => l_array_source_31(Idx)
53750  , p_source_35 => l_array_source_35(Idx)
53751  , p_source_36 => l_array_source_36(Idx)
53752  , p_source_37 => l_array_source_37(Idx)
53753  , p_source_43 => l_array_source_43(Idx)
53754  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
53755  , p_source_45 => l_array_source_45(Idx)
53756  , p_source_46 => l_array_source_46(Idx)
53757  , p_source_47 => l_array_source_47(Idx)
53758  );
53759 If(l_balance_type_code = 'A') THEN
53760   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53761 END IF;
53762 
53763 --
53764 
53765 
53766 --
53767 AcctLineType_84 (
53768  p_application_id  => p_application_id
53769  ,p_event_id     => l_event_id
53770  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53771  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53772  ,p_actual_flag => l_actual_flag
53773  ,p_balance_type_code => l_balance_type_code
53774  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53775  
53776  , p_source_9 => l_array_source_9(Idx)
53777  , p_source_13 => l_array_source_13(Idx)
53778  , p_source_15 => l_array_source_15(Idx)
53779  , p_source_17 => l_array_source_17(Idx)
53780  , p_source_21 => l_array_source_21(Idx)
53781  , p_source_22 => l_array_source_22(Idx)
53782  , p_source_23 => l_array_source_23(Idx)
53783  , p_source_24 => l_array_source_24(Idx)
53784  , p_source_25 => l_array_source_25(Idx)
53785  , p_source_26 => l_array_source_26(Idx)
53786  , p_source_27 => l_array_source_27(Idx)
53787  , p_source_28 => l_array_source_28(Idx)
53788  , p_source_31 => l_array_source_31(Idx)
53789  , p_source_43 => l_array_source_43(Idx)
53790  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
53791  , p_source_45 => l_array_source_45(Idx)
53792  , p_source_46 => l_array_source_46(Idx)
53793  , p_source_47 => l_array_source_47(Idx)
53794  );
53795 If(l_balance_type_code = 'A') THEN
53796   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53797 END IF;
53798 
53799 --
53800 
53801 
53802 --
53803 AcctLineType_85 (
53804  p_application_id  => p_application_id
53805  ,p_event_id     => l_event_id
53806  ,p_calculate_acctd_flag => l_calculate_acctd_flag
53807  ,p_calculate_g_l_flag => l_calculate_g_l_flag
53808  ,p_actual_flag => l_actual_flag
53809  ,p_balance_type_code => l_balance_type_code
53810  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
53811  
53812  , p_source_9 => l_array_source_9(Idx)
53813  , p_source_13 => l_array_source_13(Idx)
53814  , p_source_15 => l_array_source_15(Idx)
53815  , p_source_17 => l_array_source_17(Idx)
53816  , p_source_21 => l_array_source_21(Idx)
53817  , p_source_22 => l_array_source_22(Idx)
53818  , p_source_23 => l_array_source_23(Idx)
53819  , p_source_24 => l_array_source_24(Idx)
53820  , p_source_25 => l_array_source_25(Idx)
53821  , p_source_26 => l_array_source_26(Idx)
53822  , p_source_27 => l_array_source_27(Idx)
53823  , p_source_28 => l_array_source_28(Idx)
53824  , p_source_31 => l_array_source_31(Idx)
53825  , p_source_43 => l_array_source_43(Idx)
53826  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
53827  , p_source_45 => l_array_source_45(Idx)
53828  , p_source_46 => l_array_source_46(Idx)
53829  , p_source_47 => l_array_source_47(Idx)
53830  );
53831 If(l_balance_type_code = 'A') THEN
53832   l_actual_gain_loss_ref := l_gain_or_loss_ref;
53833 END IF;
53834 
53835 --
53836 
53837       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
53838       -- or secondary ledger that has different currency with primary
53839       -- or alc that is calculated by sla
53840       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
53841             (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'))
53842 
53843 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
53844 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
53845           AND (l_actual_flag = 'A')) THEN
53846         XLA_AE_LINES_PKG.CreateGainOrLossLines(
53847           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
53848          ,p_application_id   => p_application_id
53849          ,p_amb_context_code => 'DEFAULT'
53850          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
53851          ,p_event_class_code => C_EVENT_CLASS_CODE
53852          ,p_event_type_code  => C_EVENT_TYPE_CODE
53853          
53854          ,p_gain_ccid        => -1
53855          ,p_loss_ccid        => -1
53856 
53857          ,p_actual_flag      => l_actual_flag
53858          ,p_enc_flag         => null
53859          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
53860          ,p_enc_g_l_ref      => null
53861          );
53862       END IF;
53863    END IF;
53864 END IF;
53865 
53866    ELSE
53867       --
53868       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
53869       --
53870       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53871          trace
53872             (p_msg      => 'Trancaction revesal option is Y'
53873             ,p_level    => C_LEVEL_STATEMENT
53874             ,p_module   => l_log_module);
53875       END IF;
53876    END IF;
53877 
53878 END LOOP;
53879 l_result := XLA_AE_LINES_PKG.InsertLines ;
53880 end loop;
53881 close line_cur;
53882 
53883 
53884 --
53885 -- insert headers into xla_ae_headers_gt table
53886 --
53887 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
53888 
53889 -- insert into errors table here.
53890 
53891 END LOOP;
53892 
53893 --
53894 -- 4865292
53895 --
53896 -- Compare g_hdr_extract_count with event count in
53897 -- CreateHeadersAndLines.
53898 --
53899 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
53900 
53901 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
53902    trace (p_msg     => '# rows extracted from header extract objects '
53903                     || ' (running total): '
53904                     || g_hdr_extract_count
53905          ,p_level   => C_LEVEL_STATEMENT
53906          ,p_module  => l_log_module);
53907 END IF;
53908 
53909 CLOSE header_cur;
53910 --
53911 
53912 --
53913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53914    trace
53915       (p_msg      => 'END of EventClass_88'
53916       ,p_level    => C_LEVEL_PROCEDURE
53917       ,p_module   => l_log_module);
53918 END IF;
53919 --
53920 RETURN l_result;
53921 EXCEPTION
53922 WHEN xla_exceptions_pkg.application_exception THEN
53923    
53924 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
53925 
53926    
53927 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
53928 
53929    RAISE;
53930 WHEN OTHERS THEN
53931    xla_exceptions_pkg.raise_message
53932       (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.EventClass_88');
53933 END EventClass_88;
53934 --
53935 
53936 --
53937 --+============================================+
53938 --|                                            |
53939 --|  PRIVATE FUNCTION                          |
53940 --|                                            |
53941 --+============================================+
53942 --
53943 FUNCTION CreateHeadersAndLines
53944        (p_application_id         IN NUMBER
53945        ,p_base_ledger_id         IN NUMBER
53946        ,p_target_ledger_id       IN NUMBER
53947        ,p_pad_start_date         IN DATE
53948        ,p_pad_end_date           IN DATE
53949        ,p_primary_ledger_id      IN NUMBER)
53950 RETURN BOOLEAN IS
53951 l_created                   BOOLEAN:=FALSE;
53952 l_event_id                  NUMBER;
53953 l_event_date                DATE;
53954 l_language                  VARCHAR2(30);
53955 l_currency_code             VARCHAR2(30);
53956 l_sla_ledger_id             NUMBER;
53957 l_log_module                VARCHAR2(240);
53958 
53959 BEGIN
53960 --
53961 IF g_log_enabled THEN
53962    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
53963 END IF;
53964 --
53965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53966    trace
53967       (p_msg      => 'BEGIN of CreateHeadersAndLines'
53968       ,p_level    => C_LEVEL_PROCEDURE
53969       ,p_module   => l_log_module);
53970 END IF;
53971 
53972 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
53973 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
53974 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
53975 
53976 --
53977 -- initialize array of lines with NULL
53978 --
53979 xla_ae_lines_pkg.SetNullLine;
53980 
53981 --
53982 -- initialize header extract count -- Bug 4865292
53983 --
53984 g_hdr_extract_count:= 0;
53985 
53986 
53987 l_created := EventClass_86(
53988    p_application_id         => p_application_id
53989  , p_base_ledger_id         => p_base_ledger_id
53990  , p_target_ledger_id       => p_target_ledger_id
53991  , p_language               => l_language
53992  , p_currency_code          => l_currency_code
53993  , p_sla_ledger_id          => l_sla_ledger_id
53994  , p_pad_start_date         => p_pad_start_date
53995  , p_pad_end_date           => p_pad_end_date
53996  , p_primary_ledger_id      => p_primary_ledger_id
53997 );
53998 
53999 
54000 
54001      IF ( g_diagnostics_mode ='Y' ) THEN
54002 
54003          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54004           trace
54005               (p_msg      => 'CALL Transaction Objects Diagnostics'
54006               ,p_level    => C_LEVEL_STATEMENT
54007               ,p_module   => l_log_module);
54008 
54009          END IF;
54010 
54011          insert_sources_86(
54012                           p_target_ledger_id => p_target_ledger_id
54013                         , p_language         => l_language
54014                         , p_sla_ledger_id    => l_sla_ledger_id
54015                         , p_pad_start_date   => p_pad_start_date
54016                         , p_pad_end_date     => p_pad_end_date
54017                           );
54018 
54019      END IF;
54020 
54021 l_created := EventClass_87(
54022    p_application_id         => p_application_id
54023  , p_base_ledger_id         => p_base_ledger_id
54024  , p_target_ledger_id       => p_target_ledger_id
54025  , p_language               => l_language
54026  , p_currency_code          => l_currency_code
54027  , p_sla_ledger_id          => l_sla_ledger_id
54028  , p_pad_start_date         => p_pad_start_date
54029  , p_pad_end_date           => p_pad_end_date
54030  , p_primary_ledger_id      => p_primary_ledger_id
54031 );
54032 
54033 
54034 
54035      IF ( g_diagnostics_mode ='Y' ) THEN
54036 
54037          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54038           trace
54039               (p_msg      => 'CALL Transaction Objects Diagnostics'
54040               ,p_level    => C_LEVEL_STATEMENT
54041               ,p_module   => l_log_module);
54042 
54043          END IF;
54044 
54045          insert_sources_87(
54046                           p_target_ledger_id => p_target_ledger_id
54047                         , p_language         => l_language
54048                         , p_sla_ledger_id    => l_sla_ledger_id
54049                         , p_pad_start_date   => p_pad_start_date
54050                         , p_pad_end_date     => p_pad_end_date
54051                           );
54052 
54053      END IF;
54054 
54055 l_created := EventClass_88(
54056    p_application_id         => p_application_id
54057  , p_base_ledger_id         => p_base_ledger_id
54058  , p_target_ledger_id       => p_target_ledger_id
54059  , p_language               => l_language
54060  , p_currency_code          => l_currency_code
54061  , p_sla_ledger_id          => l_sla_ledger_id
54062  , p_pad_start_date         => p_pad_start_date
54063  , p_pad_end_date           => p_pad_end_date
54064  , p_primary_ledger_id      => p_primary_ledger_id
54065 );
54066 
54067 
54068 
54069      IF ( g_diagnostics_mode ='Y' ) THEN
54070 
54071          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54072           trace
54073               (p_msg      => 'CALL Transaction Objects Diagnostics'
54074               ,p_level    => C_LEVEL_STATEMENT
54075               ,p_module   => l_log_module);
54076 
54077          END IF;
54078 
54079          insert_sources_88(
54080                           p_target_ledger_id => p_target_ledger_id
54081                         , p_language         => l_language
54082                         , p_sla_ledger_id    => l_sla_ledger_id
54083                         , p_pad_start_date   => p_pad_start_date
54084                         , p_pad_end_date     => p_pad_end_date
54085                           );
54086 
54087      END IF;
54088 
54089 
54090  --
54091  -- Bug 4865292
54092  -- When the number of events and that of header extract do not match,
54093  -- set the no header extract flag to indicate there are some issues
54094  -- in header extract.
54095  --
54096  -- Event count context is set in xla_accounting_pkg.unit_processor.
54097  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
54098  -- to report it as a general error.
54099  --
54100  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
54101  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
54102 
54103      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54104         trace
54105           (p_msg      => '# of extracted headers and events does not match'
54106           ,p_level    => C_LEVEL_STATEMENT
54107           ,p_module   => l_log_module);
54108 
54109         trace
54110           (p_msg      => '# of extracted headers: '
54111                          ||g_hdr_extract_count
54112           ,p_level    => C_LEVEL_STATEMENT
54113           ,p_module   => l_log_module);
54114 
54115         trace
54116           (p_msg      => '# of events in xla_events_gt: '
54117                          ||xla_context_pkg.get_event_count_context
54118           ,p_level    => C_LEVEL_STATEMENT
54119           ,p_module   => l_log_module);
54120 
54121         trace
54122           (p_msg      => 'Event No Header Extract Context: '
54123                          ||xla_context_pkg.get_event_nohdr_context
54124           ,p_level    => C_LEVEL_STATEMENT
54125           ,p_module   => l_log_module);
54126 
54127      END IF;
54128 
54129 
54130      xla_context_pkg.set_event_nohdr_context
54131        (p_nohdr_extract_flag => 'Y'
54132        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
54133 
54134      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54135         trace
54136           (p_msg      => 'No Header Extract Flag is set to Y'
54137           ,p_level    => C_LEVEL_STATEMENT
54138           ,p_module   => l_log_module);
54139      END IF;
54140 
54141  END IF;
54142 
54143 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54144    trace
54145       (p_msg      => 'END of CreateHeadersAndLines'
54146       ,p_level    => C_LEVEL_PROCEDURE
54147       ,p_module   => l_log_module);
54148 END IF;
54149 
54150 RETURN l_created;
54151 EXCEPTION
54152 WHEN xla_exceptions_pkg.application_exception THEN
54153    RAISE;
54154 WHEN OTHERS THEN
54155    xla_exceptions_pkg.raise_message
54156       (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.CreateHeadersAndLines');
54157 END CreateHeadersAndLines;
54158 --
54159 --
54160 
54161 --
54162 --+============================================+
54163 --|                                            |
54164 --|  PUBLIC FUNCTION                           |
54165 --|                                            |
54166 --+============================================+
54167 --
54168 FUNCTION CreateJournalEntries
54169        (p_application_id         IN NUMBER
54170        ,p_base_ledger_id         IN NUMBER
54171        ,p_pad_start_date         IN DATE
54172        ,p_pad_end_date           IN DATE
54173        ,p_primary_ledger_id      IN NUMBER)
54174 RETURN NUMBER IS
54175 l_log_module                   VARCHAR2(240);
54176 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
54177 l_temp_result                  BOOLEAN;
54178 l_result                       NUMBER;
54179 BEGIN
54180 --
54181 IF g_log_enabled THEN
54182    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
54183 END IF;
54184 --
54185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54186    trace
54187       (p_msg      => 'BEGIN of CreateJournalEntries'||
54188                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
54189       ,p_level    => C_LEVEL_PROCEDURE
54190       ,p_module   => l_log_module);
54191 
54192 END IF;
54193 
54194 --
54195 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
54196 
54197 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
54198    trace
54199       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
54200       ,p_level    => C_LEVEL_STATEMENT
54201       ,p_module   => l_log_module);
54202 END IF;
54203 --
54204 xla_ae_journal_entry_pkg.SetProductAcctDefinition
54205    (p_product_rule_code      => 'FV_PURCHASING_AAD'
54206    ,p_product_rule_type_code => 'S'
54207    ,p_product_rule_version   => ''
54208    ,p_product_rule_name      => 'Federal Purchasing Application Accounting Definition'
54209    ,p_amb_context_code       => 'DEFAULT'
54210    );
54211 
54212 l_array_ledgers :=
54213    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
54214       (p_base_ledger_id  => p_base_ledger_id);
54215 
54216 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
54217    l_temp_result :=
54218       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
54219          (p_application_id           => p_application_id
54220          ,p_base_ledger_id           => p_base_ledger_id
54221          ,p_target_ledger_id         => l_array_ledgers(Idx)
54222          ,p_primary_ledger_id        => p_primary_ledger_id
54223          ,p_pad_start_date           => p_pad_start_date
54224          ,p_pad_end_date             => p_pad_end_date);
54225 
54226    l_temp_result :=
54227       l_temp_result AND
54228       CreateHeadersAndLines
54229          (p_application_id             => p_application_id
54230          ,p_base_ledger_id             => p_base_ledger_id
54231          ,p_target_ledger_id           => l_array_ledgers(Idx)
54232          ,p_pad_start_date             => p_pad_start_date
54233          ,p_pad_end_date               => p_pad_end_date
54234          ,p_primary_ledger_id          => p_primary_ledger_id
54235          );
54236 END LOOP;
54237 
54238 
54239 IF (g_diagnostics_mode = 'Y' AND
54240     C_LEVEL_UNEXPECTED >= g_log_level AND
54241     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
54242 
54243    xla_accounting_dump_pkg.acctg_event_extract_log(
54244     p_application_id  => p_application_id
54245     ,p_request_id     => xla_environment_pkg.g_Req_Id
54246    );
54247 
54248 END IF;
54249 
54250 CASE l_temp_result
54251   WHEN TRUE THEN l_result := 0;
54252   ELSE l_result := 2;
54253 END CASE;
54254 
54255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54256    trace
54257       (p_msg      => 'return value. = '||TO_CHAR(l_result)
54258       ,p_level    => C_LEVEL_PROCEDURE
54259       ,p_module   => l_log_module);
54260    trace
54261       (p_msg      => 'END of CreateJournalEntries '
54262       ,p_level    => C_LEVEL_PROCEDURE
54263       ,p_module   => l_log_module);
54264 END IF;
54265 
54266 RETURN l_result;
54267 EXCEPTION
54268 WHEN xla_exceptions_pkg.application_exception THEN
54269    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54270    trace
54271       (p_msg      => 'ERROR. = '||sqlerrm
54272       ,p_level    => C_LEVEL_PROCEDURE
54273       ,p_module   => l_log_module);
54274    END IF;
54275    RAISE;
54276 WHEN OTHERS THEN
54277    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54278    trace
54279       (p_msg      => 'ERROR. = '||sqlerrm
54280       ,p_level    => C_LEVEL_PROCEDURE
54281       ,p_module   => l_log_module);
54282    END IF;
54283    xla_exceptions_pkg.raise_message
54284       (p_location => 'XLA_00201_AAD_S_000004_BC_PKG.CreateJournalEntries');
54285 END CreateJournalEntries;
54286 --
54287 --=============================================================================
54288 --
54289 --
54290 --
54291 --
54292 --
54293 --
54294 --
54295 --
54296 --
54297 --
54298 --
54299 --
54300 --
54301 --
54302 --
54303 --
54304 --
54305 --
54306 --
54307 --
54308 --
54309 --
54310 --=============================================================================
54311 --=============================================================================
54312 --          *********** Initialization routine **********
54313 --=============================================================================
54314 
54315 BEGIN
54316    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
54317    g_log_enabled    := fnd_log.test
54318                           (log_level  => g_log_level
54319                           ,module     => C_DEFAULT_MODULE);
54320 
54321    IF NOT g_log_enabled  THEN
54322       g_log_level := C_LEVEL_LOG_DISABLED;
54323    END IF;
54324 --
54325 END XLA_00201_AAD_S_000004_BC_PKG;
54326 --